CodeForces 257B Playing Cubes
阿新 • • 發佈:2019-01-23
題意:有兩種紅藍顏色的方塊,紅色為m個,藍色為n個,A,B兩人輪流放方塊,若相鄰兩個方塊顏色相同則A得一分,若相鄰兩個方塊顏色不同則B得一分,判斷A、B兩人的最高得分
思路:(1)通過小資料的暴力搜尋找到規律,輸出一定為( max(m,n)-1, min(m,n) ) (2).博弈,除了第一塊相鄰顏色無法確定,一定能保證後面每一步的放置的顏色相同(除了當數量較小的方塊恰好放完的時候),A得分一定為兩者之間的較大值-1,因此B得分可以推出為 n+m-1-( max(m,n) - 1 )化簡後得n+m-max(n,m),為min(m,n)
注意點:無
以下為AC程式碼:
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged |
---|---|---|---|---|---|---|---|---|
10041600 | 257B - 17 | GNU C++11 | Accepted | 62 ms | 4 KB | 2015-02-27 11:05:55 | 2015-02-27 11:05:55 |
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <deque> #include <list> #include <cctype> #include <algorithm> #include <climits> #include <queue> #include <stack> #include <cmath> #include <map> #include <set> #include <iomanip> #include <cstdlib> #include <ctime> #define ll long long #define ull unsigned long long #define all(x) (x).begin(), (x).end() #define clr(a, v) memset( a , v , sizeof(a) ) #define pb push_back #define mp make_pair #define read(f) freopen(f, "r", stdin) #define write(f) freopen(f, "w", stdout) using namespace std; const double pi = acos(-1); int main() { ios::sync_with_stdio( false ); int m, n; while ( cin >> m >> n ){ if ( m < n ) swap ( m, n ); cout << m - 1 << ' ' << n << endl; } return 0; }