程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 2013編程之美全國挑戰賽---競價

2013編程之美全國挑戰賽---競價

編輯:C++入門知識

Description Alice和Bob都要向同一個商人購買鑽石。商人手中有 N 顆鑽石,他會將它們一顆顆地賣給他們,Alice和Bob通過競價的方式來決定鑽石的歸屬。具體的過程如下:商人首先指定其中一個人開始報價,之後兩人輪流報價,要求是一定要比對方報的價格更高。任何時候,如果一個人不願出價或者出不起價錢時,可以宣布棄權,則對手以最後一次報的價格將鑽石買下。當然,如果兩人都沒錢,商人是不會賣鑽石的。首次報價至少為 1,並且只能報整數的價錢。   Alice和Bob特別愛攀比,因此他們都希望能比對方買到更多的鑽石。Alice和Bob各自帶了 CA 和 CB 的錢用於競拍鑽石。此外,Alice和商人有很不錯的私人關系,因此商人總是會讓Alice先報價。現在請問,在Alice和Bob都用最優策略的情況下,誰能買到更多鑽石?假設雙方都知道對方手中的現金數量,以及商人將要拍賣的鑽石數量 N。         Input 輸入文件包含多組測試數據。 第一行,給出一個整數T,為數據組數。接下來依次給出每組測試數據。 每組數據為三個用空格隔開的整數 N,CA,CB,表示鑽石的數量,以及雙方帶的現金數量。   1 ≤ T ≤ 1000 小數據:0 ≤ N ≤ 10; 0 < CA, CB ≤ 10 大數據:0 ≤ N ≤ 105; 0 < CA, CB ≤ 106 Output 對於每組測試數據,輸出一行"Case #X: Y",其中X表示測試數據編號,Y的取值為{-1, 0, 1},-1表示Alice買到的鑽石會比Bob少,0表示兩人能買到一樣多,1表示Alice能買到更多鑽石。所有數據按讀入順序從1開始編號。 Sample Input 2 4 3 5 7 4 7Sample Output Case #1: 0 Case #2: 1這題做很久不會,表示數學基礎太差,貼一個zhaw(排名10)的代碼:

#include <iostream>   
#include <string>  
 #include <vector>  
 #include <cctype>  
 #include <cmath>   
using namespace::std;  
  int main(){      int t;  
    cin>>t;     
 for (int i=1;i<=t;i++){          int result;      
    long int n,ca,cb;     
     cin>>n>>ca>>cb;       
   if (ca+cb<n){              if (ca>cb) result=1;   
           if (ca==cb) result=0;       
       if (ca<cb) result=-1;}     
     else           if (n%2==0){              int k=n/2;    
          if (cb>=(floor(ca/k)+1)*(k+1)) result=-1;       
       else if (cb>=(floor(ca/(k+1))+1)*k) result=0;       
       else result=1;  
        }          else{              int k=(n-1)/2;     
         if (cb>=(floor(ca/(k+1))+1)*(k+1)) result=-1;        
      else result=1;     
     }          cout<<"Case #"<<i<<": "<<result<<endl;  
    }      return 0;  }  

 


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