上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 37 下一页
摘要: 题目大意:有n 个人围坐在一个圆桌旁,每个人手中有一定数量的金币,金币的总数能够被n整除,现在每个人可以给自己旁边的两个人传递金币,要使得每个人手中的金币数相同,问最少要经过多少次的传递,假设每次只能给一个金币。解题报告:感觉这题就是一道纯粹的数学题,代数思想很重要。我们可以假设x2是第二个人给第一个人的金币的数量,注意这里若x2是整数,表示第二个人给第一个人金币,若x2是负数,则表示第一个人给第二个人金币,同理x3表示第三个人给第二个人的金币数量,由于桌子是圆的,所以x1就表示第1个人给第n个的金币数量。假设第i个人他一开始手上有Ai个金币,他给了i-1个人xi个金币,然后i+1个人又给了他 阅读全文
posted @ 2013-06-03 20:15 xiaxiaosheng 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个士兵,你要给他们没人分配一项任务,对于第i个士兵,你向他描述这个任务需要Bi时间,他完成这个任务需要Ji时间,你描述完了之后他可以独立去完成这个任务,但你一次只能给一个人描述任务,问执行完这n个任务一共需要多少时间。解题报告:这题利用了贪心的思想,首先我们应该确定应该以什么样的顺序来... 阅读全文
posted @ 2013-06-02 22:33 xiaxiaosheng 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目大意:你的王国里有一条有n个头的恶龙,你希望雇一些骑士来把它杀死(即砍掉所有的头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙所有的头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。输出最少的... 阅读全文
posted @ 2013-06-02 19:41 xiaxiaosheng 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 为了使我们的程序看起来更加人性化,有时候我们需要加入一些声音,所以这里介绍一种播放声音的函数PlaySound的用法。首先我们要做的就是将头文件#include "MMSystem.h"包含进来。第二步,就是动态链接#pragma comment(lib, "Winmm.lib"),包含了这两句之后就可以使用PlaySound 函数了,这个函数一共有三个参数,第一个参数是要播放的声音文件的位置和名称,也就是文件的指针,第二个参数是HMODULE,播放声音的标志,详细的就不介绍了,直接传NULL给它就行,第三个参数的播放声音的方式,比如说SND_ASYNC 阅读全文
posted @ 2013-06-01 23:03 xiaxiaosheng 阅读(3266) 评论(0) 推荐(0) 编辑
摘要: 解题报告:求前50项斐波那契数,这个就不用说了吧,直接看代码: 1 #include<cstdio> 2 __int64 f[55]; 3 void dabiao() { 4 f[0]=0,f[1]=1; 5 for(int i=2;i<=50;++i) 6 f[i]=f[i-1]+f[i-2]; 7 } 8 int main() { 9 int n;10 dabiao();11 while(scanf("%d",&n)&&n!=-1)12 printf("%I64d\n",f[n]);13 return 0;1 阅读全文
posted @ 2013-05-31 21:56 xiaxiaosheng 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073首先要说的是同在一条直线上的所有的点(x,y)的x+y都相等,并且这个和表示这个点在第几条直线上,所以我们可以先求出从原点到所有的直线的第一个点的距离,先打一个表,然后到点(x,... 阅读全文
posted @ 2013-05-31 21:42 xiaxiaosheng 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:在一个棋盘上,从坐标为(1,1)的点走到坐标为(n,n)的点并且不经过这两点之间的对角线,问一共有多少种走法。定义一个二维数组map[40][40],点map[i][j]的值为从(1,1)点走到这个点有多少种走法,而点(i,j) 可以由坐标为(i-1,j)和坐标为(i,j-1)这两个点走过来,所以走到(i,j)点的走法就有map[i-1][j]+map[i][j-1]种。另外要注意的是数据要用__int64,而且要初始化。 1 #include<cstdio> 2 #include<cstring> 3 __int64 map[40][40]; 4 阅读全文
posted @ 2013-05-31 20:54 xiaxiaosheng 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意这里就不说了,这里给出题目链接,http://acm.hdu.edu.cn/showproblem.php?pid=2064。这题首先我们应该知道的是如何将N个圆盘从第一杆全部搬到第二根杆跟全部搬到第三根杆和从第二根杆全部搬到第三根杆需要的次数是一样的,然后搬N根杆的次数就可以有搬N-1根杆的次数得到,这里首先给出地推公式,dp[n]=3*dp[n-1]+2;思想就是假设现在要将N个圆盘搬到第三根杆,现在首先要做的是把N-1根杆全部搬到第三根杆,这样一共需要dp[n-1]次,然后第一根杆上面还剩下一个圆盘,现在我们要把这最后一个圆盘放到第二根杆上面,原因待会再解释,然后现在要 阅读全文
posted @ 2013-05-30 22:12 xiaxiaosheng 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 解题报告:题目大意:有N个人和N个名字,要将他们一一对应,对应的规则是至少要有N/2是对了的,求这样一共有多少种对应的方法。错排题,从0开始枚举到N/2,即表示有0个人的名字与人对应是错的、1个人的名字与本人的对应是错的、两个人的名字与本人的对应是错的、、、2、、、、,这里用一个组合就可以了,要注意... 阅读全文
posted @ 2013-05-30 21:10 xiaxiaosheng 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 解题报告:两个十六进制的数的加法,十六进制的数可以直接输入和输出,但仅限于非负数,输入输出的格式控制符是%X,但这题数据范围较大,要用到__int64,所以格式控制符应该用%I64X,另外当结果为负数时处理一下就可以了。 1 #include<cstdio> 2 int main() { 3 char str1[1000],str2[1000]; 4 __int64 A,B,sum; 5 while(scanf("%I64X%I64X",&A,&B)!=EOF) { 6 A+=B; 7 if(A<0) { 8 ... 阅读全文
posted @ 2013-05-29 21:06 xiaxiaosheng 阅读(152) 评论(0) 推荐(0) 编辑
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 37 下一页