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

CF1148F - Foo Fighters相关推荐

  1. 编程中常见的Foo是什么意思

    不管是java,C++,还是PHP,每次都能看到 foo = bar 的例子,这两个单词很恶心,foo查不到字典,bar的解释又让人跟编程联系不上,更弄不清楚这个神秘的foo是个什么关系. 语意不清, ...

  2. 编程中常见的Foo,是什么意思。。

    不管是java,C++,还是PHP,每次都能看到 foo = bar 的例子,这两个单词很恶心,foo查不到字典,bar的解释又让人跟编程联系不上,更弄不清楚这个神秘的foo是个什么关系. 语意不清, ...

  3. 有趣的foo bar

    http://www.cnblogs.com/felicity/archive/2010/11/30/1892100.html 不管是java,C++,还是PHP,每次都能看到 foo = bar 的 ...

  4. 转载:编程中常见的Foo,bar是什么意思

    原始链接:编程中常见的Foo,是什么意思.._xhmz的专栏-CSDN博客_foo是什么意思 编程中常见的Foo,是什么意思.. xhmz 于 2014-07-28 13:08:34 发布  4796 ...

  5. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  6. 苹果广告背景音乐大全【转】

    1.music every day 广告背景音乐(作者是rob simonsen,曲名red) 2.photo every day 广告背景音乐(作者是rob simonsen,曲名red) 3.ww ...

  7. 10.completion_suggester

    文章目录 1. Completion Suggester 简介 2.存储doc文档 2. 查询使用 3. 跳过重复的suggestions 4. Fuzzy queries 4. Regex quer ...

  8. 01.elasticsearch-mapping全面解析

    文章目录 1. es index mapping内容概述 2. field data type 1. keyword类型 1. string.text 分词文本 2. string.keyword 关 ...

  9. ElasticSearch suggester

    Suggesters就是一款基于用于提供的文本给出一些相似性的东西,即在用户输入搜索的过程中,进行自动补全或者纠错. 通过协助用户输入更精准的关键词,提高后续全文搜索阶段文档匹配的程度 POST tw ...

最新文章

  1. 阎崇年:《袁崇焕传》自序
  2. 第十五届全国大学生智能车竞赛线下比赛成绩和奖项
  3. 安装scala之后,命令行中输入scala报错nullpointException
  4. RabbitMQ RPC远程调用模式
  5. Linux操作系统基础解析之(五)——grep命令家族及正则表达式初识
  6. HDU5528 - Count a * b
  7. 论文浅尝 | 混合注意力原型网络的含噪音少样本的关系分类
  8. 【Vue】—动态组件
  9. Spring5的几个新特性
  10. VS编译器中QT版本问题不正确解决方法-Please assign a Qt installation in ‘Qt Project Settings‘.
  11. 地址总线、数据总线、控制总线
  12. python 基于金字塔的图像融合
  13. Hadoop-Hive常用,命令
  14. 一个游戏程序员的学习资料(转)
  15. 一文看懂!百度对话系统PLATO家族
  16. 消息循环中TranslateMessage和Dispatch函数的作用
  17. np.random.normal()的含义及实例
  18. php把字符串变为数组_php把字符串转为数组的方法
  19. 接口保护ESD防静电二极管选择ESDSRVLC05-4
  20. java压缩字符串_Java压缩字符串的方法收集

热门文章

  1. VC下提前注入进程的一些方法1——远线程不带参数
  2. Windows7下配置MinGW+CodeBlocks+OpenCV2.3.1
  3. 图像配准----RANSAC
  4. 【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)
  5. python 累积正态分布函数_为什么机器学习都围绕正态分布进行讨论?
  6. restapi如何传图片_iPhone传照片,不是只能用微信QQ,第二种方法很少人知道哦
  7. python 排序算法 简书_Python---简析八大排序算法
  8. docker 安装oracle_Windows系统下安装Docker,包你满意!
  9. java servlet applet,详解Java Servlet与Applet比较
  10. 搜索进程内存地址_Linux编程 6 (查看进程 ps 及输出风格)