2012年9月3日

最短路SPFA

摘要: #include <iostream>#include <queue>using namespace std ;const int M = 1000 + 10 ;const int INF = 0x3ffffff;int dis[M]; //dis[i],点i到源点的最短路径int map[M][M]; int used[M]; //used[i],标记点i是否在队列中int SPFA(int start , int end ,int n) //起点,终点,总点数编号为[1,n]{ dis[start] = 0; //初始化d... 阅读全文

posted @ 2012-09-03 19:06 [S*I]SImMon_WCG______* 阅读(180) 评论(0) 推荐(0) 编辑

背包问题的初始化问题

摘要: 对于背包问题,有两种初始化问题。。。。一种是恰好装满,另一种是实际上可以不装满,其中还分概率(乘)与非概率(加)其实不管是哪种,记住一点,我们初始化是未放物品时符合条件的最优解。。。。。例如:1~恰好装满:f[0] = 0没放物品时价值是0,,,f[1....]不符合条件(因为要恰好装满),这些都是没装满的那这些应该赋什么值呢?应该赋最不优的解来保证一定更新它。。。。。求最大:(求最大的时候最不优就是最小)概率(乘)f[1....] = 0(乘中0最小) 非概率(加)f[1...] = -INF(加中-INF最小)求最小::(求最小的时候最不优就是最大)概率(乘)f[1....] = 1(乘中 阅读全文

posted @ 2012-09-03 17:05 [S*I]SImMon_WCG______* 阅读(456) 评论(0) 推荐(0) 编辑

HDU 4006 The kth great number(优先队列)

摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4006题意:输入n,k,然后共有n次操作,保证先写出k个数,然后每次2种操作, I a 表示写出数字a Q表示输出第k大的数。。。。因为已经保证了先输入k个数,所以用优先队列,小优先,所以队头就是第k大的数,然后操作的时候,如果写出来的数小于等于队头就不管,因为前k大的数才有用,如果比队头大就队头出队。。该数进队代码:#include <iostream>#include <queue>using namespace std;int main(){ int n, k; while 阅读全文

posted @ 2012-09-03 09:52 [S*I]SImMon_WCG______* 阅读(339) 评论(2) 推荐(0) 编辑

HDU 2473 Junk-Mail Filter(并查集)

摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2473题意:有0到n-1个数,M a b 表示a和b合并,S a表示删除a,删除以后a变成独立的集合。。。最后问共有几个集合。。。。开始做的时候是真的按步就搬地把a删除,然后把他儿子和他老爸都合起来。。。结果超时。。。。还有吧本来是int 型的a,b写成了 char型导致一直溢出,找了很久才找到。。。这里用了代理index[i]表示i的代理是index[i],然后以后操作的时候每个人干活只找代理干,然后删除的时候直接换个新代理(这个代理不能和别人的代理冲突,开始的时候是独立的集合),然后他原来的代理事实 阅读全文

posted @ 2012-09-03 09:21 [S*I]SImMon_WCG______* 阅读(248) 评论(0) 推荐(0) 编辑

导航