CF1148F - Foo Fighters

题意:你有n个物品,每个都有val和mask。

你要选择一个数s,如果一个物品的mask & s含有奇数个1,就把val变成-val。

求一个s使得val总和变号。

解:分步来做。发现那个奇数个1可以变成:每一个1就变一次。

然后把这些物品按照最高位1来分类。从0到61考虑每一类。

我们试图使每一类都与sum异号,这样总和也异号了。

具体来说就是看看这一类的总和,如果同号就把这以一位变成1。

 #include <bits/stdc++.h>

 typedef long long LL;
const int N = ; struct Node {
LL mask, val;
int id, cnt;
inline bool operator < (const Node &w) {
return mask < w.mask;
}
}node[N]; int main() { int n;
LL sum = ;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%lld%lld", &node[i].val, &node[i].mask);
sum += node[i].val;
for(int j = ; j <= ; j++) {
if((node[i].mask >> j) & ) {
node[i].id = j;
}
}
}
if(sum < ) {
for(int i = ; i <= n; i++) {
node[i].val *= -;
}
}
LL ans = ;
for(int i = ; i <= ; i++) {
LL t = ;
for(int j = ; j <= n; j++) {
if(node[j].id != i) {
continue;
}
t += node[j].val;
}
if(t > ) {
ans |= (1ll << i);
for(int j = ; j <= n; j++) {
if((node[j].mask >> i) & ) {
node[j].val *= -;
}
}
}
}
printf("%lld\n", ans);
return ;
}

AC代码

最新文章

  1. CSS3 Animation 帧动画 steps()
  2. ActiveMQ简介
  3. Configure Visual Studio 2013 for debugging .NET framework
  4. Linux Shell 高级编程技巧4----几个常用的shell脚本例子
  5. 01 Node.js简介, 安装&amp;配置
  6. Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)
  7. [大牛翻译系列]Hadoop(9)MapReduce 性能调优:理解性能瓶颈,诊断map性能瓶颈
  8. MySQL通过RPM安装
  9. 在.NET中使用iTextSharp创建/读取PDF报告: Part I [翻译]
  10. 使用Dubbo、JSF等RPC框架时,对于异常的处理
  11. 24.C++- 抽象类(存虚函数)、接口、多重继承
  12. 在linux上构建gitolite
  13. python-mysql驱动64位
  14. Session提要
  15. Java读取excel(兼容03和07格式)
  16. OpenJ_POJ 1058 Guideposts
  17. c++ 判断list是否为空(empty)
  18. nginx 作为反向代理实现负载均衡的例子
  19. 从零开始的Python学习Episode 6——字符串操作
  20. HDU 1045 dfs

热门文章

  1. C++在#include命令中,用〈 〉和“”有什么区别
  2. (转)Android中px与dip,sp与dip等的转换工具类
  3. 在ubuntu下编写python
  4. SpringCloud学习笔记(六):Feign+Ribbon负载均衡
  5. vue组件间通信用例
  6. 面试系列25 dubbo的spi思想是什么
  7. 锋利的Jquery(p的onclick()事件)
  8. [NOIP2019模拟赛][AT2381] Nuske vs Phantom Thnook
  9. JavaScript中对象的3种定义方式
  10. HTML-完美解决父子元素的外边距重叠和高度塌陷问题