【算法总结】博弈论相关
2018-04-19 20:45
190 查看
〖相关资料〗
〖相关题目〗
1.【bzoj1188】[HNOI2007]分裂游戏
题意:共有n个瓶子,标号为0,1,2.....n-1,第i个瓶子中装有p[i]颗巧克力豆,两个人轮流取豆子,每一轮每人选择3个瓶子,标号为i,j,k,并要保证i<j,j<=k且第i个瓶子中至少要有1颗巧克力豆。随后这个人从第i个瓶子中拿走一颗豆子并在j,k中各放入一粒豆子(j可能等于k)。如果轮到某人而他无法按规则取豆子,那么他将输掉比赛。问先手必胜策略的第一步方案。
分析:hzwerの博客
#include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; int n,p[30],a[105],c[105]; LL ans; int read() { int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f; } int main() { n=read(); for(int i=1;i<=n;i++)a[i]=read(); sort(a+1,a+n+1); for(int i=1;i<=n;i++)c[i]=a[i]; for(int i=n;i>=1;i--) { for(int j=30;j>=0;j--) { if(!(a[i]&(1<<j)))continue; if(!p[j]){p[j]=a[i];break;} a[i]^=p[j]; } if(!a[i])ans+=c[i]; } printf("%lld",ans); return 0; }View Code
相关文章推荐
- 算法总结(14)--NumberOf1, Single Number相关问题
- 二叉树相关算法总结
- 【算法总结】组合数学相关
- 近似最近邻问题相关算法总结
- 【算法总结--数组相关】双指针法的常见应用。
- 【算法总结】计算几何相关
- 矩阵的相关算法总结
- 内部排序算法相关优化及总结(二)
- 算法问题总结-链表相关
- 【转】素数相关算法总结
- 【算法总结】根号算法相关
- 二叉树相关算法总结
- 【转】素数相关算法总结
- 【算法总结】线性代数相关
- 【转载】网络流相关算法总结之Dinic
- 二叉树相关算法的总结
- 最小生成树相关算法总结
- 算法—二叉查找树的相关一些操作及总结
- 算法总结--数组相关】双指针法的常见应用
- 【算法总结--数组相关】双指针法的常见应用。