UVALive 6911 Double Swords (Set,贪心,求区间交集)
补:华中VJ这个题目很多标程都不能AC了,包括我下面原本AC了的代码,再交就WA掉了,感觉是样例有问题呢……
首先左边的是必须要选的,然后右边的需要注意,有些区间是可以舍掉的。1、区间里有两个不同的A。 2、区间里有一个A,而且这个A不是这个区间对应的A。
这个题我一开始错在了第2个判定条件上,我定义的id记录的是最后一个出现位置,不能进行判断,所以干脆在结构体里记录了他对应的A值。
舍掉后留下的区间,可以按照区间左边界排序,然后求交集即可。
总体来说,贪心的思想还是不难的,就是有一些细节需要注意。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
using namespace std;
const int N = 1e5+;
const int M = 1e6+;
set<int>st;
set<int>:: iterator it;
map<int,int> id;
struct Edge {
int l,r,A,ok;
void Set(int x,int y,int a) {
l = x;
r = y;
A = a;
ok = ;
}
} e[N];
int sum[M];
bool cmp(Edge a,Edge b) {
if(a.l != b.l) return a.l < b.l;
return a.r < b.r;
}
int main() {
// freopen("F.in.cpp","r",stdin);
int T,n,a,b,c,ans,ca=,Max,Min,cnt;
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
st.clear();
id.clear();
Max = -;
Min = 1e8;
for(int i = ; i <= n; i++) {
scanf("%d%d%d",&a,&b,&c);
id[a] = i;
e[i].Set(b,c,a);
st.insert(a);
Max = max(max(Max,a),e[i].r);
Min = min(min(Min,a),e[i].l);
}
cnt = ;
for(int i = Min-; i <= Max; i++) {
if(id[i]) cnt++;
sum[i] = cnt;
}
ans = st.size();
// printf("ans1 = %d\n",ans);
for(int i = ; i <= n; i++) {
if(sum[e[i].r] - sum[e[i].l-] == ) {
it = st.lower_bound(e[i].l);
if(*it != e[i].A) e[i].ok = ;
}
if(sum[e[i].r] - sum[e[i].l-] > ) e[i].ok = ;
}
sort(e+,e+n+,cmp);
int tr=-;
for(int i = ; i <= n; i++) {
if(e[i].ok == ) continue;
if(tr == - || tr < e[i].l) {
tr = e[i].r;
ans++;
} else if(tr >= e[i].l) {
tr = min(e[i].r,tr);
}
}
printf("Case #%d: %d\n",++ca,ans);
}
return ;
}
UVALive 6911 Double Swords (Set,贪心,求区间交集)的更多相关文章
- UVALive 6911 Double Swords 树状数组
Double Swords 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...
- UVaLive 6609 Meeting Room Arrangement (贪心,区间不相交)
题意:给定 n 个区间,让你选出最多的区间,使得每个区间不相交. 析:贪心题,贪心策略是按右端点排序,然后按着选即可. 代码如下: #pragma comment(linker, "/STA ...
- POJ2761---Feed the dogs (Treap求区间第k大)
题意 就是求区间第k大,区间 不互相包含. 尝试用treap解决一下 第k大的问题. #include <set> #include <map> #include <cm ...
- POJ - 3264 Balanced Lineup (RMQ问题求区间最值)
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...
- uva 1615 高速公路(贪心,区间问题)
uva 1615 高速公路(贪心,区间问题) 给定平面上n个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里得距离不超过D.(n<=1e5) 对于每个 ...
- 牛客小白月赛6 F 发电 树状数组单点更新 求区间乘积 模板
链接:https://www.nowcoder.com/acm/contest/136/F来源:牛客网 HA实验是一个生产.提炼“神力水晶”的秘密军事基地,神力水晶可以让机器的工作效率成倍提升. ...
- [csu/coj 1080]划分树求区间前k大数和
题意:从某个区间内最多选择k个数,使得和最大 思路:首先题目给定的数有负数,如果区间前k大出现负数,那么负数不选和更大,于是对于所有最优选择,负数不会出现,所以用0取代负数,问题便转化为区间的前k大数 ...
- 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)
原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...
- LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...
随机推荐
- Web自动化测试学习点总结
"大不可量,深不可测"这是出自<韩非子·主道>的一段话.关于自动化测试也是如此,web系统开发完成,测试人员对页面进行测试,寻找bug.这个过程,需要摸索着前进. 什么 ...
- 一个简单的使用restc demo
最近不经意间看到饿了么团队开发的restc,接口调试工具(类似postman),其实调试接口都没用过工具,每次都只是运行起项目直接调接口.闲来无事,看到restc,就决定试试,后面觉得挺不错的,就分享 ...
- iframe自适应高度问题
我页面中的iframe <iframe name="mainFrame" id="mainFrame" src="/account/${page ...
- JS 用角度换东南西北
最近因为业务,正好需要用设备回传的角度值转成用户读得懂的文字形式 function toDirStr(num){ var num=parseInt(num) var N='北'; var E='东'; ...
- YARN的capacity调度器主要配置分析
yarn中一个基本的调度单元是队列. yarn的内置调度器: 1.FIFO先进先出,一个的简单调度器,适合低负载集群.2.Capacity调度器,给不同队列(即用户或用户组)分配一个预期最小容量,在每 ...
- 前端——HTML笔记-One
一.HTML简介 html即超文本标记语言,指页面内可包含图片.链接,甚至音乐.程序等非文字元素,而标记语言:即标记(标签)构成的语言. 什么是标签: 标签中单词不可以数字开头. 标签不区分大小写.& ...
- scp命令报错(IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!)
使用scp命令移动某一服务器的文件到另外的服务器时报出一下错误: [root@bogon vm_sys1]# scp project.tar.gz root@172.31.0.90:/webdata/ ...
- 在Freeplane中显示与隐藏层级图标
如下图所示,当选择了Edit → Icons → Show icons hierarchically时,给子节点Subsection 1.2.1添加的图标也同样会显示在其所有的父节点上,并且,它们并不 ...
- feature2d相关
1.Harris角点检测 是基于灰度图像的角点检测. 灰度变化率函数如下: 其中的w(x,y)为加权函数,可为常数或为高斯函数.之后对E(u,v)进行泰勒级数的展开与化简,最终得到 ,,Ix,Iy是图 ...
- Tiny6410之NAND FLASH驱动
一.NAND FLASH的特点 S3C6410的NAND FLASH控制器有如下特点 1.自导入模式:复位后,引导代码被送入到8KB的STEPPINGSTONE中,引导代码移动完毕,引导代码将在STE ...