IT民工
加油!
摘要: 第一次做这种类型的并查集。re数组代表所在的类,因为只能从当前情况来判断两个人是不是在一个犯罪集团。所以D操作时保证两个人的re不同。两个有相同的根结点,代表情况已知,否则为情况未知。/*Accepted 948K 360MS C++ 1190B 2012-07-27 17:16:34*/#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 100111;int p[MAXN], re[MAXN];int n, m;char ans[3][20] = {"In diff 阅读全文
posted @ 2012-07-27 17:26 找回失去的 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 先将字母转换成数字,然后建图。建完图用堆优化的prim,写这道题花了不少时间,居然写成了dij,搞混了。/*Accepted 180K 0MS C++ 1594B 2012-07-27 15:57:47*/#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>#include<iostream>using namespace std;const int MAXN = 1 << 5;const int inf = 0x3f3f3f3f;bool vi 阅读全文
posted @ 2012-07-27 16:02 找回失去的 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 一道简单的搜索剪枝,居然写了一个小时,首先判断棍子长的和是否能被四整除以及最长的棍子是不是大于边长(和的四分之一)。将棍长按照从长到短排序,记录搜索的边,构成三条边就是构成了一个正方形。/*Accepted 164K 235MS C++ 1396B 2012-07-27 14:30:28*/#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int MAXN = 1 << 7;int m, a[MA 阅读全文
posted @ 2012-07-27 14:35 找回失去的 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 因为有花费的限制,所有存最短路的数组改为d[i][j],代表走到i点还剩余j的钱的最短路的值,relax时做一个剪枝,第一个条件是剩余钱数大于通过当前边所需的钱,第二,即将更新的值要小于当前到达N点的最短路的值。在更新最短值的时候,走过一条边要将钱数也更新,即剩余money减去过路费。/*Accepted 1936K 188MS C++ 1701B 2012-07-27 12:00:50*/#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>#include<io 阅读全文
posted @ 2012-07-27 12:13 找回失去的 阅读(173) 评论(0) 推荐(0) 编辑
摘要: SPFA判断是否存在最长路,只要存在负权环就存在最长路,两者是等价的。将N中货币看成N个点,从A点到B的最大可能值为(A点的当前值-AB的手续费)* AB的汇率。/*Accepted 428K 16MS C++ 1452B 2012-07-27 10:21:22*/#include<cstdio>#include<cstdlib>#include<cstring>#include<queue>#include<algorithm>#define cal(i, j) ( (val[i] - c[i][j]) * r[i][j])usin 阅读全文
posted @ 2012-07-27 10:33 找回失去的 阅读(217) 评论(0) 推荐(0) 编辑