首页 > 代码库 > hdu 4972 A simple dynamic programming problem (每次记录两队得分差值求结果数)
hdu 4972 A simple dynamic programming problem (每次记录两队得分差值求结果数)
因为是每次投篮后记录两队得分的差值,所以两个队伍的总分是不断增加的,可以发现只有差值由1-->2或者2-->1的情况才可能产生产生两种总分和的结果如 0:2可以变成2:3和1:2 其他的情况都只能是一种
郜大可的代码:
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 #define LL __int64 7 #define Ma 100010 8 int num[Ma]; 9 int main(){10 int t,cas=1;11 scanf("%d",&t);12 while(t--){13 int n,ans=2;14 scanf("%d",&n);15 for(int i=0;i<n;i++)16 scanf("%d",&num[i]);17 if(num[0]>3||num[0]==0){18 ans=0;19 goto sss;20 }21 for(int i=1;i<n;i++){22 int k=abs(num[i]-num[i-1]);23 if(k>3||(num[i]!=1&&num[i-1]==num[i])){24 ans=0;25 goto sss;26 }27 if((num[i-1]==1&&num[i]==2)||(num[i-1]==2&&num[i]==1)){28 ans+=2;29 }30 }31 if(num[n-1]==0) ans/=2;32 sss:printf("Case #%d: %d\n",cas++,ans);33 }34 return 0;35 }36 37 38 [ Copy to Clipboard ] [ Save to File]
hdu 4972 A simple dynamic programming problem (每次记录两队得分差值求结果数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。