摘要:
#include#include#include#includeusing namespace std;const int maxn = 100000 + 10;char s[maxn];int main(){ long long int n, m, k; while (~scanf("... 阅读全文
摘要:
简单的并查集应用。#include#include#include#includeusing namespace std;const int maxn = 100000 + 10;int ll[maxn], rr[maxn];int f1(int x){ if (x != ll[x]) ll[... 阅读全文
摘要:
根据一颗二叉树的先序遍历结果和中序遍历结果确定后序遍历结果。先递归建树,后DFS。代码写了详细的注释~~~~至今还不会用指针写数据结构。。只会用结构体模拟。。。#include#include#includeusing namespace std;const int maxn = 1111;stru... 阅读全文
摘要:
用栈来进行括号配对,配对成功的位置都标号为1。最后在扫一遍flag数组,即可得到最多有几个1连在一起了。#include#include#includeusing namespace std;const int maxn= 1000010;char s[maxn];char stack[maxn];... 阅读全文
摘要:
先建立一颗二叉搜索树,然后先序遍历一下,就可以出答案了。我用了比较奇葩的写法。。。二叉搜索树结构体模拟了一下。先序遍历用的DFS。。。。。。#include#includestruct abc{ int left; int right; int date;}node[100010]... 阅读全文
摘要:
简单的二叉搜索树建树过程#include#includeint tree1[1500], tree2[1500];char s[1000], k[1000];void build1(){ int i; tree1[1] = s[0] - '0'; int y = strlen(s)... 阅读全文
摘要:
#include#include#includeint flag[100005];int a[100005];int main(){ int sb; scanf("%d", &sb); int u; for (u = 1; u = maxn) maxn = a[i]; ... 阅读全文
摘要:
拓扑排序。每次找到入度为0的点存下来。一次找完后,对这些点计算费用。#include#include#include#include#includeusing namespace std;vectorabc[10005];int rudu[10005];int linshi[10005];int m... 阅读全文
摘要:
像拓扑排序那样先搞好。然后只要判断一下这张图中入度为0的节点有几个,如果有1个就输出yes。0个或者1个以上的全部输出no。#include#include#include#include#include#include#includeusing namespace std;int rudu[200... 阅读全文
摘要:
简单的拓扑排序。#include#include#include#include#includeusing namespace std;int rudu[105];vectorabc[105];int main(){ int n, m, i, x, y, j, k; while (~sc... 阅读全文
摘要:
简单的拓扑排序,每次都找到入度为0的节点输出,这个节点出发的连到的节点入度都减1。第一次写拓扑排序,还需改进。#include#include#include#include#includeusing namespace std;int rudu[505];vectorabc[505];int ma... 阅读全文
摘要:
二进制的状态压缩。比如A集合里面有{1,5,7}那么就表示为1010001。B集合有{3,4},二进制表示1100。A|B=1011101。按照这样的思路 可以用01背包 把所有的组合全部求出来。#include#include#include#includeusing namespace std;... 阅读全文
摘要:
二进制状态压缩+BFS。对于每一个点记录所有钥匙状态下最少的时间。如果这个点这个钥匙状态没有走过或者走过了但是时间花的少了,那么就走过去。#include#include#include#includeusing namespace std;const int maxn = 22;int sx, s... 阅读全文
摘要:
求用这些字母的下一个排列是什么。直接使用C++ STL库里面的next_permutation#include#include#includeusing namespace std;int main(){ char s[1000]; while (~scanf("%s", s)) ... 阅读全文
摘要:
此题写起来有点烦躁,但思路并不难。枚举一下丢1,2,3,4,5张的所有情况,就可以出答案了。DFS。#includechar s1[6][3], s2[6][3];//输入int hand[6], deck[6];//输入点数的转换成数字int flag[6];//标记这张牌用不用 1表示用int ... 阅读全文
摘要:
只要用哪几列就可以使P行都不同。暴力DFS就可以了。#include#includeint n, p;//n列 p行int map[105][20];int flaglie[20];char s[105][20];int sum;void sou(int ans){ int i, c = 0,... 阅读全文
摘要:
直接暴力枚举即可#includeint main(){ int n, i, j, k; int x[1000], y[1000]; while (~scanf("%d", &n)) { if (n == 0) break; int sum1 = 0... 阅读全文