标签:Boy HDU Good int sum Festival 异或 num oplus
Being a Good Boy in Spring Festival
尼姆博弈
求出异或和之后,\(sum \oplus num[i]\) 就是除去当前值,其他数字的异或和,为了使整体异或为 0,所以就要让此时的 \(num[i]\) 变成 \(sum \oplus num[i]\),因此,如果 \(num[i] > sum \oplus num[i]\) 则改变这个 \(num[i]\) 可行,等于的时候相当于没拿,所以不可行
tips: \(\oplus\) 的优先级比 \(>\) 低
#include <iostream>
using namespace std;
const int maxn = 110;
int num[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
while(cin >> n && n)
{
for(int i=0; i<n; i++) cin >> num[i];
int sum = 0;
for(int i=0; i<n; i++) sum ^= num[i];
int ans = 0;
for(int i=0; i<n; i++) if(num[i] > (sum ^ num[i])) ans++;
if(sum == 0) ans = 0;
cout << ans << endl;
}
return 0;
}
标签:Boy,HDU,Good,int,sum,Festival,异或,num,oplus 来源: https://www.cnblogs.com/dgsvygd/p/16270024.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。