題意:有倆個隊進行n場比賽,每場只記錄下分差的絕對值(不知道哪一方),求最後可能比分。
思考了半天,還分類討論。。結果也想到只有 1->2、2->1的情況有倆種可能。。。哎還是跪,這題坑點交多,自己弱爆。。
官方正解:既然已經知道差值,那麼只有知道雙方最終得分之和就知道比分了!(x-y已知,當然要用x+y去確定!問題轉化能力!)問題轉化了!每次1-》2/2-》1有總分增加1/3的倆種可能,設有cnt個,則有cnt+1個和(0個1,1個1...cnt個1),當最後比分一樣(x-y=0)時候,ans=cnt+1,否則有一個高一個低,ans*2;
這題要還判斷無效輸入。。。無效是ans=0.。。若前後比分相同,而且不為1或者差距》3,不可能。。。
代碼提交後竟然排第4...
#include#include using namespace std; int main() { int T; scanf("%d",&T); for(int ii=1;ii<=T;ii++) { int n; scanf("%d",&n); int cnt=0;int last=0;int cur=0; bool mark=1; for(int i=0;i 3||last-cur>3) { mark=0; } if(cur==1&&last==2||cur==2&&last==1) { cnt++; } last=cur; } if(!mark)cnt=-1; if(cur==0) printf("Case #%d: %d\n",ii,cnt+1); else printf("Case #%d: %d\n",ii,2*cnt+2); } return 0; }