HDU 1087 Super Jumping! Jumping! Jumping!

摘要: 很简单的动态规划。题意:求一列最大的递增和。 1 #include 2 #define maxn 1010 3 4 int d[maxn] , l[maxn] , n; 5 6 int dp() 7 { 8 for(int i=1;i=1;j--){11 if(l[i] > l[j]){12 if(d[j]+l[i] > d[i]) d[i] = d[j]+l[i];13 }14 }15 }16 for(int i=n;i>=1;i--) if(d[i] > d[n])... 阅读全文
posted @ 2013-11-23 10:46 从此以后 阅读(189) 评论(0) 推荐(0)

HDU 1099 Lottery

摘要: 题目有点难懂,直接看样例又不太直观。不管了。其实题意很简单,实际上就是一道数学题+编码题意:求一个数x的f(x)=x*(1/1+1/2+···+1/x),并按照有分数是输出其带分数的形式。注意格式输出。1.一开始做了溢出了,仔细看看才知道__int64貌似也不兼容22!的大小,一开始用数组记录22!的阶乘的方法不行。2.方法很多,这里采用的是模拟手工暴力运算,先将x乘进到括号里的分数,然后相加。相加的时候将分母扩大到最小公倍数,分子相应增大,以此类推 1 #include 2 #include 3 using namespace std; 4 #include 5 阅读全文
posted @ 2013-11-23 10:14 从此以后 阅读(275) 评论(0) 推荐(0)

HDU 1098 Ignatius's puzzle

摘要: 这道题算是认真读了,算是以前没有仔细去研究一下不懂的符号,今天意淫出来的。呵呵题意就是满足公式f(x)=5·x^(13)+13·x^(5)+k·a·x的情况下,求一个最小的a,使得对于任何一个x都满足65|f(x)1.既然对整数x是任意满足的(除了0),那么取x=1就可以很快化简得公式(18+a·k)%65==02.有了上面的公式之外,可以进行暴力。3.如果直接暴力超时。可以注意到第66次和第1次是相同的,因为将公式化简后,出现了周期消去。此处不解释了 1 #include int main() 2 { 3 int k,ok,n; 4 whil 阅读全文
posted @ 2013-11-23 00:10 从此以后 阅读(183) 评论(0) 推荐(0)

HDU 1267 下沙的沙子有几粒?

摘要: 一道很简答的题目,但是看不出来是DP啊。渣爆了。意思是从左到右H的数量要比D多,也就是当出现Hn的字符串都可以由m-1,n和m,n-1的字符串得到。3.只写出了转移方程,没有写出m 2 3 __int64 dp[21][21]; 4 int n , m; 5 6 void dfs() 7 { 8 for(int i=0;i<=20;i++) dp[0][i]=0; 9 for(int i=0;i<=20;i++) dp[i][0]=1;10 dp[0][0]=0;11 for(int i=1;i<=20;i++)12 {13 for(... 阅读全文
posted @ 2013-11-22 16:19 从此以后 阅读(236) 评论(0) 推荐(0)

HDU 1106 排序

摘要: 一直注意这道题很久了。选拔赛之前就看见这道题一直做不出来。拖到现在终于做了。1.可以用很多C函数来解决很多问题,非常方便。写完这道题觉得自己写的函数才是王道。strchr(char*a,char ch)2.唯一一个要注意考虑的地方就是连续几个5 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 int cal(string a) 9 {10 int ten=1 , res = 0;11 for(int i=a.length()-1;i>=0;i--)12... 阅读全文
posted @ 2013-11-22 13:23 从此以后 阅读(173) 评论(0) 推荐(0)

HDU 1208 Pascal's Travels

摘要: 暑假集训的时候做过了,当时大神XX不到30分钟搞定了,我陷入了深搜的陷阱中了。题意:从[1,1]出发到[n,n],每次到达的格子都要按照格子里的数字走。问可以走到终点的数量是多少。1.明显的递推。每个可能走到的格子都是由上个格子转移来的,那么能到达上一个格子的步数肯定成为到达该格子的数量一部分。2.那么将每个格子可能去到的下一个格子都递推下去。只能向下向右走。3.递推的方法,或者记忆化搜索。 1 #include 2 #include 3 using namespace std; 4 5 __int64 path[40][40]; 6 int maz[40][40] , n; 7 8 ... 阅读全文
posted @ 2013-11-22 09:21 从此以后 阅读(399) 评论(0) 推荐(0)

HDU 1205 吃糖果

摘要: 还是有点心急了。思路对了,发现如果有其中一种糖果是大于总数量的一半-1,那么将会无法形成隔板1.样例:[4,1,1] 就是对应这种情况---> |`|`| |,发现,如果当中出现一种类型,总数除去这部分剩下的部分要形成隔板才行,至少是sum-ele+1>=ele2.因此,对于每次输入的数,找出最大的数,并确定是否大于数量的一半-1即可。3.看了一些题解是属于抽屉原理。不太懂,学一下。 1 #include 2 3 __int64 num; 4 5 int main() 6 { 7 __int64 sum=0; 8 int T,n; 9 scanf("%d",&a 阅读全文
posted @ 2013-11-22 08:36 从此以后 阅读(232) 评论(0) 推荐(0)

HDU 1202 The calculation of GPA

摘要: 以前和一个队员交流过的,当时他说他用了字符串表示的方法做的,想起来觉得有点麻烦今天做了一下,果然有点坑,也是看了题解才知道坑的地方1.如果总分太小了,也就小于1e-9那种,会导致OLE。2.分母不为0这个细心点都应该知道的。3.但是没有判断分母为0也AC了。 1 #include 2 #include 3 using namespace std; 4 #include 5 6 const double eps = 1e-9; 7 8 int get(double s) 9 {10 if(s >= 90 && s = 80) return 3;12 else if(s .. 阅读全文
posted @ 2013-11-22 07:56 从此以后 阅读(224) 评论(0) 推荐(0)

HDU 1201 18岁生日

摘要: 才错了几分钟,好好看了一下,发现自己的限制条件写错了,思路是有的,但是有点混乱,积累经验了以0岁生日和18岁生日作为起点终点,很清楚看到中间的年份的天数是必须加上的,问题在于多出的一天是有0岁年还是18岁年来决定画几条线段就可以看见要判断的区间处于那一年了: 1.如果生日在2.29日之前,那么有误差的一年就在于这年,判断该年2.那么生日在2.29后,则误差不在今年,而是在最后一年。画图就可以将这个关系表达清楚了 3.以前用暴力做。用暴力只会复杂化,而且那时候是超时了。 1 #include 2 3 bool is_leap(int y){ 4 return ((y%4==0 && 阅读全文
posted @ 2013-11-21 23:51 从此以后 阅读(237) 评论(0) 推荐(0)

HDU 1200 To and Pro

摘要: 水题一道,考得就是英语吧···不过最近才做出来,觉得自己平时太懒了。题意:给出一个字母矩形,给出已知列,将矩阵以列逐列向右读,输出字符串。思路:本来想做一个倒置矩阵。将相应行倒置。去年的时候接触这题大概是想用数学位置解决的,当时做不出来。 其实直接在已知字符串上做转置就行了,关键函数:reverse(p,p+n) 1 #include 2 #include 3 #include 4 using namespace std; 5 6 char ch[30][40]; 7 int cnt = 0 , n; 8 char str[300]; 9 10 void outp 阅读全文
posted @ 2013-11-21 22:33 从此以后 阅读(185) 评论(0) 推荐(0)