Luogu 2114 [NOI2014]起床困难综合症
还挺简单的。
发现这几个二进制运算并不会进位,所以我们从高到低按位贪心,一位一位计算贡献。
发现$2^{30}$刚好大于$1e9$,所以最多只要算29位。
首先算出一个全都是$0$的二进制数和一个全都是$1$的二进制数通过所有的门之后每一位的情况,可以压成两个变量做。
最后贪心的时候先看看这一位取$0$能不能取到$1$,再看看这一位取$1$能不能取到$1$,如果可以就算上消耗$m$的代价取这个$1$。
因为高位取$1$一定比低位取$1$优,所以算出来的一定是最好答案。
一个每一位全都是$1$的二进制数可以通过机器补码的特性写成$-1$。
时间复杂度$O(nlogMaxInt)$。
Code:
#include <cstdio>
#include <cstring>
using namespace std; int n, m, v1, v0; int main() {
// freopen("testdata.in", "r", stdin); scanf("%d%d", &n, &m);
v0 = , v1 = -; for(int i = ; i <= n; i++) {
char op[]; scanf("%s", op);
int now; scanf("%d", &now);
if(op[] == 'A') v1 &= now, v0 &= now;
if(op[] == 'O') v1 |= now, v0 |= now;
if(op[] == 'X') v1 ^= now, v0 ^= now;
} int ans = ;
for(int i = ; i >= ; i--) {
if((v0 >> i) & ) ans += ( << i);
else if(((v1 >> i) & ) && ( << i) <= m) m -= ( << i), ans += ( << i);
} printf("%d\n", ans);
return ;
}
Luogu 2114 [NOI2014]起床困难综合症的更多相关文章
- luogu 2114 [NOI2014]起床困难综合症 位运算+贪心
感觉这个思路非常巧妙啊~ code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s&qu ...
- luogu P2114 [NOI2014]起床困难综合症 位运算 二进制
建议去uoj那里去测,数据比较强 位运算的题目,就得一位一位的分开考虑 然后枚举初始值的最高位是0 是1 的最终攻击 (二进制内)最高位是1肯定比次位是1次次位是1次次次位是1···的大吧,显然 然后 ...
- Luogu P2114[NOI2014]起床困难综合症 【贪心/位运算】By cellur925
题目传送门 所以NOI的题现在简单惹? 30分做法:枚举开始的权值,n²过掉. 100分做法:竟然是贪心qwq.因为我们的计算背景是二进制下,所以我们贪心地想让每一位都是1.我们现在需要解决的问题,就 ...
- Luogu P2114_[NOI2014]起床困难综合症 贪心
思路:按位贪心. 提交:1次 题解: 可以先处理出对于全$0$串和全$1$串最后每一位的结果.(每一位 从 $0$ $or$ $1$ 变成 $0$ $or$ $1$) 对于每一位,若不能变成$1$,则 ...
- [P2114] [NOI2014]起床困难综合症 (位运算)
题面 传送门:https://www.luogu.org/problemnew/show/P2114 Solution 一道很有意思的位运算题. 要做这一题,我们首先得了解一个很重要的特点 位运算过程 ...
- Luogu 睡觉困难综合征 ([NOI2014]起床困难综合症)
一.[NOI2014]起床困难综合症 题目描述 网址:https://daniu.luogu.org/problemnew/show/2114 大意: 有一条链,链上每一个节点包含一个位运算f 与 一 ...
- bzoj3668: [Noi2014]起床困难综合症
从高位到低位枚举期望的应该是ans最高位尽量取一.如果该数最高位为o的话能够取得1直接更新ans否则判断该位取1是否会爆m不会的话就加上. #include<cstdio> #includ ...
- NOI2014 起床困难综合症
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 225 Solved: 153[Submit][Stat ...
- BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )
之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...
随机推荐
- centos 6 简单安装mysql
yum list installed | grep mysql yum -y remove mysql-libs.i686 yum list installed | grep mysql wget d ...
- volatile关键字及内存可见性
先看一段代码: package com.java.juc; public class TestVolatile { public static void main(String[] args) { T ...
- SOA、微服务与服务网格
SOA架构解析 SOA 全称是: Service Oriented Architecture,中文释义为 “面向服务的架构”,它是一种设计理念,其中包含多个服务, 服务之间通过相互依赖最终提供一系列完 ...
- JDBC小常识
1 JDBC连接数据库6步 Load the JDBC Driver Establish the Database Connection Create a Statement Object Execu ...
- Elasticsearch的过滤查询
声明:我使用的elasticsearch的版本是5.4.0,具体参考下面的链接 https://www.elastic.co/guide/en/elasticsearch/reference/5.4/ ...
- vijos1264:神秘的咒语
描述 身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底. 据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法 ...
- HTML5两个打包工具
AppCan:http://www.appcan.cn/ HBulider:http://www.dcloud.io/
- web聊天相关知识
http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...
- rails表单控件helper
1.form加入HTML属性 <%= form_for(@device, :html => {:method=>"post", :id=>"for ...
- md5加密(2)
package test1; import java.security.MessageDigest; public class MD5Test { //十六进制下数字到字符的映射数组 private ...