高精度加法 P1601 A+B Problem(高精) 读入数据时,四种运算均从个位数开始push_back,输出时从vector最高位开始。需要取尾0:减(高位可能被减为0)、乘(乘以0后全为0)、除(得到的结果高位可能为0) vector<int> add(vector<int> a, vector<int> b) { vector<int> c; int t = 0; for(
using namespace std; //二分模板 class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> ans={-1,-1}; int n = nums.size(); if(n==0) return ans; //闭区间 int l
想出来一个(目前)不知真伪的写法 从1到n遍历,遇到当前容量(j)下价值(w)更大的方案就把path[j]清空,把path[j-v]转移过来,加上i 遇到当前容量下价值相等的方案就比较path[j-v] + i和path[j]的字典序 题解是从n到1遍历,用二维数组f[i][j]存状态 最后从1到n遍历,判断当前点(i)是否能从i+1
------------恢复内容开始------------ 介绍 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 顺序序列 顺序容器中的元素按照严格的线性顺序排序。可
第一题 题目链接:https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 个人题解:DFS 代码: class Solution { public: vector<int> res; vector<int> preorder(Node* root) { dfs(root); return res; } void dfs(Node* root) {
------------恢复内容开始------------ 有关Class类 不要用private,否则没办法以X.XX的形式引用 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; class T_counter { public: T_counter(int x)
看完感觉跟46-全排列很像,仍旧是回溯法,但是怎么做到四选二、四选三呢 官方题解 题解1,迭代枚举 利用二进制位来实现挑选的思路是没有想到的 class Solution { public: // 为什么变量声明这里要写到外面来 vector<int> t;// 临时数组 vector<vector<int>> subsets(vec
咕咕咕咕咕。 F - Teleporter Setting 题意 给一个有\(n\)个节点\(m\)条边的无向图,边集中有一部分边只确定了一端,记这部分边的集合为\(S\)。 对于\(i = 1, 2, \dots, n\),问当\(S\)中的边的不确定的那一端均为\(i\)时,从点\(1\)到点\(n\)的最短路长度。 其中,\(2 \le n \le 3 \times
假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n x 3
C++容器vector<>相关的基础操作 在容器中存入与取出操作: 存入(尾端增加元素):push_back(); 取出(尾端删除元素):pop_back(); vector<int> rect_x; int x; rect_x.push_back(x); rect_x.pop_back(x); 应用:在容器中找到:min_element和max_element的位置和大小。 #include <i
复杂度 \(O(n^2)\),可以处理多点共线、共面的情况 手动处理的共线共面,扰动点的话精度稍微要求高一些就寄了,当然可以扰动完再 random_shuffle( 这里有比较牛逼的数据:https://www.luogu.com.cn/problem/P2287 inline int sign(const double &a){return a>EPS?1:(a<-EPS?-1:0);} struct
题意 给n个区间, 将重叠的区间进行合并 解法 排序 代码 vector<vector<int>> merge(vector<vector<int>>& intervals) { int N = intervals.size(); if (N == 0) return {}; sort(intervals.begin(), intervals.end()); vector<vector<int>&g
template basic binary search int bsearch_1 (int l, int r) { int mid = l + r >> 1; while (l < r) { if (check (mid)) { r = mid; } else { l = mid + 1; } } return l; } int bsearch_
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 输入:head = [1,3,2] 输出:[2,3,1] 题解 这道题主体思想是访问链表中的元素并设法倒序输出结果。 方法一:递归法 利用递归的方法先递推至链表末端,在回溯时依次将节点值加入列表,即可实现链表值的倒序输
dp[i]表示要让i向上级发请愿书,最少需要多少个工人递交请愿书,因为要取前T%最小的,所以还要将i的子节点排序(这里用vector实现),取前c个最小的作为dp[i]的值。 这里用dfs可以省去dp数组,用返回值的方式实现。 1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #include
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 1. 辅助空间暴力法 将两数组合并,分奇偶取中位数 class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m =
5365: C++实验:STL之vector4 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 562 测试通过:395 描述 将一个n行m列矩阵元素输入存储后并输出。 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++ int main()
5363: C++实验:STL之vector2 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 685 测试通过:451 描述 依次输入n个整数,每次输入时检查该值是否已经出现在vector中,如果存在则不插入,否则将其插入到开头位置。 部分代码已经给出,请补充完
5364: C++实验:STL之vector3 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 989 测试通过:424 描述 将n个数字输入到vector里,并对其进行从大到小排序并输出。 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++
5362: C++实验:STL之vector 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 825 测试通过:549 描述 将n个数字输入到vector里,随后输出。 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++ int main() { ve
题意: 给定正边权无向图和起点,求边权和最小的最短路径树 思路: 想象跑一遍 dijkstra 后,对于某边 \(u\to v\) 若 \(d_v \neq d_u+w\)(\(w\) 表示该边的边权),那么这条边不可能在最短路径树上,把它删除 然后用剩下的边做一棵最小生成树就是答案,即每次选择最小的边连接两个连通块。 怎么实
#include<iostream> #include<vector> #include<math.h> std::vector<double> Polyval(std::vector<double> coeffs, std::vector<double> values) { std::vector<double> results; for (auto const &val:values)
''' include include<assert.h> include include int main() { int iter = 10000; std::vector coeffs = { 4, 2, -2, 5, 0, 15}; std::vector valuesToEvaluate = {0, 2, -4, 8, 15, 1.25, 512 ,-5.3 ,12.215, 153, 23, -11}; auto start = std::chrono
Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties) 以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection),我们
Description 火星人在出生后,神经网络可以看作是一个由若干无向树 \(\{T_1(V_1, E_1), T_2(V_2, E_2),\ldots T_m(V_m, E_m)\}\) 构成的森林。随着火星人年龄的增长,神经连接的数量也不断增长。初始时,神经网络中生长的连接 \(E^\ast = \varnothing\)。神经网络根据如下规则生长: 如