hdu1412.集合并集
#include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; int main(){ fstream infile("in.txt"); int n,m; infile>...
#include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; int main(){ fstream infile("in.txt"); int n,m; infile>...
Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。 //计算链表长度的函数 int ...
Description Solution #include<iostream> #include<string> #include<sstream> using namespace std; //链表结点node定义省略 int main(){ node* rear=new node();//题目要求只能用rear尾指针 r...
if(vec[i]==stk.top())为什么这一句报错了? 答:你遇到的报错是因为 stk.top() 方法的名字和结构体中的 top 成员变量重名了。在你的代码中,top 既是一个变量,也定义成了一个方法(取栈顶元素),这会引发命名冲突,编译器无法正确区分你是想调用变量 top 还是方法 top()。解决方法是把top()方法更名为getop()。 vscode的蓝色方块代表数...
ps:这题的教训是,做题之前一定要[在纸上把思路写下来,尤其选好数据结构,否则就是半天无用功!!!] 这里记录一些vector的细节:插入元素的方法、vector双重数组,以及[引用传参] Q1:vector插入元素 void moveOnto(vector<vector<int>>vec,int a,int b){ for(int i=0;i<ve...
遍历数组a中的每一个元素a[i], 对于每一个i,找到j使得双指针[j, i]维护的是以a[i]结尾的最长连续不重复子序列,长度为i - j + 1, 将这一长度与r的较大者更新给r。 对于每一个i,如何确定j的位置:由于[j, i - 1]是前一步得到的最长连续不重复子序列,所以如果[j, i]中有重复元素,一定是a[i],因此右移j直到a[i]不重复为止(由于[j, i - 1]已经...
题目描述 求A[i] + B[j] == k 的 (i , j) 对 样例 输入 4 5 6 1 2 4 7 3 4 6 8 9 输出 1 1 (双指针) $O(n)$ i从 0开始 从前往后遍历 j从 m - 1开始 从后向前遍历 和纯暴力的$O(n^2)$ 算法的区别就在于 j指针不会回退 C++ 代码 #include <iostream>...
void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] < x); ...
void merge_sort(int a[], int l, int r){ //递归结束条件 if(l>=r){return;} int mid=(l+r)>>1;//取中间元素为划分界限 int i=l; int j=mid+1; //递归调用 merge_sort(a,l,mid); merge_sort(a,mid+1,...
题设 假定有一个无限长的数轴,数轴上每个坐标上的数都是 00。 现在,我们首先进行 nn 次操作,每次操作将某一位置 xx 上的数加 cc。 接下来,进行 mm 次询问,每个询问包含两个整数 ll 和 rr,你需要求出在区间 [l,r][l,r] 之间的所有数的和。 题解 int n, m; int a[N];//存储坐标插入的值 int s[N];//存储数组a的前缀...