摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3687题目大意:怎么说捏,就是把乱七八糟的队形用最短步数将他们排成矩形,人只能左右动。做法:枚举起点。好像就这些...代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define INF 200000int n,m;int map[60][210]; 阅读全文
posted @ 2012-02-28 18:35 Evan1004 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 最近总是刷水题啊...还是相当谁的题啊...而且水题也好久才A掉啊...郁闷...好不容易想起来刷个USACO,又碰个水题...最近堕落了啊...链接就不给了...题也自便吧。模拟秒之。判断每个时刻每个角度的缺口数(是相对与不转时的角度),如果有等于5的就答案了。因为360秒之后所有圆盘都同时回到原位,所以之枚举0到360的时间就好了。代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;int s[ 阅读全文
posted @ 2012-02-25 10:33 Evan1004 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3988题意:每种课都有自己的开始开始和结束时间,学生任选一时间点开始选课,一旦开始每5分钟只能选且必选(如果可以)一次。求学生能选到的最多的课数。分析:因为一开始没仔细看题,没注意到是严格的每5分钟选一次,导致往DP的方向想了半天,WA一次,又因为没注意在结束时刻的课是不能选的(题目也没说太清楚),又WA了一次...杯具。 其实这个题就是一个贪心,因为n很小,n^2就可以过,所以实现很简单:因为每严格5分钟选一次,我们就可以枚举第一次选课的时间,因为枚举超过5次之后就和往前数第5次重合了,且不如那一个优(因为少考虑了一个),所以我 阅读全文
posted @ 2012-02-22 21:16 Evan1004 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://poj.org/problem?id=3989题意:给3个字符串,求每个字母匹配一个数字之后成立的等式的个数。S2,S3之间为等号,S1,S2之间可为任意运算符号(+,-,*,/)。分析:一开是给想复杂了...结果一看范围我崩溃,爆搜秒之。附代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;bool v[6];bool visit[10];int t[6];int a[6] 阅读全文
posted @ 2012-02-22 09:50 Evan1004 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 题意:这AC自动机还能再裸一点么...Trie树+失配指针,不会的去网上找论文吧。直接上代码:View Code #include<queue>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;struct node{ int num; node *fail,*next[26]; void init() { num=0; fail=NULL; memset(next,NULL,sizeof(next));... 阅读全文
posted @ 2012-02-22 07:30 Evan1004 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3390题意:给出n个单词,每个单词有固定的长度,按顺序分行输出这些单词,每行的长度不超过m(单词间包括空格,空格长度不忽略),求每行get=(m-len)*(m-len)的和最小。分析:f[i]表示前i个单词放好之后的最小值,对于新放入第i个,去i之前的j个单词组成新的一行,使f[i-j]+get(i,j)最小。枚举j更新答案即可。附代码:View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostrea 阅读全文
posted @ 2012-02-21 11:20 Evan1004 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目连接:今天BZOJ的速度实在不敢恭维,自己上OJ找吧。题意:给定n个点,求能够组成矩形的最大面积。题目分析:最直观的算法就是枚举每三个点组成的矩形,然后二分判断剩下的点上有没有点。时间复杂度为O(n3),四十分大概。 还有一种更好的算法,首先要了解矩形的基本性质,对角线长度相等(不相等那是平行四边形)且相互平分(重点)。有了它一切都好说了。先在O(n2)的时间算出每两个点连接线段的长度和中点坐标求出来,然后根据中点坐标排序,判断每对中点相同的边能否构成矩形,更新答案即可。虽然最坏复杂度可能达到O(n3),但是数据好像没给这么变态...所以猥琐的过了...其实只有中点坐标和线段长度需要dou 阅读全文
posted @ 2012-02-20 16:54 Evan1004 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1670题意自便。相关知识:树的遍历,非递归DFS写法。分析:因为树的边给定,所以从哪个点开始求都是一样的。递归求出每个点的的子树个数,计算每条边的费用。BFS和DFS其实是一样的,只不过我感觉DFS的实现更精巧一些...不知道为什么出题人要卡DFS,自我感觉BFS要更好写,莫不是它原意是考非递归...囧视。虽然DFS不能AC,但还是贴一下代码吧(70分)View Code #include<cstdio>#include<cstdlib&g 阅读全文
posted @ 2012-02-17 12:54 Evan1004 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=2326题目知识:动态规划,矩阵乘法分析:一开始看到数据范围就想到只能构造...想了好长时间也没想出来...后来同学一点拨才发现DP+矩阵加速就好了。首先可以非常简单地得到一个递推式,f[i]表示第i个数mod m的值,则f[i]=f[i-1]*(10^d[i])+i,其中d[i]表示i的位数,从|f[i-1],i-1,1| ==> |f[i],i,1|可以由矩阵|d[i],0,0||1, 1,0||1, 1,1|得来,所以根据矩阵结合律,可以用类似于快速幂的方法求解。时间复杂度O( 阅读全文
posted @ 2012-02-16 16:22 Evan1004 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 相关知识:最小费用(最大)流问题描述: 一个餐厅在相继的N 天里, 每天需用的餐巾数不尽相同。 假设第i天需要ri块餐巾(i=1,2,…,N)。餐厅可以购买新的餐巾,每块餐巾的费用为p分;或者把旧餐巾送到快洗部,洗一块需 m天,其费用为 f 分;或者送到慢洗部,洗一块需 n 天(n>m),其费用为 s<f 分。每天结束时,餐厅必须决定将多少块脏的餐巾送到快洗部,多少块餐巾送到慢洗部,以及多少块保存起来延期送洗。 但是每天洗好的餐巾和购买的新餐巾数之和, 要满足当天的需求量。试设计一个算法为餐厅合理地安排好N 天中餐巾使用计划,使总的花费最小。问题分析: 题目要求每天的餐巾够用,因此 阅读全文
posted @ 2012-02-03 17:05 Evan1004 阅读(316) 评论(0) 推荐(2) 编辑