题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3668

一开始想着倒序推回去看看这一位能不能达到来着,因为这样好中途退出(以为不这样会T);

没想到正着的0和1可能出现一样的结果...

这是WA代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=1e5+;
int n,m,t[maxn],ans,cnt[],op[maxn],c;
char ch[];
int cal(int x)
{
memset(cnt,,sizeof cnt);
int ret=;
while(x)cnt[++ret]=x%,x/=;
return ret;
}
int main()
{
scanf("%d%d",&n,&m);
int mx=;
for(int i=;i<=n;i++)
{
scanf("%s%d",&ch,&t[i]);
if(ch[]=='A')op[i]=;//&
if(ch[]=='O')op[i]=;//|
if(ch[]=='X')op[i]=;//^
mx=max(mx,t[i]);
}
int k=cal(mx);
for(int i=k;i;i--)
{
// if(ans+(1<<(i-1))>m)continue;
bool flag=;int nw=;
for(int j=n;j;j--)
{
cal(t[j]);
if(op[j]==&&nw==&&cnt[i]==){flag=;break;}
if(op[j]==&&nw==&&cnt[i]==){flag=;break;}
if(op[j]==)nw^=cnt[i];
}
if(!flag)
{
if(nw==)ans+=(<<(i-));
else if(c+(<<(i-))<=m)c+=(<<(i-)),ans+=(<<(i-));
}
}
printf("%d",ans);
return ;
}

而且 i 不是从 mx 的最高位开始而是从 m 的最高位开始的...

也不用中途退出什么的,因为位数没有那么大;

可以先用0得到一个 ans 作为底线,然后看看能不能通过某些位上放1让答案更大。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=1e5+;
int n,m,t[maxn],ans,cnt[],op[maxn],c;
char ch[];
int cal(int x)
{
memset(cnt,,sizeof cnt);
int ret=;
while(x)cnt[++ret]=x%,x/=;
return ret;
}
int main()
{
scanf("%d%d",&n,&m);
int mx=;
for(int i=;i<=n;i++)
{
scanf("%s%d",&ch,&t[i]);
if(ch[]=='A')op[i]=,ans&=t[i];//&
if(ch[]=='O')op[i]=,ans|=t[i];//|
if(ch[]=='X')op[i]=,ans^=t[i];//^
}//得到输入0后的ans
int k=cal(m);k--;
for(int i=k;i>=;i--)
{
int tmp=(<<i);
if(tmp>m||(ans&(<<i)))continue;
for(int j=;j<=n;j++)
{
if(op[j]==)tmp&=t[j];
if(op[j]==)tmp|=t[j];
if(op[j]==)tmp^=t[j];
}
if(tmp&(<<i))ans|=(<<i),m-=(<<i);
}
printf("%d",ans);
return ;
}

bzoj3668 [Noi2014]起床困难综合症——贪心的更多相关文章

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

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

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

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

  3. BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )

    之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...

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

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

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

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

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

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

  7. 【bzoj3668】[Noi2014]起床困难综合症 贪心

    原文地址:http://www.cnblogs.com/GXZlegend/p/6797090.html 题目描述 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神 ...

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

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

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

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

随机推荐

  1. Spring Boot Reactive Streams

    1 响应式编程规范 目标:provide a standard for asynchronous stream processing with non-blocking backpressure ht ...

  2. [NOIP2003] 提高组 洛谷P1041 传染病控制

    题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...

  3. Codeforces932D. Tree

    n<=400000个在线操作:树上插入一个某点权.父亲为某点的点:查询这样的最长点序列:序列的某个数必须是上一个数的祖先之一:序列的点权和不能超过x:序列的某个点的点权必须不小于上一个,且相邻两 ...

  4. Codeforces 660E Different Subsets For All Tuples【组合数学】

    看了官方题解+q神的讲解才懂... 智商问题.. 讲道理..数学真的比脱单难啊... 题目链接: http://codeforces.com/problemset/problem/660/E 题意: ...

  5. http://www.ybtsoft.com/

    http://www.ybtsoft.com/ 可视化作流建模 http://www.ybtsoft.com/t3/bpm/ 慧都控件网 写一本关于互联网商业变现的书

  6. [React] Use the Fragment Short Syntax in Create React App 2.0

    create-react-app version 2.0 added a lot of new features. One of the new features is upgrading to Ba ...

  7. Mybatis加入Ehcache支持

    1.Mybatis默认的缓存配置 MyBatis 包括一个很强大的查询缓存特性,它能够很方便地配置和定制. Mybatis缓存包括全局的缓存和局部的缓存.全局的缓存能够讲主配置文件的setting属性 ...

  8. 一起talk C栗子吧(第一百二十一回:C语言实例--线程知识体系图)

    各位看官们.大家好,上一回中咱们说的线程属性的样例.这一回咱们说的样例是:线程知识体系图.闲话休提.言归正转. 让我们一起talk C栗子吧! 我们在前面的章回中介绍了与线程相关的知识,在今天的章回中 ...

  9. hdoj2680 Choose the best route

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  10. NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗

    有些linq,好不容易写出来,正想扬眉吐屁一番,不料用NHibernate一执行,却报错,说是不支持,我靠. 只好捏着鼻子写一大段sql,交给它.这种直接执行SQL的情况,我看我同事写的,全部都是返回 ...