- 博客(15)
- 资源 (7)
- 收藏
- 关注
原创 POJ 2951 Cake Cutting
题意:给定一个w*h的蛋糕,将其分成m份,也就是切m-1刀(必须保证每次都将一块蛋糕切成两份,按照水平或者竖直),求最后m份中最大的那份的面积最小是多少。 题解:记忆化搜索,dp[k][i][j]为将一块i*j的蛋糕切k刀的最大面积的最小值,枚举下一刀的横竖以及切的位置和其中一份的刀数。 #include #include #include using namespace std; const
2013-03-26 17:37:29 1281
原创 POJ 3003 Spiderman’s workout
题意:蜘蛛侠爬墙锻炼,总共爬n次,能上能下,但最后必须落在地面,且中途不能爬到地下去。要按照最优策略即爬的最高点必须要尽可能低。 题解:典型DP题,dp[i][j]代表第i步爬到j高度时所爬过的最高点,同时用pr[i][j]代表上一次的高度,状态转移就一加一减就行了,最后dfs输出结果就行。 #include #include #include using namespace std; int
2013-03-26 17:08:43 1409
原创 POJ 1312 Numerically Speaking
题意:26进制与10进制互相转换。 题解:JAVA的BigInteger偷渡之。 import java.math.*; import java.util.HashMap; import java.util.Scanner; class Main{ static boolean isdigit(char x) { return x>='0'&&x<='9'; } static vo
2013-03-25 19:11:33 1195
原创 POJ 2373 Dividing the Path
题意:长度为L的区间,有N头牛有各自喜欢活动的区间(Si,Ei),喷水的喷头只能安装在整数点上,且它能喷到的半径在[A,B]之间,现在要求:用最少的喷水头不交叉的覆盖整个L,并且满足每头牛喜欢活动的区间里只有一个喷头再喷。 题解:线段树优化DP,dp[i]代表喷完前i个地方所需要的最少喷头数,那么dp[i]=min(dp[j]+1),i-2b #include #include #includ
2013-03-25 16:50:21 2439 2
原创 POJ 3167 Cow Patterns
题意:给定长度为n和m的两个数字序列(数均小于等于25),用m去按照一定方式去匹配n,即:如果n中的区间[a,b]各数字的名次与m中各数字的名次完全一样,那么他们就是匹配的。问题:求所有的匹配个数及他们出现的首位置。 题解:KMP的升级版,对KMP有一定了解后做这道题就比较容易了,由于区间不同后,名次就不同了,统计名次也比较麻烦,所以对于区间[a,b]中的一个数的名次,可以对应为这个数之前比它小
2013-03-19 20:08:58 3321
原创 POJ 1868 Antiarithmetic?
题意:给定一个长为n的(0,1,2....n-1)的排列,问是否存在等差数列。 题解:可以记录每个数出现的位置pos[i],枚举等差数列中间项以及公差,判断(pos[i+d]-pos[i])*(pos[i-d]-pos[i])是否小于0。 #include #include using namespace std; const int N=10005; int pos[N]; int main
2013-03-18 16:09:45 1195
原创 不自损八百,何以伤敌一千——ACM两年总结
既然金华区域赛已结,剩下的泰国赛区也不过是去玩玩而已,那么,也是时候做一个总结了。实际上距上一年度总结,也就半年有余,不过,ACM或许应该以每一次的比赛作为一个时段的终结点,亦是下一个时段的起始点,更何况,刚比完赛之后,或许是最容易堕落之时。 纵观过去一年,也就参加了半年前金华邀请赛,刚过去不久的长春区域赛以及金华区域赛而已,第一场铜牌(貌似还在铜牌中间),第二场由于打星,什么都没有,但
2013-03-17 20:04:35 2935 2
原创 你若是天才,我便是疯子————ACM一年总结
自金华邀请赛结束后便一直有写这总结的想法了,不过当时却没想那么远,只想做一下个小汇总,让自己明白自己在哪里有所不足,还能继续前进。校赛过后,又隔了一个星期,终于开始提笔了,借着world final 结束之时,我想为自己的ACM之路做个更加彻底的全面的总结。 有不少人问过我是否以前弄过计算机竞赛,我也承认,我弄过,大概一年,就在高二的时候吧,但是和我同读高中的同学都会知道,所谓的一
2013-03-17 20:02:22 4705 3
原创 POJ 1821 Fence
题意:连续的N块木板,有K个粉刷匠,分别坐在第Si块木板前,每个粉刷匠不能移动位置,且最多能粉刷连续的Li块木板(必须包括Si或者不要该粉刷匠),每个粉刷匠粉刷一块木板可以得Pi块钱,求总共的最大利益。 题解:dp[i][j]代表前i个粉刷匠粉刷完成至多前j个木板的最大利益,状态转移有三种: 1、不需要第i个粉刷匠,即前i-1个粉刷匠完成前j个木板的工作:dp[i][j]=dp[i-1][j]
2013-03-17 19:50:16 2656 1
原创 POJ 1188 Gleaming the Cubes
题意:给定n个正方体,求他们的交体积。 题解:知道两个长方体相交的算法就能很简单的解出这道题,实际上两个长方体交,就是取x1,y1,z1各自的最大值,以及x2,y2,z2各自的最小值就是了。 #include #include #include using namespace std; struct data { int x1,y1,z1; int x2,y2,z2;
2013-03-12 17:39:17 1345
原创 POJ 2355 Railway tickets
题意:在一条铁路上有n个站点,要从a到b。火车票有3种,距离 题解:典型dp,dp[i]代表到达第i个站点的最小花费,然后用dp[i]更新从i出发能到达的站点,dp[j]=min(dp[j],dp[i]+price[i,j]) #include #include #include using namespace std; int dp[10005],ds[10005]; int main()
2013-03-11 18:36:47 1153
原创 POJ 2351 Time Zones
题意:给出一个时区当前时间,求另一个时区当前时间。 题解:模拟,用好数据结构储存时间就行了。 #include #include #include #include using namespace std; struct Data { int h,m; Data(int _h,int _m){h=_h;m=_m;} Data(){}; }; struct Zone {
2013-03-11 17:35:06 1044
原创 POJ 2888 Magic Bracelet
题意:用m种不同颜色的珠子连成一条长为n的项链,其中,有k对珠子不能相邻,问总共有多少种(mod 9973)n 题解:组合计数也就burning和polya了,这题用的是Burning Side。 考虑在一种置换f下的稳定核方法,由于只有旋转对称,如果是旋转k个珠子,那么稳定核的循环节也就是gcd(n,k)=r,枚举k的话是不现实的,那么只有枚举r,即n的所有约数。gcd(n,k)=r,即gc
2013-03-09 18:49:15 2041
原创 POJ 1739 Tony's Tour
题意:给定n*m的带障碍格子图,求从左下角走到右下角的哈密顿路的总数。 题解:更进一步的插头DP,主要解法可以参照我的上篇日志:http://blog.csdn.net/tmeteorj/article/details/8635090。 改动之处在于单向插头,上篇中用01和10分别代表左右括号,这道题则需要加11作为单向括号(因为它在括号序列状态中是没有与之匹配的括号的) #include
2013-03-06 15:56:39 611
原创 Ural 1519 Formula 1
题意:找出N*M大小的带障碍格子的哈密顿回路总数。 题解:插头DP进阶题,也是入门题,插头DP的详解还是看《基于连通性状态压缩的动态规划问题》论文吧。 12列共13个插头,一共有3种插头,3进制可解,但用位操作处理2进制更容易,所以设成4进制,2位代表1个插头的状态,用括号表示法即 00:无插头;01:'(';10:‘)’,26位长度的状态是开不了的,所以用hash表进行优化处理,我用一个
2013-03-04 19:13:55 957
树状数组另一类用法(C++源码)
2014-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人