【uoj2】 NOI2014—起床困难综合症
http://uoj.ac/problem/2 (题目链接)
题意
给出n个操作包括And,or,xor,求从0~m中的一个数使得经过这些操作后得到的值最大。
Solution
大水题。。贪心由高到低枚举二进制上每一位:这一位为0,经过操作后当前位变为1,那么就把这一位定为0;这一位为1,经过操作后仍然为1,且当前答案加上这一位后不超过m,那么就把这一位定为1;无论是0还是1经过操作后都为0,那么当然是选0,保证答案尽可能小。
细节
数组开小?
代码
// uoj2
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#define MOD 1000000007
#define inf 2147483640
#define LL long long
#define free(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
using namespace std; const int maxn=100010;
struct data {int t,op;}a[maxn];
int bin[31],n,m,x;
char s[10]; int cal(int x,int val) {
for (int i=1;i<=n;i++) {
if (a[i].op==0) val&=a[i].t;
else if (a[i].op==1) val|=a[i].t;
else val^=a[i].t;
}
if (val&x) return 1;
else return 0;
}
int main() {
bin[0]=1;for (int i=1;i<=30;i++) bin[i]=bin[i-1]<<1;
scanf("%d%d",&n,&m);
char s[10];
for (int i=1;i<=n;i++) {
scanf("%s%d",s,&a[i].t);
if (s[0]=='A') a[i].op=0;
else if (s[0]=='O') a[i].op=1;
else a[i].op=2;
}
int l=30,ans=0;
if (m!=0) {
for (;bin[l]>m;l--);
for (int i=l;i>=0;i--) {
if (cal(bin[i],0)) continue;
else if (cal(bin[i],bin[i]) && ans+bin[i]<=m) ans+=bin[i];
}
}
for (int i=1;i<=n;i++) {
if (a[i].op==0) ans&=a[i].t;
else if (a[i].op==1) ans|=a[i].t;
else ans^=a[i].t;
}
printf("%d",ans);
return 0;
}
【uoj2】 NOI2014—起床困难综合症的更多相关文章
- BZOJ3668/UOJ2 [NOI2014]起床困难综合症
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 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的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...
- BZOJ 3668: [Noi2014]起床困难综合症【贪心】
3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2326 Solved: 1305[Submit][St ...
- Luogu 睡觉困难综合征 ([NOI2014]起床困难综合症)
一.[NOI2014]起床困难综合症 题目描述 网址:https://daniu.luogu.org/problemnew/show/2114 大意: 有一条链,链上每一个节点包含一个位运算f 与 一 ...
- P2114 [NOI2014]起床困难综合症(二进制)
P2114 [NOI2014]起床困难综合症 我们开始设俩数,一个二进制表示全是1,另一个全是0(就是2147483647 和 0 辣) 蓝后跑一遍门 于是最后有4种情况 1->0,1-> ...
- 洛谷P2114 [NOI2014]起床困难综合症
P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...
- bzoj千题计划238:bzoj3668: [Noi2014]起床困难综合症
http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这..一位一位的来就好了呀 #include<cstdio> #include&l ...
- [NOI2014]起床困难综合症(二进制+贪心)
题目 [NOI2014]起床困难综合症 做法 先用全\(0\)和全\(1\)去运行一下,再在满足\(m\)的限制下,贪心地从高位到低位选择即可
随机推荐
- Saltstack-进阶篇
查看minion端的文件内容 [root@linux-node2 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 1 ...
- C# 改变无边框窗体的尺寸大小
以下代码为修改窗体尺寸的代码: const int HTLEFT = 10; ; ; ; ; ; const int HTBOTTOMLEFT = 0x10; ; protected override ...
- Go 命令之 godep
本文参考:http://www.cnblogs.com/me115/p/5528463.html#h20 http://studygolang.com/articles/4385 关于Godep 发现 ...
- CLR Profiler
检查c#代码内存泄露工具-CLR Profiler 大家都知道.net有一套自己的内存(垃圾)回收机制,除非有一些数据(方法)长期占有内存不随着垃圾回收功能而释放内存,这样就造成了我们经常说的内存泄露 ...
- An Introduction to Interactive Programming in Python (Part 1) -- Week 2_2 练习
#Practice Exercises for Logic and Conditionals # Solve each of the practice exercises below. # 1.Wri ...
- 异步编程 In .NET(转)
转自:http://www.cnblogs.com/jesse2013/p/Asynchronous-Programming-In-DotNet.html 概述 在之前写的一篇关于async和awai ...
- 北京联想招聘-Android Framework高级工程师(7-10年) 加入qq 群:220486180 或者直接在此 留言咨询
Job ID #: 45038 Position Title: Android Framework高级工程师 Location: CHN-Beijing Functional Area: Resear ...
- [CareerCup] 4.8 Contain Tree 包含树
4.8 You have two very large binary trees: Tl, with millions of nodes, and T2, with hundreds of nodes ...
- 20135202闫佳歆--week 8 进程的切换和系统的一般执行过程--学习笔记
此为个人笔记存档 week 8 进程的切换和系统的一般执行过程 一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很 ...
- 20145215《Java程序设计》第1周学习总结
20145215<Java程序设计>第一周学习总结 教材学习内容总结 本周先学习了最基本的java环境的搭建. 首先从官网上下载了jdk(jdk与jre的区别在于如果只需要运行一个开发好的 ...