12 2012 档案

摘要:列个清单吧。。如果一个计算机系的人除了会打点算法竞赛别的什么也不会该是有多悲剧。。。。当然,没退役之前还是以acm为主。。。 Java,Python什么的,还想学学FP编程,比如Haskell什么的。。。以后想往哪方面发展也不太确定,目前对AI和密码学表示充满兴趣。。。争取涉猎下。。。 ACM什么的不必多说了。。。 阅读全文
posted @ 2012-12-31 20:22 silver__bullet 阅读(295) 评论(3) 推荐(0)
摘要:题意:给定n(n<=16&&n为偶数)对点的坐标,现在要将他们分成n组,使得每组两个点距离之和加起来最小。。。解法: 状态压缩,用0 1表示该点是否已经被分配完。。然后记忆化搜索。。。 1 #include<cstdio> 2 #include<cstring> 3 #include<string> 4 #include<iostream> 5 #include<cmath> 6 #include<algorithm> 7 #define N 1<<21 8 #define M 30 9 阅读全文
posted @ 2012-12-27 18:30 silver__bullet 阅读(233) 评论(0) 推荐(0)
摘要:解法:状态压缩。只有12个洞,所以状态最多只有2^12种。。。然后dfs一下找出来所有合法状态即可。 对于位运算的操作: x&(1<<i)表示取出第i位; x&(~(1<<i))表示把第i位变成0; x|(1<<i)表示把第i位变成1; 1 #include<cstdio> 2 #include<iostream> 3 #include<string> 4 #include<cstring> 5 #include<algorithm> 6 #include<queue> 阅读全文
posted @ 2012-12-26 18:12 silver__bullet 阅读(220) 评论(0) 推荐(0)
摘要:期末考试真是令人纠结的东西。。。最近除了做比赛之外不打算大规模刷题了。。要不期末稳跪。。。A.有坑的一题。。。需要注意m和n的大小,别的没啥了。。。A 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int main(){ 6 freopen("input.txt","r",stdin); 7 freopen("output.txt","w",stdout) 阅读全文
posted @ 2012-12-11 12:30 silver__bullet 阅读(168) 评论(0) 推荐(0)
摘要:题意:给定n个物品,用这n个物品填充一个背包,使得没有被装入的物品一定塞不进背包,统计方案数。解法:对于普通的01背包统计方案数很简单,dp[j]=dp[j]+dp[j-w[i]]...这题需要对重量进行排序,然后枚举每个物品,使之成为没有被装入背包的最小重量,那么对于重量小于w[i],的,一定会被装入背包,对于大于w[i]的,我们只需要进行一次01背包统计方案即可,最后找出满足条件的累加。。。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define N 1010 5 #d 阅读全文
posted @ 2012-12-06 23:27 silver__bullet 阅读(160) 评论(0) 推荐(0)
摘要:题意:给定一个含有n个数的序列,从中找出连续长度不超过k的非空子序列,使其和最大。(n<=10^5,k<=10^5)解法:考虑最朴素的做法,用maxn[i]表示以i为结尾,长度不超过k的非空子序列的最大和,那么有maxn[i]=sum[i]-max{sum[i-1]...sum[i-k]},直接做的话时间复杂度O(n*k),看到表达式中后一部分,可以采用单调队列解决,维护一个sum[i]单调递增的单调队列,那么每次求解maxn[i]就可以直接取队列头,复杂度降到O(1),由于长度不大于k,所以每次插入之后还要删掉不满足条件的队头元素。。。 1 #include<cstdio& 阅读全文
posted @ 2012-12-05 23:29 silver__bullet 阅读(168) 评论(0) 推荐(0)