起床困难综合征 bzoj-3668 Noi-2014

题目大意题目链接

注释:略。


想法:Noi考这题...联赛T1难度....

我们将每个门上的数二进制拆分。

发现:当前位的操作可能直接确定了当前位的数字。

即:如果当前位上是0,操作是&,那么这一位无论开始的数是多少,都会变成1。同理如果当前位是1,操作是|,那么这位一定会变成1。

然而如果当前操作和位上的数不能直接确定当前的数,那么我们发现当前的数一定是由初始给定的数确定的。

也就是说我们维护一个数,这个数二进制拆分后,每一位可能是0、1、x和x'。如果是0或1就表示当前位已经被完全确定了。

如果是x表示当前位和初始位相等,x'表示相反。

把所有的门都枚举完了之后,我们看最终的数。

从高位往低位枚举,如果是0或1,那自然不必说。

如果是x',就让初始值这位是0即可,答案显然优

如果是x,判断一下当前剩下的值有没有把这位变成1大。如果有,就变,并将当前值减去当前位,反之枚举下一位。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100010
#define M 35
using namespace std;
int s[N][M]; char opt[N][10];
int a[N],mdl[M];
inline void dvd(int x,int idx)
{
while(x)
{
s[idx][++s[idx][0]]=x&1;
x>>=1;
}
}
int main()
{
int n,m; cin >> n >> m ; for(int i=1;i<=n;i++)
{
scanf("%s%d",opt[i]+1,&a[i]);
dvd(a[i],i);
}
for(int i=1;i<=30;i++) mdl[i]=3;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=30;j++)
{
if(opt[i][1]=='A') if(!s[i][j]) mdl[j]=0;
else if(opt[i][1]=='O') if(s[i][j]) mdl[j]=1;
else
{
if(s[i][j])
{
if(mdl[j]==4) mdl[j]=3;
else if(mdl[j]==3) mdl[j]=4;
else if(mdl[j]==1) mdl[j]=0;
else mdl[j]=1;
}
}
}
}
int ans=0;
for(int i=30;i;i--)
{
if(mdl[i]==3)
{
if(m>=(1<<(i-1)))
{
m-=(1<<(i-1));
mdl[i]=1;
}
else mdl[i]=0;
}
else if(mdl[i]==4) mdl[i]=1;
}
for(int i=30;i>=1;i--)
{
ans+=mdl[i]*(1<<(i-1));
}
printf("%d\n",ans);
return 0;
}

小结:说起来挺麻烦但是想起来贼简单,水到渠成。

[bzoj3668][Noi2014]起床困难综合症_暴力的更多相关文章

  1. bzoj3668: [Noi2014]起床困难综合症

    从高位到低位枚举期望的应该是ans最高位尽量取一.如果该数最高位为o的话能够取得1直接更新ans否则判断该位取1是否会爆m不会的话就加上. #include<cstdio> #includ ...

  2. bzoj千题计划238:bzoj3668: [Noi2014]起床困难综合症

    http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这..一位一位的来就好了呀 #include<cstdio> #include&l ...

  3. [Bzoj3668][Noi2014]起床困难综合症(位运算)

    3668: [Noi2014]起床困难综合症 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2612  Solved: 1500[Submit][St ...

  4. [BZOJ3668] [Noi2014] 起床困难综合症 (贪心)

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

  5. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症

    来自FallDream的博客,未经允许,请勿转载,谢谢. 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综 ...

  6. 【BZOJ】3668: [Noi2014]起床困难综合症(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3668 这题很简单.............. 枚举每一位然后累计即可.. QAQ,第一次以为能1A, ...

  7. BZOJ3668: [Noi2014]起床困难综合症(贪心 二进制)

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2708  Solved: 1576[Submit][Status][Discuss] Descript ...

  8. BZOJ3668 [Noi2014]起床困难综合症 【贪心】

    题目 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

  9. [bzoj3668][Noi2014][起床困难综合症] (按位贪心)

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

随机推荐

  1. [Usaco2018 Open]Milking Order

    Description Farmer John的N头奶牛(1≤N≤10^5),仍然编号为1-N,正好闲得发慌.因此,她们发展了一个与Farmer John每天早上为她们挤牛奶的时候的排队顺序相关的复杂 ...

  2. EasyUI系列学习(十)-Tabs(选项卡)

    一.创建组件 <div class="easyui-tabs" style="width:500px;height:250px"> <div ...

  3. c++利用jsoncpp libcurl 构造http 包(原)

    我们手游要接入uc九游进行测试,要用http向uc那边的sdk 服务器post  json数据. 虽然他们提供了php,java还有c#的服务端demo,但是我们服务器是C++写的,我实在不想中间再转 ...

  4. android 蓝牙开发---与蓝牙模块进行通讯 基于eclipse项目

      2017.10.20 之前参加一个大三学长的创业项目,做一个智能的车锁App,用到嵌入式等技术,App需要蓝牙.实时位置等技术,故查了几篇相关技术文章,以此参考!             //先说 ...

  5. Android PopupWindow使用时注意

    项目中使用PopupWindown出现的坑 1.部分设备,PopWindow在Android4.0后版本,出现NullPointerException调用以下方法可解决, fixPopupWindow ...

  6. 本地调试hbase

    需求说明 如果要本地调试Hbase程序,那么可以用本地连接集群的方式 配置文件 在maven里,配置文件cluster.properties放在target/classes里 cluster.prop ...

  7. HDU_3591_(多重背包+完全背包)

    The trouble of Xiaoqian Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  8. Linux下ifconfig不显示ip地址问题总结

    问题一:ifconfig之后只显示lo,没有看到eth0 ? eth0设置不正确,导致无法正常启动,修改eth0配置文件就好 ubuntu 12.04的网络设置文件是/etc/network/inte ...

  9. Jmeter在windows上安装和环境配置

    一.Jmeter简单介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具.它可以用于测试静态和动态资源,例如静态文件.Java小服务程序.CGI 脚本.Java 对象.数 ...

  10. vue-router + axios token登录状态认证

    vue项目中登录状态判断往往基于jwt认证,我们可以采用判断本地是否存在token,及token是否过期或token值错误 1.利用vue-router 钩子函数判断本地是否存在token impor ...