这题我做了N久也做不出....赛后看了大牛AC的思路....
Program:
#include<iostream> #include<cmath> #include<stack> #include<queue> #include<set> #include<algorithm> #include<stdio.h> #include<string.h> #define ll long long #define oo 1000000007 using namespace std; int judge(int n,int ca,int cb) { int t,va,vb,c; t=(n+1)/2; // 钻石平均分,取上整 vb=cb/t; // 平均分时,Bob每颗钻石所需的单位价值 c=ca/vb; // Alice用这个单位价值能拿多少钻石 if (2*c>n) return 1; t=(n+1)/2; va=ca/t; c=cb/(va+1); // 因为Alice先拿..所以Bob每次总要比Alice多1 if (2&c>n) return -1; return 0; } int main() { int T,t,n,c1,c2,ans; scanf("%d",&T); for (t=1;t<=T;t++) { scanf("%d%d%d",&n,&c1,&c2); printf("Case #%d: %d\n",t,judge(n,c1,c2)); } return 0; }