51nod 1390 游戏得分(贪心)
2017-10-02 15:38
176 查看
思路:根据题目可知,每回合的得分为1,3,5,7….2*n-1,是一个等差序列,而且他的每一个前缀和都是平方数,这就说明x+y也要是平方数才能合法。还有就是2分的情况是不存在的,其余的数字都可以。根据给的数据范围,大概就1e6轮游戏,把每轮的的分数打出来,sqrt(x+y)是两人进行的游戏轮数,然后从表里倒着选取分数,当分数够x的时候,就是A最少获胜的盘数了。选取的得分越高,获胜的局数越少。。。。
#include <bits/stdc++.h> using namespace std; typedef long long LL; const LL MAXN = 2e6+10; LL table[MAXN]; void init() { table[1] = 1; for(LL i = 2; i < MAXN; ++i) table[i] = table[i-1]+2; } int main() { ios::sync_with_stdio(false); init(); LL T,a,b,sum,ssum; cin >> T; while(T--) { cin >> a >> b; sum = a+b; ssum = sqrt(sum); if(sum != ssum*ssum || a == 2 || b == 2) { cout << "-1" <<endl; continue; } int cnt = 0; for(int i = ssum; i >= 1; --i) { if(a-table[i] >= 0 && ((a-table[i]) != 2)) { a -= table[i]; ++cnt; } if(a == 0) break; } cout << cnt << endl; } return 0; }
相关文章推荐
- 51nod 1390 游戏得分【贪心+思维+谨慎】
- 51nod-1390 游戏得分
- 51nod 1390 游戏得分
- 51NOD-1390 游戏得分
- 51nod 1390 游戏得分
- 51Nod-1390-游戏得分
- 51nod oj 1390 游戏得分 1351 吃点心【贪心】
- 51Nod-1390-游戏得分
- 51nod 1459 迷宫游戏(迪杰特斯拉Dijkstra算法)
- NOIP 2012 T2 国王游戏 (贪心+高精)
- 51Nod 1091 线段的重叠(贪心+区间相关
- 51nod 1070 Bash游戏 V4
- HDU - 2209 翻纸牌游戏(贪心)
- 51nod 1449 砝码称重(进制思想+贪心)
- 51nod 1432 独木舟(贪心)
- 51Nod 1072 - 威佐夫游戏(博弈)
- 51nod 完美字符串(贪心算法基础)
- 51Nod-1441-士兵的数字游戏
- 51nod_1072 威佐夫游戏
- 【bzoj2563】 阿狸和桃子的游戏 贪心