昨晚被dp搞的不轻、最气的是看题解都看不懂、
本想今天拿水题来练练手感、
结果我发现我错了、!!!
总结一下自己的错误把、 真希望错过的东西都不要在错了、
HDU 1070 Milk
题意:就是一个人去超市买牛奶、给你一些牛奶的牌子 价钱 容量,牛奶的保质期是6天、并且每天喝200ml,如果某种牛奶的容量小于200ml 这种牛奶直接就被拉黑了,并且保证所有的牛奶都是当日产的,要你求买那种牛奶最便宜,而且他只会买一瓶牛奶、上面给出的各种品牌的牛奶都是一瓶的价格容量,如果有多种牛奶同样便宜,要求输出容量大的、
思路:不难,但是题意说的很罗嗦,就是求每升牛奶的价格最低的那一个、 但是这里有个细节,就是那些容量超过1200ml的牛奶的处理,因为他只会喝1200ml 所以就算你容量再多也是多余的、 超过的部分直接舍去
1 #include2 #include 3 #include 4 const int qq=150; 5 struct Milk 6 { 7 char s[150]; 8 int p; 9 int v;10 }milk[qq];11 int partition(int l,int r)12 {13 int i,j;14 Milk x=milk[l];15 i=l;j=r;16 while(1){17 while(i =x.v) --j;18 milk[i]=milk[j];19 while(i =j) break; 22 }23 milk[i]=x;24 return i;25 }26 void quick(int l,int r)27 {28 if(l =1200)51 cheap.v=1200;52 for(int i=count-2;i>=0;--i){53 if(milk[i].v>=1200)54 milk[i].v=1200;55 if(cheap.p*1.0/cheap.v*1200>milk[i].p*1.0/milk[i].v*1200)56 cheap=milk[i];57 }58 printf("%s\n",cheap.s);59 }60 return 0;61 }
HDU 1062 Text Reverse
题意:就是将所有单词反转过来按英语作文的方式输出
这题有点坑阿、 我自己写了几种做法都WA了、 但是我就是不知道错在哪里、
先贴一个对的、 这种做法就直接对每一个单词进行输出
1 #include2 #include 3 #include 4 using namespace std; 5 char s[2000]; 6 int blank[1020]; 7 int main() 8 { 9 int t;scanf("%d",&t);10 getchar();11 while(t--){12 memset(blank,0,sizeof(blank));13 gets(s);14 int count=1;15 blank[0]=-1;16 int len=strlen(s);17 s[len]=' ';18 s[len+1]='\0';19 for(int i=0;i<=strlen(s);++i)20 if(s[i]==' ')21 blank[count++]=i;22 for(int i=1;i =blank[i-1]+1&&s[j]!=' ';--j) // 不加s[j]!=' ' 会WA,我也不知道为什么24 printf("%c",s[j]); // 我自己想是觉得不用加的、25 if(i!=count-1) printf(" ");26 }27 printf("\n");28 }29 return 0;30 }
HDU 1019 Least Common Multiple
这题是真的水、 一发A了、 只需要注意数据不溢出就行了、 那么就先进行除法嘛
题意:求多个数的最大公倍数、
思路:你想想如果你能求出其中两个数的最大公倍数、那么n个数的最大公倍数是肯定大于等于这两个数的最大公倍数的、
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 const int qq=50000; 7 int gcd(int a,int b) 8 { 9 return b==0?a:gcd(b,a%b);10 }11 int num[qq];12 int main()13 {14 int t;scanf("%d",&t);15 while(t--){16 int n;scanf("%d",&n);17 for(int i=0;i maxn) maxn=max(maxn,maxn/gcd(num[i],maxn)*num[i]);31 else maxn=max(maxn,maxn/gcd(maxn,num[i])*num[i]);32 }33 printf("%d\n",maxn);34 }35 }