分析:or操作只有在结果的这一位为0的情况下才会强制要求两个数的这一位都为0,其它时候不强求,所以为了最大限度地满足条件,我们先把所有的数的所有位全部变成1,如果p的第i位为0,那么[l,r]的数的第i位都要为0,&一下p就好了.最后检验一下看看是否满足所有条件就可以了。为什么这样做事合法的呢?因为我们之前已经尽可能让它最大限度地满足条件了,某一位更改后可能就不能满足这么多条件了,如果这都不行,那么肯定无解.因为是区间&操作,所以用线段树来优化.

构造题要满足所有的条件,那么就构造出尽可能多地满足条件的,最后检验一下就可以了.

注意:实际操作是|,但是每次进行的操作是&,在合并和修改的时候不要弄混了.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int inf = ( << ) - , maxn = ; int n, m, l[maxn], r[maxn], p[maxn], v[maxn * ], tag[maxn * ], flag[maxn * ];
bool can = true; void build(int o, int l, int r)
{
tag[o] = v[o] = inf;
if (l == r)
return;
int mid = (l + r) >> ;
build(o * , l, mid);
build(o * + , mid + , r);
} void pushup(int o)
{
v[o] = v[o * ] | v[o * + ];
} void pushdown(int o)
{
if (flag[o])
{
flag[o * ] = flag[o * + ] = ;
flag[o] = ;
tag[o * ] &= tag[o];
tag[o * + ] &= tag[o];
v[o * ] &= tag[o];
v[o * + ] &= tag[o];
tag[o] = inf;
}
} void update(int o, int l, int r, int x, int y, int c)
{
if (x <= l && r <= y)
{
tag[o] &= c;
v[o] &= c;
flag[o] = ;
return;
}
pushdown(o);
int mid = (l + r) >> ;
if (x <= mid)
update(o * , l, mid, x, y, c);
if (y > mid)
update(o * + , mid + , r, x, y, c);
pushup(o);
} int query(int o, int l, int r, int x, int y)
{
if (x <= l && r <= y)
return v[o];
pushdown(o);
int mid = (l + r) >> , res = ;
if (x <= mid)
res |= query(o * , l, mid, x, y);
if (y > mid)
res |= query(o * + , mid + , r, x, y);
return res;
} int main()
{
freopen("or1.in", "r", stdin);
freopen("or2.txt", "w", stdout);
scanf("%d%d", &n, &m);
build(, , n);
for (int i = ; i <= m; i++)
{
scanf("%d%d%d", &l[i], &r[i], &p[i]);
update(, , n, l[i], r[i], p[i]);
}
for (int i = ; i <= m; i++)
if (query(, , n, l[i], r[i]) != p[i])
{
can = ;
break;
}
if (can == false)
printf("No\n");
else
{
printf("Yes\n");
for (int i = ; i <= n; i++)
printf("%d ",query(,,n,i,i));
} return ;
}

noip模拟赛 fateice-or的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

  10. CH Round #49 - Streaming #4 (NOIP模拟赛Day2)

    A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...

随机推荐

  1. 洛谷 P3377 模板左偏树

    题目:https://www.luogu.org/problemnew/show/P3377 左偏树的模板题: 加深了我对空 merge 的理解: 结构体的编号就是原序列的位置. 代码如下: #inc ...

  2. 接口管理功能全面增强!EOLINKER EPC 5.0.9版本更新:支持LDAP用户系统、加入更多项目统计图表、强化测试/自动化测试功能等

    EOLINKER EPC(Enterprise Private Cloud 企业私有云产品)已于近期发布5.0.9版本:界面全面改版.支持LDAP用户系统.加入更多项目统计图表.强化测试/自动化测试功 ...

  3. drawable的文件名大写

    drawable的文件名大写导致的R文件消失!!!1

  4. 暴力(python)

    输出由1,2,3,4组成的互不相同且无重复的三位数! #方式一 lst = ['1', '2', '3', '4'] res = [] for i in lst: for j in lst: for ...

  5. 题解报告:hdu 2516 取石子游戏(斐波那契博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2516 Problem Description 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个, ...

  6. SQL SERVER中存储过程IN 参数条件的使用!!!

    正常的传递  @SendStationID='''1'',''2''' 是无效,改用 @SendStationID='1,2,3,003,002' 调用以下的存储过程可以实现in 查询效果 USE [ ...

  7. Android Studio 快捷键整理

    Alt+回车 导入包,自动修正 Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如ge ...

  8. 【译】x86程序员手册02 - 基本的程序模式

    Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines ...

  9. Java 基础入门随笔(2) JavaSE版——关键字、进制转换、类型转换

    1.Java语言-关键字 关键字:被java语言赋予了特殊含义的词,特点是所有的字母都为小写. java涉及到的关键字整理: 用于定义数据类型的关键字 class interface byte sho ...

  10. 您厉害您赚得多:聪明投资者的聊天记录,雪球CEO的21条投资理念

    3星|<您厉害您赚得多>:雪球创始人的投资理念.原则.技巧,及其在雪球上跟一些用户的互动的内容 作者是雪球创始人.CEO,全书基本是作者的一些投资理念+作者在雪球上跟用户的互动的内容,还有 ...