ZUFEOJ 2147 07染色带谜题
2147: 07染色带谜题
时间限制: 1 Sec 内存限制: 128 MB
提交: 170 解决: 21
[提交][状态][讨论版][Edit] [TestData]
题目描述
输入
输出
样例输入
2 2 0
2 2 1
0 2 1
3 3 3
0 2 1
1 3 2
2 3 0
样例输出
1
1
3
首先吐槽一下题目,第一句,应该是$n+1$长度的吧。。。直接上了个线段树区间覆盖,写完一直$WA$,对拍去了,发现标程是错的,数据也是错的。搞笑的是这题是$2014$年学校校赛的题目,当时数据就是错的,但是现场有人$AC$。。现在我把数据改正确了,历史翻案。
#include<map>
#include<set>
#include<ctime>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std; int n,m,k;
int L[],R[],s[];
int p[],sz;
int t[],y[];
set<int>r; int get(int x)
{
int left =,right =sz,res;
while(left<=right)
{
int mid = (left + right)/;
if(p[mid]>x) right = mid-;
else if(p[mid]==x) res=mid,right = mid-;
else left = mid+;
}
return res;
} void pushDown(int rt)
{
if(t[rt]==-) return ;
t[*rt] = t[rt];
t[*rt+] = t[rt];
t[rt]=-;
} void update(int LL,int RR,int col,int l,int r,int rt)
{
if(LL<=l&&r<=RR)
{
t[rt]=col;
return ;
} int m = (l+r)/;
pushDown(rt);
if(LL<=m) update(LL,RR,col,l,m,*rt);
if(RR>m) update(LL,RR,col,m+,r,*rt+);
} void dfs(int l,int r,int rt)
{
if(l==r)
{
y[t[rt]]=;
return ;
}
int m = (l+r)/;
pushDown(rt);
dfs(l,m,*rt);
dfs(m+,r,*rt+);
} void build(int l,int r,int rt)
{
if(l==r)
{
t[rt]=;
return ;
} t[rt]=-;
int m = (l+r)/;
build(l,m,*rt);
build(m+,r,*rt+);
} int main()
{
//freopen("D:\\out.txt","w",stdout);
while(~scanf("%d%d%d",&n,&m,&k))
{
sz=;
memset(t,,sizeof t); memset(y,,sizeof y); r.clear(); for(int i=;i<=k;i++)
{
scanf("%d%d%d",&L[i],&R[i],&s[i]);
if(r.count(L[i])==) sz++, p[sz]=L[i] , r.insert(L[i]);
if(r.count(R[i])==) sz++, p[sz]=R[i] , r.insert(R[i]); if(r.count(L[i]-)==&&L[i]->=) sz++, p[sz]=L[i]- , r.insert(L[i]-);
if(r.count(L[i]+)==&&L[i]+<=n) sz++, p[sz]=L[i]+ , r.insert(L[i]+); if(r.count(R[i]-)==&&R[i]->=) sz++, p[sz]=R[i]- , r.insert(R[i]-);
if(r.count(R[i]+)==&&R[i]+<=n) sz++, p[sz]=R[i]+ , r.insert(R[i]+);
} if(r.count()==) sz++, p[sz]= , r.insert();
if(r.count(n)==) sz++, p[sz]=n , r.insert(n); sort(p+,p++sz); build(,sz,);
for(int i=;i<=k;i++) L[i] = get(L[i]), R[i] = get(R[i]);
for(int i=;i<=k;i++) update(L[i],R[i],s[i],,sz,); dfs(,sz,);
int ans=;
for(int i=;i<=;i++) ans=ans+y[i];
printf("%d\n",ans); }
return ;
}
ZUFEOJ 2147 07染色带谜题的更多相关文章
- BZOJ 2303 方格染色(带权并查集)
要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...
- 和我一起打造个简单搜索之Logstash实时同步建立索引
用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...
- 2019.9.27PHP基础
PHP 基础语法规范: 1 <?php 开头 ?>结尾 2 php可以单独存在也可以和html等结合使用 3后缀名一般以.php结尾 php4,php5,php6,php7,phtml. ...
- UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)
d.给定一个图,判断是不是二分图. s.可以交叉染色,就是二分图:否则,不是. 另外,此题中的图是强连通图,即任意两点可达,从而dfs方法从一个点出发就能遍历整个图了. 如果不能保证从一个点出发可以遍 ...
- 2021.07.17 P4170 染色(区间DP)
2021.07.17 P4170 染色(区间DP) [P4170 CQOI2007]涂色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.目标状态可以由哪些状态转移过来. ...
- 2021.07.17 P3177 树上染色(树形DP)
2021.07.17 P3177 树上染色(树形DP) [P3177 HAOI2015]树上染色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.dp思想是需要什么,维护 ...
- 2018.07.01 BZOJ3295: [Cqoi2011]动态逆序对(带修主席树)
3295: [Cqoi2011]动态逆序对 **Time Limit: 10 Sec Memory Limit: 128 MB Description 对于序列A,它的逆序对数定义为满足i<j& ...
- 2018.07.01洛谷P2617 Dynamic Rankings(带修主席树)
P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...
- 解了这14道C语言谜题后,所有人都失声了!我来带你深入了解C!
本文展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且有相当的一些例子可能是我们日常工作可能会见得到的.通过这些迷题,希望你能更了解C语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...
随机推荐
- 图论:Prufer编码-Cayley定理
BZOJ1430:运用Cayley定理解决树的形态统计问题 由Prufer编码可以引申出来一个定理:Cayley 内容是不同的n结点标号的树的数量为n^(n-2) 换一种说法就是一棵无根树,当知道结点 ...
- Elasticsearch 5.6.5 安装教程
下载地址 https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-5 安装环境 centos6.5 , jdk1.8 ...
- 【Foreign】Bumb [模拟退火]
Bumb Time Limit: 20 Sec Memory Limit: 512 MB Description Input Output Sample Input 4 1 5 1 4 Sample ...
- 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在一个5×5的棋盘上有12个白色的 ...
- 将四个按钮放入一个父控件的好处:方便移动,只需要改变父控件的y值,就可移动四个按钮
将四个按钮放入一个父控件的好处:方便移动,只需要改变父控件的y值, 就可移动四个按钮 https://www.evernote.com/shard/s227/sh/78 ...
- 代码回滚:Reset、Checkout、Revert 的选择
git reset.git checkout 和 git revert 是你的 Git 工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文 ...
- Spring Boot:定制自己的starter
在学习Spring Boot的过程中,接触最多的就是starter.可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boo ...
- Python第三方库jieba(中文分词)入门与进阶(官方文档)
jieba "结巴"中文分词:做最好的 Python 中文分词组件 github:https://github.com/fxsjy/jieba 特点 支持三种分词模式: 精确模式, ...
- Exploring Qualcomm's TrustZone Implementation
转自 http://bits-please.blogspot.com/2015/08 (需要FQ, 狗日的墙) In this blog post, we'll be exploring Qua ...
- python实战===2017年30个惊艳的Python开源项目 (转)
本文转自:http://www.sohu.com/a/216723120_115128 摘要:本文来自Mybridge,介绍了过去一年里30个惊艳的Python开源项目.点击每一个都可以在GitHub ...