2012年8月14日

NYOJ 14 会场安排问题

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=14思路:贪心算法主要问题是时间的问题,这就需要用到ACM中常用的algorithm库函数 1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 struct node 5 { 6 int first;//开始时间 7 int last; //结束时间 8 }w[10001]; 9 bool cmp(node x,node y)10 {11 if(x.last<y.last) ret 阅读全文

posted @ 2012-08-14 21:04 mycapple 阅读(321) 评论(0) 推荐(0) 编辑

NYOJ 456 邮票分你一半

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=456思路:以价值的总和的一半为背包容量,构建0-1背包,只要保证一半的背包容量装的价值最大就行。。因为最大也就是总价值的一半。。 1 //0-1 背包 2 #include<stdio.h> 3 #include<string.h> 4 int val[500001]; //存放当前的最大容量 5 int main() 6 { 7 int n,m,i,j,sum; 8 int a[1001]; 9 scanf("%d",&m);10 wh 阅读全文

posted @ 2012-08-14 19:55 mycapple 阅读(432) 评论(0) 推荐(0) 编辑

POJ 1164 The Castle

摘要: 地址:http://poj.org/problem?id=1164问题描述:图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间最大的房间有多大城堡被分割成m´n(m≤50,n≤50)个方块,每个方块可以有0~4面墙输入:程序从标准输入设备读入数据。第一行是两个整数,分别是南北向、东西向的方块数。在接下来的输入行里,每个方块用一个数字(0≤p≤50)描述。用一个数字表示方块周围的墙,1表示西墙,2表示北墙,4表示东墙,8表示南墙。每个方块用代表其周围墙的数字之和表示。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。输入的数据保证城堡至少有两个房间输 阅读全文

posted @ 2012-08-14 18:32 mycapple 阅读(590) 评论(0) 推荐(0) 编辑

POJ 1011 Sticks

摘要: 地址:http://poj.org/problem?id=1011问题描述:乔治拿来一组等长的木棒,将它们随机地裁断,使得每一节木棒的长度都不超过50个长度单位。然后他又想把这些木棒恢复到为裁截前的状态,但忘记了木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棒的长度都用大于零的整数表示输入:由多个案例组成,每个案例包括两行。第一行是一个不超过64的整数,表示裁截之后共有多少节木棒。第二行是经过裁截后,所得到的各节木棒的长度。在最后一个案例之后,是零。输出:为每个案例,分别输出木棒的可能最小长度。每个案例占一行。思路1:题意: 给你n 木棍碎片,要求还原原木棍,且原木 阅读全文

posted @ 2012-08-14 17:43 mycapple 阅读(6093) 评论(2) 推荐(3) 编辑

NYOJ 88 汉诺塔(一)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=88思路1:对于汉诺塔求移动次数公式为f(n+1)=f(n)*2+1;此题如果用要求十进制最后六位,f(n+1)=(f(n)*2+1)%100000;每次输入层数,求出移动次数,但如果输入数据很大,利用此公式必定超时,经过多次测试,发现若输入数据大于100005,有如下规律,如:f(123456)=f(23456); f(123456789)=f(23456789)---=f(56789)即略去最高位,但 if(m%100000<6)则需进行此操作 m=100000+m%10;这样就不 阅读全文

posted @ 2012-08-14 15:07 mycapple 阅读(1040) 评论(0) 推荐(2) 编辑

NYOJ 312 20岁生日

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=312思路:同hdu 18岁的生日,不过在这里需要在if(m==2&&d==29&&(!rn(y+20))) {cout<<"-1"<<endl;} 添加!rn(y+20),而18岁的生日不需要添加是由于闰年+18=非闰年这道题不知道咋了,用C++就一直TimeLimitExceeded,换用C语言scanf,printf就AC了。。。。表示不太懂。。。。。。 1 #include<stdio.h> 2 阅读全文

posted @ 2012-08-14 11:56 mycapple 阅读(249) 评论(0) 推荐(0) 编辑

HDU 1272 小希的迷宫

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1272思路:并查集的运用当用find函数去查找祖先时,如果合并过程中查找到的祖先相同,那么说明有两条路可以连通,就不符合要求 1 #include<string.h> 2 #include<stdio.h> 3 int f[100010];//存放一个节点的父节点的编号 4 bool is[100010];//标志编号为I的房间是否存在 5 void exist(int x,int y)//判断x,y点是否已经存在 6 { 7 if(!is[x]){ 8 is... 阅读全文

posted @ 2012-08-14 10:47 mycapple 阅读(202) 评论(0) 推荐(0) 编辑

HDU 2574 Hdu Girls' Day

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2574思路1:素数有关 ,不太懂。。。思路2:因为 大于 1 << 16 的和数都能用 1 -- 1<<16 之间的素数表示, 不能表示的肯定是 素数了, 所以处理 1-- 1<<16之间的素数就可以了.不过貌似这题的数据很弱没有大于 1 << 16 的素数. 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 int prime[1000000] 阅读全文

posted @ 2012-08-14 10:18 mycapple 阅读(198) 评论(0) 推荐(0) 编辑

HDU 1999 不可摸数

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1999思路1:标准的筛选法。求出每个数的因子和,然后看因子和是否在1000以内,是的话就证明等于因子和的这个数不是不可摸数。 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 int sum[1000001],sign[1001]; //sum是因子数和,开的空间大些 5 int main() 6 { 7 int n,num,i,j; 8 scanf("%d",&n) 阅读全文

posted @ 2012-08-14 09:53 mycapple 阅读(547) 评论(0) 推荐(0) 编辑

NYOJ 189 兔子的烦恼(一)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=189思路:经过推算,如果m和n的最大公约数是1时,狼就会把所有的洞进过一边,这样兔子在劫难逃,如果最大公约数不是1,则狼进的洞口编号就是m的倍数,那么兔子就有可能存活,此题关键是看狼是否按着每隔m-1个洞把所有的洞转完。 1 #include<stdio.h> 2 int gcd(int a,int b) 3 { 4 if(b==0) 5 return a; // 如果b为0则a就是a和b的最大公约数 6 else 7 return gcd(... 阅读全文

posted @ 2012-08-14 09:18 mycapple 阅读(343) 评论(0) 推荐(0) 编辑

NYOJ 49 开心的小明 (dp问题之01背包问题)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=49思路:01背包问题 考虑使用dp问题 求解,定义一个递归式 opt[i][v] 表示前i个物品,在背包容量大小为v的情况下,最大的装载量。 opt[i][v] =max(opt[i-1][v] , opt[i-1][v-c[i]] + w[i]) //w[i]是容量为c[i]时的装载量解释如下: opt[i-1][v] 表示第i件物品不装入背包中,而opt[i-1][v-c[i]] + w[i] 表示第i件物品装入背包中。 1 #include<iostream> 2 #in 阅读全文

posted @ 2012-08-14 08:36 mycapple 阅读(1336) 评论(0) 推荐(0) 编辑

导航