CF1148F - Foo Fighters

news/2024/7/7 20:58:39

CF1148F - Foo Fighters

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

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

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

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

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

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

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

 1 #include <bits/stdc++.h>
 2 
 3 typedef long long LL;
 4 const int N = 300010;
 5 
 6 struct Node {
 7     LL mask, val;
 8     int id, cnt;
 9     inline bool operator < (const Node &w) {
10         return mask < w.mask;
11     }
12 }node[N];
13 
14 int main() {
15     
16     int n;
17     LL sum = 0;
18     scanf("%d", &n);
19     for(int i = 1; i <= n; i++) {
20         scanf("%lld%lld", &node[i].val, &node[i].mask);
21         sum += node[i].val;
22         for(int j = 0; j <= 61; j++) {
23             if((node[i].mask >> j) & 1) {
24                 node[i].id = j;
25             }
26         }
27     }
28     if(sum < 0) {
29         for(int i = 1; i <= n; i++) {
30             node[i].val *= -1;
31         }
32     }
33     LL ans = 0;
34     for(int i = 0; i <= 61; i++) {
35         LL t = 0;
36         for(int j = 1; j <= n; j++) {
37             if(node[j].id != i) {
38                 continue;
39             }
40             t += node[j].val;
41         }
42         if(t > 0) {
43             ans |= (1ll << i);
44             for(int j = 1; j <= n; j++) {
45                 if((node[j].mask >> i) & 1) {
46                     node[j].val *= -1;
47                 }
48             }
49         }
50     }
51     printf("%lld\n", ans);
52     return 0;
53 }
AC代码

 

转载于:https://www.cnblogs.com/huyufeifei/p/10983138.html


http://lihuaxi.xjx100.cn/news/235553.html

相关文章

iOS中几种定时器

一、NSTimer 1. 创建方法 NSTimer *timer [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:selector(action:) userInfo:nil repeats:NO];TimerInterval : 执行之前等待的时间。比如设置成1.0&#xff0c;就代表1秒后执行方法target : 需要执行方法的对象…

Ubuntu 上创建常用磁盘阵列

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出&#xff0c;最初是为了组合小的廉价磁盘来代替大的昂贵磁盘&#xff0c;同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价…

活体检测-用照片来做人脸识别可行吗?

随着科技的迅速发展&#xff0c;智能化也越来越发达&#xff0c;并慢慢进入到我们日常生活中来了。如考勤 早期是人工记录&#xff0c;签到&#xff0c;然后是打卡&#xff0c;刷卡&#xff0c;再到指纹。现在已经发展到更加先进的人脸识别考勤了。 卡可以代打&#xff0c;代刷…

ios关于用xib创建的cell 自动返回cell的高度问题!

1 设置tableView的属性 self.tableView.rowHeight UITableViewAutomaticDimension; self.tableView.estimatedRowHeight 44.0; // 设置为一个接近“平均”行高的值 2 cell要约束好&#xff0c;要能够让cell知道自己的高度根据哪个控件计算就可以&#xff08;不明白看下图&…

世界最大规模3D打印混凝土步行桥在上海 落成启用

1月12日&#xff0c;世界最大规模3D打印混凝土步行桥在沪落成启用&#xff0c;人们站在桥体上欢庆该新兴建筑体的诞生。 中新网上海1月13日电 (记者 于俊)一座体态优雅、形似飘带的水泥桥12日横跨于上海宝山智慧湾的小河之上&#xff0c;宣告全球最大规模混凝土3D打印步行桥落成…

运维监控基础

一、运维监控基础1.报告网路/系统/业务运行状况2.提前发现被监控设备的问题 二、监控的资源类别硬件监控&#xff1a;CPU、内存、磁盘I/O系统监控&#xff1a;存活状态、进程数、用户数、磁盘使用率网络监控&#xff1a;故障点监测、出站流量、入站流量应用监控&#xff1a;Web…

Swift 3.0 预告:将 Objc 库转换成更符合 Swift 语法风格的形式

转自&#xff1a;swiftcafe Swift 3.0 更新越来越临近&#xff0c;这次更新会给我们带来很多实用的内容&#xff0c;比如对 Objc 库的迁移&#xff0c;会更符合 Swift 的语法风格。用过之前版本的 Swift&#xff0c;我们会发现很多 Objc 库的方法名称其实还是以 Objc 的风格来命…

第十章:控制文件

控制文件管理[大纲] 控制文件的结构  控制文件的复用  控制文件的重建  控制文件的管理一、数据库控制文件控制文件中记载了数据库的物理结构等重要的数据库信息&#xff0c;如数据文件和日志文件信息。控制文件是用 于维护数据库完整性的重要文件。Oracle 正是使用…