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语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...
随机推荐
- [LeetCode][Facebook面试题] 通配符匹配和正则表达式匹配,题 Wildcard Matching
开篇 通常的匹配分为两类,一种是正则表达式匹配,pattern包含一些关键字,比如'*'的用法是紧跟在pattern的某个字符后,表示这个字符可以出现任意多次(包括0次). 另一种是通配符匹配,我们在 ...
- intellij idea 破解补丁激活
一.说明 idea激活可以用JetBrains account,Activation Code注册码或者填License server网址,使用注册码的方式可以参考lanyun提供的注册码,但是有效时 ...
- PHP把数据库数据导入Excel
<?php function xlsBOF() { echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); return; ...
- 32岁白发菜鸟拿2.6万年薪苦熬10年 NBA首秀便惊艳世人 科比书豪纷纷为他点赞
这是一场普通的常规赛——斯台普斯球馆,湖人的赛季第81场.比赛的结果也没什么意外:客场作战的火箭106-99带走胜利.然而,这一场的斯台普斯却成了欢乐的海洋,现场甚至喊出了MVP的呼声,这份赞誉,送给 ...
- Yii2实现读写分离(MySQL主从数据库)
读写分离(Read/Write Splitting). 1.原理: 让主数据库(master)处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库(slave)处理SELE ...
- setTimeOut、setInterval与clearInterval函数
1.setTimeOut 在指定毫秒数后调用函数或计算表达式,函数或计算表达式只执行一次 setTimeout("alert('5 seconds!')",5000) 2.setI ...
- IBM InfoSphere DataStage and QualityStage
Info coms from https://www.ibm.com/support/knowledgecenter/en/SSZJPZ_9.1.0/com.ibm.swg.im.iis.ds.nav ...
- python中的ftplib模块
前言 Python中默认安装的ftplib模块定义了FTP类. ftplib模块相关参数: 加载ftp模块:from ftplib import FTP ftp = FTP()#设置变量ftp.set ...
- %和format 细说
Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题.不信你 ...
- mssql批量刷新多个表的数据
DECLARE @SQL VARCHAR(MAX)SELECT @SQL=ISNULL(@SQL,'')+' UPDATE '+NAME+' SET B=3 WHERE B=2'FROM SYSOBJ ...