[NOIP2009][vijos1809]三国游戏(贪心)
2016-11-13 19:01
190 查看
题目描述
传送门题解
计算机的策略那么蠢用脑子想想也知道有必胜策略。计算机每一次都会尽量阻止你选默契值最大的,而我们恰恰可以利用这一点。我们将武将的默契值降序排列,然后统计每一个武将第一次出现和第二次出现的位置。我们枚举第一次小涵第一次会拿哪一个武将。第一次拿的那个武将与之配对的武将一定是拿不到的,因为计算机会将它拿走,但是我们可以拿这个武将第二次出现时与它配对的武将,并且这样一定是最优的。
不要担心计算机会恰好拿到更优的武将组合,因为当枚举那个时小涵已经将它拿到辣!
代码
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define N 505 int n,x,cnt,ans; struct hp{int x,y,val;}a[N*N]; int b [2]; int cmp(hp a,hp b) { return a.val>b.val; } int main() { scanf("%d",&n); for (int i=1;i<=n;++i) for (int j=i+1;j<=n;++j) { scanf("%d",&x); a[++cnt].x=i,a[cnt].y=j,a[cnt].val=x; } sort(a+1,a+cnt+1,cmp); for (int i=1;i<=cnt;++i) { if (!b[a[i].x][0]) b[a[i].x][0]=i; else if (!b[a[i].x][1]) b[a[i].x][1]=i; if (!b[a[i].y][0]) b[a[i].y][0]=i; else if (!b[a[i].x][1]) b[a[i].x][1]=i; } for (int i=1;i<=n;++i) ans=max(ans,a[b[i][1]].val); printf("1\n%d\n",ans); }
相关文章推荐
- 洛谷 P1070 Vijos 1815 [NOIP 2009]道路游戏
- [NOIP2009][vijos1810]导弹拦截(枚举)
- NOIP2009 普及组 道路游戏
- noip2010 三国游戏 (博弈论)
- 【BZOJ1854】游戏[SCOI2009](神奇贪心+并查集)
- [NOIP2012][贪心][高精度]国王游戏
- 【noip2009】道路游戏
- noip 2009 道路游戏
- 【noip】国王游戏 贪心 高精度
- noip 2010 三国游戏
- Vijos1775 CodeVS1174 NOIP2009 靶形数独
- noip2009道路游戏【高诗豪】
- noip2009 道路游戏 (单调队列优化动态规划)
- 【NOIP2009PJ】道路游戏
- [NOIP2009][vijos1814]细胞分裂(数学相关)
- NOIP 2010 普及组 复赛 sanguo 三国游戏
- 题目:[NOIP2010普及组]三国游戏
- 【noip 2012】国王游戏 贪心+高精度
- NOIP 2012 国王游戏 贪心 高精度 (COGS 1263)
- 洛谷 P1199 [NOIP2010普及组 T4] 三国游戏