ACM
呆呆与笨笨
梦想是被追逐的,而不是幻想的
展开
-
九度 1088剩下的树
题目 标记法#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int tree[10010]; int main(){ int n,m,s,a,b; while(~scanf("%d%d",&n,&m)){ memset(t原创 2015-03-28 16:53:24 · 467 阅读 · 0 评论 -
poj 3663 Costume Party(快排)
题目大意:给你两个个数据s, n,下面输入n组数据代表牛的距离,如果两头牛的长度和小于等于s 就算是一对, 求一共有多少对?原创 2014-08-04 09:11:14 · 483 阅读 · 0 评论 -
小俞同学的数表
题目描述小俞同学,最近勤学苦练数学,对一种数表产生了兴趣。数表如下:1/1 1/2 1/3 1/4 1/52/1 2/2 2/3 2/43/1 3/2 3/34/1 4/25/1她冥思苦相了好久,貌似摸到了一点规律,但是她不知道自己的规律找的对不对,所以需要你来写一个程序来判断。输入格式每行原创 2014-08-03 17:20:22 · 439 阅读 · 0 评论 -
hdu 4907 Task schedule(水题)
#include#include#include#define N 100000using namespace std;int num[2*N+10],next[2*N+10];int main(){ int t,n,m,i,j,a; scanf("%d",&t); while(t--){ memset(num,0,sizeof(num)); scanf("%d%d",&原创 2014-08-04 08:50:21 · 367 阅读 · 0 评论 -
hdu 2674 N!Again(找规律)
#include#include#includeusing namespace std;int num[100];int fun(int n){ int s=1; for(int i=1;i<=n;i++){ s=(s*i)%2009; } return s;}int main(){ int n,i; num[0]=1; for(i=1;i<=50;i++){原创 2014-08-04 08:51:47 · 367 阅读 · 0 评论 -
hdu 2099 整除的尾数(水题)
#include#include#includeusing namespace std;int main(){ int n,m,i,j; int num[110]; while(scanf("%d%d",&n,&m),n+m){ memset(num,0,sizeof(num)); for(i=j=0;i<100;i++){ if((n*100+i)%m==0){原创 2014-08-02 11:50:04 · 421 阅读 · 0 评论 -
hdu 1722 Cake
公式:p+q-gcd(p,q)先把蛋糕分成q份,然后把蛋糕拼在一起,然后再分成p份。 分成q份需要切q刀,分成p份需要切p刀,但是会有重复,减去重复的部分就是gcd(p,q)原创 2014-07-26 16:57:20 · 390 阅读 · 0 评论 -
hdu 1701 ACMer(水题)
ACMer人数在P%和Q%之间,那么P%的人与Q%的人就不能相同,因为一个是至少,一个是至多。另外注意浮点数的陷阱。原创 2014-07-26 10:09:03 · 517 阅读 · 0 评论 -
hdu 1999 不可摸数(朴素打表法求质因子之和)
#include#include#define N 1000000using namespace std;int num[N+10]={0},sum[1010]={0};int main(){ int n,t,i,j; for(i=1;i<=N/2;i++){ for(j=2*i;j<=N;j+=i){ num[j]+=i;//把每一个质因子都计算进去 } } f原创 2014-07-24 21:14:08 · 602 阅读 · 1 评论 -
hdu 4882 ZCC Loves Codefires
解题报告:2014 Multi-University Training Contest 2--by 镇海中学 解题报告原创 2014-07-24 19:54:07 · 442 阅读 · 0 评论 -
hdu 1230 火星A+B(水题)
模拟加法#include#includeusing namespace std;int main(){ int s1[100],s2[100],str[100]; int prime[100]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}; char c; int i原创 2014-07-22 21:26:38 · 435 阅读 · 0 评论 -
hdu 1029 Ignatius and the Princess IV(快排)
题意:输入N个数,N为奇数,求原创 2014-08-04 11:03:19 · 380 阅读 · 0 评论 -
hdu 1495 非常可乐(规律&BFS)
#include#include#include using namespace std; int gcd(int a,int b){ return !b?a:gcd(b,a%b); } int main(){ int a,b,c; while(scanf("%d%d%d",&a,&b,&c),a){ if(a%2==1) printf("NO\n"); els原创 2014-08-06 21:05:36 · 1203 阅读 · 0 评论 -
hdu 2089 不要62(打表)
#include#includeint a[1000010]={0};void fun(){ int i,t; for(i=1;i<=1000000;i++) { t=i; while(t) { if(t%10==4||t%100==62) {原创 2014-08-19 19:12:00 · 352 阅读 · 0 评论 -
九度 1083:特殊乘法(模拟)
题目#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;int main(){ char a[100],b[100]; while(~scanf("%s %s",a,b)){ int len1=s原创 2015-03-28 09:53:40 · 651 阅读 · 0 评论 -
全排列递归算法与STL:next_permutation()函数
设计一个程序生成n个元素{r1,r2,…,rn}的全排列。如n=3时,输出为:r1r2r3,r3r2r1,r1r3r2,r2r1r3,r2r3r1,r3r1r2。 思路如下: 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头转载 2015-03-14 21:29:46 · 460 阅读 · 0 评论 -
寻找大富翁
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;bool comp(int a,int b)//从大到小{ return a>b;}int num[100010];int main(){ int n,m; while(scan原创 2015-03-15 11:03:48 · 606 阅读 · 0 评论 -
hdu 3874 继续xxx定律
#include#include#includeusing namespace std;int main(){ int n,m,i,j; int a[510],b[550]; bool flag[1010]; while(scanf("%d",&n),n) { memset(flag,0,sizeof(flag));原创 2014-08-18 11:07:29 · 463 阅读 · 0 评论 -
hdu 3782 xxx定律
#include#include#includeint main(){ int n,t; while(~scanf("%d",&n),n) { t=0; while(n!=1) { if(n&1) n=(n*3+1)/2; else n/=2; t原创 2014-08-18 11:06:21 · 336 阅读 · 0 评论 -
hdu 4148 Length of S(n)(找规律)
这题每个S(n)是描述S(n-1)值例如:S(1)=1;S(2)=11;即描述S(1)有1个1=11S(3)=21;即描述S(2)有2个1=21S(4)=1211;即描述S(3)有1个2和2个1=1211................#include#include#includeusing namespace std;string s[40];vo原创 2014-08-15 19:39:41 · 543 阅读 · 0 评论 -
hdu 2051 Bitset(水题)
itoa()函数char *itoa( int value, char *string,int radix);原型说明:value:欲转换的数据。string:目标字符串的地址。radix:转换后的进制数,可以是10进制、16进制等。原创 2014-08-14 17:12:47 · 516 阅读 · 2 评论 -
hdu 2522 A simple problem(模拟)
#include#include#include#includeusing namespace std;int a[100010],b[100010];int main(){ int n,m,t,j,s,i; scanf("%d",&t); while(t--){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); scanf(原创 2014-08-09 18:29:55 · 372 阅读 · 0 评论 -
poj 1833 排列(STL)
题意:有一个已知的排列,求这个排列之后的第k个排列。如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。需要注意的两点:1,如果用next_permutation()提交,C++过,而G++TLE;2,即使使用C++提交,scanf(),printf()过,cin,cout TLE原创 2014-08-22 12:06:44 · 716 阅读 · 0 评论 -
poj 3077 Rounders(水题)
#include#include#includeusing namespace std;int main(){ int a[20]; char s[20]; int n,m,i,j,k; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); scanf("%s原创 2014-08-19 19:22:16 · 380 阅读 · 0 评论 -
HDU 4545 魔法串
#include#includeint num[1010][1010];int main(){ int n,m,i,j,t,r,k,T; char s1[1010],s2[1010],a,b; scanf("%d",&T); for(t=1;t<=T;t++){ memset(num,0,sizeof(num));原创 2014-04-13 19:55:41 · 467 阅读 · 0 评论 -
南阳 779 兰州烧饼
思路 饼为两面 so n*25 3 、、time = 10/3+1---->无论10%3=几 都是可以被一次烙玩所以 if((2*n)%m!=0) sum++ #include#includeint main(){ int n,k; while(~scanf("%d%d",&n,&k)){ if(n<=k){原创 2014-03-29 21:33:46 · 573 阅读 · 0 评论 -
南阳 33 蛇形填数
先判断,再填数;在很多情况下,最好在做一件事之前检查是不是可以做,而不是做完再后悔。#include#includeint main(){ int a[110][110]; int n,m,i,j; scanf("%d",&n); memset(a,0,sizeof(a)); m=a[i=0][j=n-1]=1; while(m<n*n)原创 2014-01-06 22:14:20 · 543 阅读 · 0 评论 -
poj 3250 Bad Hair Day
题意: 对于给定的测试数据,首先10进栈,然后接着比较后面的数33,3出栈,再比较7<10,res+=1, res=2. 7进栈。在比较下一个数4<7,此时栈中有2个元素,所以res+=2,res=4 4进栈。 接下来12>4,所以4出栈,12>7,12>10 7和10相继出栈。到栈底,12进栈,再比较2#includeint num[80010];int原创 2014-01-06 22:03:01 · 633 阅读 · 0 评论 -
南阳 括号配对问题
#include#includeint main(){ char s[10010],a[10010]; int test,i,n,m,t; scanf("%d",&test); while(test--) { scanf("%s",s); n=strlen(s); m=1; if(n原创 2014-01-06 22:00:34 · 587 阅读 · 0 评论 -
南阳 485 A*B Problem
解题思路: 弃九法 #include#includeint main(){ char s1[20],s2[20]; int n,i,sum1,sum2,a,b; scanf("%d",&n); while(n--) { scanf("%s%s",s1,s2); a=strlen(s1);原创 2014-01-06 22:22:46 · 537 阅读 · 0 评论 -
南阳 655 光棍的yy
描述 yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了,问这样的组合有多少种??例如(111 可以拆分为 111 12 21 有三种)输入第一行输入一个n表示有n个测试数据以下n行,每行输入m个1(1 输出输出这种组合种数,占一行样例输入311111原创 2014-01-06 22:19:14 · 822 阅读 · 0 评论 -
南阳 86 找球号(一)
看清题!!!#include#include#includeint cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int b[100010];int a[1000010];int main(){ int n,m,i,f,r,mod,t; memset(a,0,sizeof(a)); mem原创 2014-01-06 22:39:34 · 622 阅读 · 0 评论 -
hdu 1877 又一版 A+B
#include#includeint main(){ int k,i,n,m; int a[10000]; while(scanf("%d",&k)&&k) { scanf("%d%d",&n,&m); memset(a,0,sizeof(a)); n=n+m; if(!n) printf(原创 2014-01-06 22:07:45 · 519 阅读 · 0 评论 -
hdu 1032 The 3n + 1 problem
#includeint main(){ int n,m,i,t,j,s; while(scanf("%d%d",&n,&m)!=EOF) { printf("%d %d ",n,m); i=n<m?n:m; m=n<m?m:n;//题目里没说输入的n,m的大小,要先判断,坑啊 for(s=0;i<=m;i+原创 2014-01-03 22:56:58 · 491 阅读 · 0 评论 -
hdu 1009 FatMouse' Trade
http://http://acm.hdu.edu.cn/showproblem.php?pid=1009题目大意:每只猫把守一间房间,房间里有咖啡豆,老鼠可以拿猫粮去换,每个猫猫需要一定的猫粮,老鼠拿的猫粮的和猫需要的成一个比例,老鼠就能拿到这个比例的咖啡豆。问题是要我们求最多老鼠能拿到的咖啡豆。 题目分析:这题其实就是可用贪心算法求的背包问题!只要老鼠每次先去换单位猫原创 2014-01-03 22:59:55 · 544 阅读 · 0 评论 -
hdu 1466 计算直线的交点数
采用数组dp[i][j]。若dp[i][j]==1,则说明放i条直线有j个交点,则只需要把dp[n][i]从i=0到i=190扫一遍,因为20条直线最多有190个交点。转移为:要求i条直线有多少个交点,则此i条直线可以分为两组,一组是j条平行线,另外一组是i-j条自由线,则此种交法的交点数就为(i-j)*j+k(k为j条自由线的交点数)。#include#原创 2014-01-03 22:37:20 · 489 阅读 · 0 评论 -
hdu 1276 士兵队列训练问题
陷阱一:每一次报数都必须报到队伍最后一个人才重新开始。陷阱二:报数过程如果人数#include#includeint main(){ int n,m,i,s,t,j,k; int a[5010],b[10]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); sc原创 2014-01-06 22:31:40 · 748 阅读 · 0 评论 -
poj 1579 Function Run Fun
#include#includeint s[25][25][25];//把算过的存进去,节省时间int w(int a,int b,int c){ if(a<=0||b<=0||c<=0) return 1; else if(a>20||b>20||c>20) return s[20][20][20]=w(20,20,20); if(s[a][b][c]) return s[a][b原创 2014-01-15 11:13:33 · 505 阅读 · 0 评论 -
hdu 1022 Train Problem I
#include#includeint main(){ int n,m,i,ctop,p,c[20],d[20],t; char a[20],b[20]; while(scanf("%d",&n)!=EOF) { memset(d,0,sizeof(d)); //memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); scanf("原创 2014-01-15 11:15:18 · 454 阅读 · 0 评论 -
hdu 2041 超级台阶
斐波那契数问题:一个简单的数学问题有一楼梯共10级,如果每次只能跨上1级或2级,要登上第十级,共有( )种不同走法?最佳答案:若只有1级楼梯有一种方法。2级楼梯就会有两种方法。...n级楼梯,若先走1步,则下面还剩下n-1级楼梯如果先走2步,下面还剩下n-2级楼梯所以走n级楼梯的方法总数是n-1级楼梯的方法总数加上n-2级楼梯的方法总数。即3级楼梯等原创 2014-03-16 11:23:09 · 501 阅读 · 0 评论