04 2015 档案
摘要:BFS..第一次使用C++ STL的队列来写广搜。#include#include#include#include#includeusing namespace std;const int maxn = 222;struct Point{ int time, x, y; };queue Q;char...
阅读全文
摘要:简单的Havel-Hakimi定理(建图)的应用。#include#include#include#includeusing namespace std;const int maxn = 15;int ee[maxn][maxn];struct abc{ int f, node; }dt[maxn]...
阅读全文
摘要:BFS注意字典序的问题。WA了好多发。#include#include#include#include#includeusing namespace std;const int maxn = 70;int n, cost[maxn][maxn],bb[maxn], ji[maxn];struct a...
阅读全文
摘要:BFS.....#include#include#include#include#includeusing namespace std;const int maxn = 1111;vectorabc[maxn];int ji[maxn], tt[maxn][maxn], yy[maxn];struc...
阅读全文
摘要:写了一下午的dijkstra。突然发现我写的根本不是dijkstra。。。。是没优化过的BFS.......
阅读全文
摘要:SPFA#include#include#include#include#includeusing namespace std;const int maxn = 222;int k[maxn], ji[maxn];vector abc[maxn];struct aaa{int node, tot;}...
阅读全文
摘要:SPFA#include#include#include#include#includeusing namespace std;const int maxn = 1111;int tt[maxn][maxn], ji[maxn], yy[maxn];vectorabc[maxn];struct qw...
阅读全文
摘要:SPFA#include#include#include#include#includeusing namespace std;const int maxn = 2222;vectorabc[maxn];int s[maxn][maxn];int js[maxn];struct aaa{ in...
阅读全文
摘要:SPFA#include#include#include#include#includeusing namespace std;const int maxn = 2222;vectorabc[maxn];int s[maxn][maxn];int js[maxn];struct aaa{ in...
阅读全文
摘要:最小生成树,我用的是并查集+贪心的写法。#include#include#include#includeusing namespace std;const int maxn = 111;int c[maxn][maxn];int father[maxn];int flag[maxn];struct ...
阅读全文
摘要:简单的模拟题,类似于高精度加法运算。理解题意即可。#include#include#include#includeusing namespace std;const int maxn = 111;char s[maxn];char ji[maxn];int gg[maxn];void RevStr(...
阅读全文
摘要:水题,找误差范围之内9最多的时间,如果有多个,选择误差最小的一个,如果还有多个,选择字典序最小的一个。同一个时间可以有不同的表示方法,例如60:15也可以表示为59:75。#include#include#include#includeusing namespace std;int main(){ ...
阅读全文
摘要:#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...
阅读全文