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语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...
随机推荐
- emoji表情处理研究
http://blog.csdn.net/qdkfriend/article/details/7576524
- Beagleboneblack的MLO文件干了些啥
Beagleboneblack在启动linux之前还有三个启动阶段: ROM code --> MLO --> u-boot --> kernel 先看看ROM code干了 ...
- Vs2013 agent 安装
1. 在windows 2008 R2上安装vs2013 agents需要满足: 1) .net 3.5 2) sp1补丁包(同windows7 sp1) 2. 安装vs2013 agents 步骤如 ...
- java map转json servlet response
1.手写一个map转json的类 1.1 调用方式 //给前端放回json数据 Map<String, Object> map = new HashMap<>(); map.p ...
- bzoj 2733 平衡树启发式合并
首先对于一个连通块中,询问我们可以直接用平衡树来求出排名,那么我们可以用并查集来维护各个块中的连通情况,对于合并两个平衡树,我们可以暴力的将size小的平衡树中的所有节点删掉,然后加入大的平衡树中,因 ...
- 随机森林(Random Forest)详解(转)
来源: Poll的笔记 cnblogs.com/maybe2030/p/4585705.html 1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Fores ...
- 特征工程(Feature Engineering)
一.什么是特征工程? "Feature engineering is the process of transforming raw data into features that bett ...
- vim 以16进制进行文件编辑
用 vim中二进制文件的编辑是先通过外部程序xxd来把文件dump成其二进制的文本形式,然后就可以按通常的编辑方式对文件进行编辑,编辑完成后再用xxd 转化为原来的形式即可. 可分如下几步进行: (1 ...
- 完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器
其 实关于无线基础知识的内容还是挺多的,但是由于本书侧重于BT4自身工具使用的讲解,若是再仔细讲述这些外围的知识,这就好比讲述DNS工具时还要把 DNS服务器的类型.工作原理及配置讲述一遍一样,哈哈, ...
- Linux 入门记录:四、Linux 系统常用命令
一.日期时间 命令 date 查看.设置当前系统时间: date -u 格林威治时间 date %Y-%m-%d 显示格式化的时间 date -s "23:00" 使用 -s 参数 ...