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代码
CF1148F - Foo Fighters的更多相关文章
- Foo Fighters CodeForces - 1148F
大意: 给定$n$个二元组$(val_i,mask_i)$. 保证$\sum val_i$不为$0$. 要求选择一个数$s$, 对于每个二元组$(val_i,mask_i)$, 若$s\& m ...
- Codeforces 1148F Foo Fighters 贪心
题意:给你若干个数对,每个数对有两个属性,一个属性是权值,一个属性是位标志,假设这些数对的的权值和是sum,你可以选择一个二进制数s,与所有的数对的位标志按位与,如果按位与之后的位标志有奇数个1,那么 ...
- Using zend-paginator in your Album Module
Using zend-paginator in your Album Module TODO Update to: follow the changes in the user-guide use S ...
- Haskell高阶函数
Haskell functions can take functions as parameters and return functions as return values. A function ...
- elasticsearch Suggester实现搜索建议(八)
Completion Suggester 智能提示 { "settings": { }, "mappings": { "doc": { &q ...
- Codeforces Global Round 3
Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...
- CouchDB的简单使用
一.安装CouchDB 到官网下载CouchDB,在windows下安装CouchDB较为简单,略过. 安装完后,确认CouchDB在运行,然后在浏览器访问http://127.0.0.1:5984/ ...
- (译)TDD(测试驱动开发)的5个步骤
原文:5 steps of test-driven development https://developer.ibm.com/articles/5-steps-of-test-driven-deve ...
- 编程中Foo, Bar 到底什么意思?
1 前言 在很多国外计算机书本和一些第三份开源软件的Demo中经常用到两个英文单词Foo,Bar.这到底是什么意思呢?从步入屌丝界的IT生活见到这两个单词到现在我还是不知道这两个单词的真正含义,今天有 ...
随机推荐
- SQL Server SQLFetch()
{ /* 摘要 SQLFetch从结果集中提取下一个数据行集, 并返回所有绑定列的数据. 语法 C++ SQLRETURN SQLFetch( SQLHSTMT StatementHandle ...
- Flask扩展 -- flask-mail
电子邮件是最常用的通信方式之一.虽然Python标准库中的smtplib包可用在Flask程序中发送电子邮件,但包装了smtplib的Flask-Mail扩展能更好的和Flask集成. 1.安装Fla ...
- thinkphp 标签嵌套
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套. 直线电机价格 系统内置的标签中,volist.switch.if.elseif.else.foreach.compare(包括所有的比 ...
- webpack官方文档学习
一.webpack是什么? webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 二.安装 前提条 ...
- VS2010-MFC(常用控件:图片控件Picture Control)
转自:http://www.jizhuomi.com/software/193.html 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示 ...
- System.Web.Mvc.HttpGetAttribute.cs
ylbtech-System.Web.Mvc.HttpGetAttribute.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, P ...
- c++中变量、变量名、变量地址、指针、引用等含义
首先了解内存,内存就是一排房间,编号从0开始,0,1,2,3,4,5...... 房间里面一定要住人,新人住进去了,原来的人就走了:不管你住不住,里面都有人. 编号就是地址.里面的人就是内容,为了我们 ...
- 夏令营501-511NOIP训练16——数字转换
传送门:QAQQAQ 题意:如果一个数x的约数和(不包括它本身,下同)比它本身小,那么x可以变成它的约数和:如果对于某个y>x且y的约数和为x,那么x也可以变成y.例如,4可以变为3,1可以变为 ...
- shell常用命令及正则辅助日志分析统计
https://www.cnblogs.com/wj033/p/3451618.html 正则日志分析统计 3 grep 'onerror' v3-0621.log | egrep -v '(\d ...
- Java之实现多线程
保证同步的几种方法: (1) 同步方法,synchronized 关键字修饰方法.由于Java中的每个对象都有一个内置锁,当用该关键词修饰时,内置锁会保护整个方法.在调用该方法前,需要获得内置锁,否则 ...