摘要: 鸽巢定理的简单形式 鸽巢原理(抽屉原理):如果有n+1个鸽子要进n个鸽巢,则至少存在一个鸽巢种包含两个或更多的鸽子。看上去是一句“废话”,不过这句”废话“在用来证明一个排列或则某种现象的存在性上相当有魅力!关于鸽巢原理更抽象的表述:• If X has more elements than Y, then f is not one-to-one.• If X and Y have the same number of elements and f is onto, then f is one-to-one.• If X and Y have the same number of elemen. 阅读全文
posted @ 2012-07-17 17:16 Szz 阅读(1315) 评论(0) 推荐(0)
摘要: 1 1 2 http://poj.org/problem?id=1724 3 一开始就直接写了一个DFS,直接TLE,以为用dfs肯定会超,后来看到discuss里有人 4 2 有人用了DFS,所以看了 看,发现进行一些优化,后就可以AC 5 3 优化看代码 6 4 7 5 #include<stdio.h> 8 6 #include<string.h> 9 7 #define maxn 2000010 8 #define max 0x7fffffff11 9 12 10 struct node13 11 {14 12 int d;15 13 ... 阅读全文
posted @ 2012-07-17 15:12 Szz 阅读(173) 评论(0) 推荐(0)
摘要: 1 http://poj.org/problem?id=1724 2 题目大意:单向边最短路问题,但是每条边都有一个费用,要求你的最短路方案的总的花费不能超过限制。 3 4 BFS+优先队列优化 5 因为题目要求的是在给定费用下的最短距离,所以 以距离优先建队列 广搜 6 7 #include<stdio.h> 8 #include<string.h> 9 #include<vector>10 #include<queue>11 using namespace std;12 #define maxn 2000013 #define max 0x7 阅读全文
posted @ 2012-07-17 15:04 Szz 阅读(164) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4248 题解: 给定n种颜色的石头,每种颜色有si颗,同种颜色的石头不区分。问能构成多少种不同的石头序列(不同的序列是指:1.石头数不同;2.石头数相同,至少一个位置的石头颜色不同) dp[ i ][ j ]表示:考虑前i种石头构成的长度为j的序列的个数。 转台转移方程: dp[ i ][ j ] = dp[ i-1 ][ j ]; //未放入第i种颜色的石头 for k := 1 ~ min( j , s[ i ] ) //放入k个第i种颜色的石头 dp[ i ][ j ] ... 阅读全文
posted @ 2012-07-17 10:02 Szz 阅读(360) 评论(0) 推荐(0)