CF1148F - Foo Fighters
2024-08-24 19:32:34
题意:你有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代码
最新文章
- CSS3 Animation 帧动画 steps()
- ActiveMQ简介
- Configure Visual Studio 2013 for debugging .NET framework
- Linux Shell 高级编程技巧4----几个常用的shell脚本例子
- 01 Node.js简介, 安装&;配置
- Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)
- [大牛翻译系列]Hadoop(9)MapReduce 性能调优:理解性能瓶颈,诊断map性能瓶颈
- MySQL通过RPM安装
- 在.NET中使用iTextSharp创建/读取PDF报告: Part I [翻译]
- 使用Dubbo、JSF等RPC框架时,对于异常的处理
- 24.C++- 抽象类(存虚函数)、接口、多重继承
- 在linux上构建gitolite
- python-mysql驱动64位
- Session提要
- Java读取excel(兼容03和07格式)
- OpenJ_POJ 1058 Guideposts
- c++ 判断list是否为空(empty)
- nginx 作为反向代理实现负载均衡的例子
- 从零开始的Python学习Episode 6——字符串操作
- HDU 1045 dfs
热门文章
- C++在#include命令中,用〈 〉和“”有什么区别
- (转)Android中px与dip,sp与dip等的转换工具类
- 在ubuntu下编写python
- SpringCloud学习笔记(六):Feign+Ribbon负载均衡
- vue组件间通信用例
- 面试系列25 dubbo的spi思想是什么
- 锋利的Jquery(p的onclick()事件)
- [NOIP2019模拟赛][AT2381] Nuske vs Phantom Thnook
- JavaScript中对象的3种定义方式
- HTML-完美解决父子元素的外边距重叠和高度塌陷问题