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语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...
随机推荐
- 【网络】RFC1245-OSPF Protocol Analysis
OSPF协议分析 摘要 这是OSPF协议的两份报告中的第一份,这些报告是因特网工程指导组要求的,是用来将一个因特网协议写成标准草案的.OSPF是一个TCP/IP协议族中的一个的路由协议,被设计用于一个 ...
- Eclipse中安装Tomcat
1. 下载Tomcat并安装: http://tomcat.apache.org/download-60.cgi 2. 下载最新Eclipse的Tomacat插件: http://www.eclips ...
- JNLP Slave connection error解决办法
Replace in jnlp-file <argument>-workDir</argument> <argument /> with <argume ...
- Network(POJ3694+边双连通分量+LCA)
题目链接:http://poj.org/problem?id=3694 题目: 题意:给你一个n个点m条边的无向连通图,进行q次操作,每次操作在u和v之间加一条边,问每次操作之后“桥”的数量. 思路: ...
- 线程,JSP,Servlet面试题
线程编程方面 60.java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runna ...
- Linux NAPI/非NAPI
本文主要介绍二层收包流程,包括NAPI与非NAPI方式: NAPI:数据包到来,第一个数据包产生硬件中断,中断处理程序将设备的napi_struct结构挂在当前cpu的待收包设备链表softnet_d ...
- 机器学习开源项目精选TOP30
本文共图文结合,建议阅读5分钟. 本文为大家带来了30个广受好评的机器学习开源项目. 640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1 最近,Mybridge发布了 ...
- Javascript正则表达式详细讲解和示例,通俗易懂
正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式 ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6150 Vertex Cover 二分图,构造
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6150 题意:"最小点覆盖集"是个NP完全问题 有一个近似算法是说—每次选取度数最大 ...
- Python爬虫音频数据
一:前言 本次爬取的是喜马拉雅的热门栏目下全部电台的每个频道的信息和频道中的每个音频数据的各种信息,然后把爬取的数据保存到mongodb以备后续使用.这次数据量在70万左右.音频数据包括音频下载地址, ...