程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu4972 數學雜題

hdu4972 數學雜題

編輯:C++入門知識

hdu4972 數學雜題


題意:有倆個隊進行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;i3||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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved