luogu P2114 [NOI2014]起床困难综合症 位运算 二进制
建议去uoj那里去测,数据比较强
位运算的题目,就得一位一位的分开考虑
然后枚举初始值的最高位是0 是1 的最终攻击
(二进制内)最高位是1肯定比次位是1次次位是1次次次位是1···的大吧,显然
然后贪心O(N)就能过去啦
感觉自己是学傻了,看到n=5w就写了个nlog
情况好像有某一位的初始值是0最终那一位是1,初始值是1,最终那一位也是1的,所以要注意一下
代码:
(咦,好像别人家的代码呀)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <bitset>
#define ll long long
using namespace std;
const int maxn = 1e5 + 7;
int n, m, one, ling, ans, end, cz[maxn], num[maxn];
int read() {
int x = 0, f = 1; char s = getchar();
for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (; s <= '9' && s >= '0'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int check(int ans) {
for (int i = 1; i <= n; ++ i) {
if (cz[i] == 1) {
ans = ans & num[i];
} else if (cz[i] == 2) {
ans = ans | num[i];
} else if (cz[i] == 3) {
ans = ans ^ num[i];
}
}
return ans;
}
int main() {
n = read(), m = read();
for (int i = 1; i <= n; ++ i) {
char s = getchar();
while (s == '\n' || s == ' ') s = getchar();
if (s == 'A') cz[i] = 1;
else if (s == 'O') cz[i] = 2;
else cz[i] = 3;
num[i] = read();
}
one = check((1 << 30) - 1), ling = check(0);
for (int i = 30 ; i >= 0; --i) {
if (!(ling & (1 << i)) && (one & (1 << i)) && (ans + (1 << i) <= m))
ans += 1 << i, end += 1 << i;
else if (ling & (1 << i))
end += 1 << i;
}
cout << end << "\n";
return 0;
}
luogu P2114 [NOI2014]起床困难综合症 位运算 二进制的更多相关文章
- [P2114] [NOI2014]起床困难综合症 (位运算)
题面 传送门:https://www.luogu.org/problemnew/show/P2114 Solution 一道很有意思的位运算题. 要做这一题,我们首先得了解一个很重要的特点 位运算过程 ...
- 洛谷 P2114 [NOI2014]起床困难综合症 位运算
题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...
- luogu 2114 [NOI2014]起床困难综合症 位运算+贪心
感觉这个思路非常巧妙啊~ code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s&qu ...
- [Bzoj3668][Noi2014]起床困难综合症(位运算)
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2612 Solved: 1500[Submit][St ...
- Luogu P2114[NOI2014]起床困难综合症 【贪心/位运算】By cellur925
题目传送门 所以NOI的题现在简单惹? 30分做法:枚举开始的权值,n²过掉. 100分做法:竟然是贪心qwq.因为我们的计算背景是二进制下,所以我们贪心地想让每一位都是1.我们现在需要解决的问题,就 ...
- 洛谷P2114 [NOI2014]起床困难综合症
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- 洛谷 P2114 [NOI2014]起床困难综合症 解题报告
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- P2114 [NOI2014]起床困难综合症(二进制)
P2114 [NOI2014]起床困难综合症 我们开始设俩数,一个二进制表示全是1,另一个全是0(就是2147483647 和 0 辣) 蓝后跑一遍门 于是最后有4种情况 1->0,1-> ...
- BZOJ-3668 起床困难综合症 位运算+贪心
faebdc学长杂题选讲中的题目...还是蛮简单的...位运算写的不熟练... 3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 ...
随机推荐
- OKEX API
本文介绍OKEX API Rest 开始使用 REST,即Representational State Transfer的缩写,是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方 ...
- CH0201 费解的开关 枚举
正解:枚举 解题报告: 入门傻逼题,思维难度不高代码量极小,非常适合上手 然后傻逼的我第二次看这道题的时候依然没想到解法:D 没有办法,就想着写个笔记好歹记录一下以后多复习几次就记着了趴qwq 就是, ...
- XMind思维导图主题操作要点
- 009-spring cloud gateway-过滤器GatewayFilter、GlobalFilter、GatewayFilterChain、作用、生命周期、GatewayFilterFactory内置过滤器
一.概述 在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理. 核心接口:GatewayFilter,GlobalFilter,GatewayFilter ...
- Scala里面如何使用枚举
枚举通常用来定义已知数量的常量,比如月份,星期,季节等等,用过java的人都知道定义枚举的关键字是enum,在scala里面和java有所不同,来看一个完整的例子定义: object EnumTest ...
- [py]flask实现用户cmdb
人最难做到的就是跟自己学习, 总是学习别人的, 沉淀, 过一段时间忘了刚学到的, 在向别人学习, 而非看看自己的沉淀, 殊不知, 世界上最亲近,最默契的人是自己. 用户cmdb功能概述 之前学flas ...
- [LeetCode] 724. Find Pivot Index_Easy tag: Dynamic Programming
Given an array of integers nums, write a method that returns the "pivot" index of this arr ...
- 获取多达 16GB 的 Dropbox 免费空间!
Dropbox官网
- Centos下添加PHP对MSSQL的支持
Leave a reply 其实很少会有连接SQL Server的机会,不过我们公司刚好有个应用需要使用的SQL Server的数据库,所以也知道给LNMP安装MSSQL的扩展. 搜索网上的相关文章一 ...
- 网络编程—代码—TCP网络传输
一.TCP:用字符流传输信息 ------------------------------------------------------------------------------ [用字符流的 ...