补:华中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,贪心,求区间交集)的更多相关文章

  1. UVALive 6911 Double Swords 树状数组

    Double Swords 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...

  2. UVaLive 6609 Meeting Room Arrangement (贪心,区间不相交)

    题意:给定 n 个区间,让你选出最多的区间,使得每个区间不相交. 析:贪心题,贪心策略是按右端点排序,然后按着选即可. 代码如下: #pragma comment(linker, "/STA ...

  3. POJ2761---Feed the dogs (Treap求区间第k大)

    题意 就是求区间第k大,区间 不互相包含. 尝试用treap解决一下 第k大的问题. #include <set> #include <map> #include <cm ...

  4. POJ - 3264 Balanced Lineup (RMQ问题求区间最值)

    RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就 ...

  5. uva 1615 高速公路(贪心,区间问题)

    uva 1615 高速公路(贪心,区间问题) 给定平面上n个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里得距离不超过D.(n<=1e5) 对于每个 ...

  6. 牛客小白月赛6 F 发电 树状数组单点更新 求区间乘积 模板

    链接:https://www.nowcoder.com/acm/contest/136/F来源:牛客网  HA实验是一个生产.提炼“神力水晶”的秘密军事基地,神力水晶可以让机器的工作效率成倍提升.   ...

  7. [csu/coj 1080]划分树求区间前k大数和

    题意:从某个区间内最多选择k个数,使得和最大 思路:首先题目给定的数有负数,如果区间前k大出现负数,那么负数不选和更大,于是对于所有最优选择,负数不会出现,所以用0取代负数,问题便转化为区间的前k大数 ...

  8. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  9. LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...

随机推荐

  1. Python中的eval()、exec()及其相关函数

    刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档.这里就来简单说一下这两个函数以及与它们相关的几个函数,如globals().locals()和compile() ...

  2. 编译 MVC View

    默认MVC的 View页面 不参与编译,当更改view对应model后,view编译也能通过,或者页面有错误的服务端代码时也不会报错. 那么如何在编译的时候能让View中的错误也不能通过呢.经过查找找 ...

  3. 正则表达式之js检验密码强度

    最近一直在做通行证项目,里面的注册模块中输入密码需要显示密码强度(低中高).今天就把做的效果给大家分享下,代码没有网上搜索的那么复杂,能够满足一般的需求. html 代码如下: <!DOCTYP ...

  4. shell-正则表达式

    证则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计 ...

  5. find指令

    1.命令格式 find path -options [-print -exec -ok ...] 2.命令功能 查找文件,并作出相应处理 3.命令参数

  6. Shell终端收听音乐--网易云音乐命令行版

    Musicbox:网易云音乐命令行版本 高品质网易云音乐命令行版本,简洁优雅,丝般顺滑,基于Python编写. 这款命令行的客户端使用 Python 构建,以 mpg123 作为播放后端: Vim 式 ...

  7. RedisDesktopManager

    下载地址: https://github.com/uglide/RedisDesktopManager/releases

  8. GIT 代码管理工具 SourceTree

    什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Benedict Torval ...

  9. YYKit笔记之FPS

    FPS计算方法 FPS是Frame per second的缩写,即每秒的帧数.这一术语广泛的应用于计算机图形学,视频采集,游戏等. CADisplayLink CADisplayLink是一个能让我们 ...

  10. easy-ui 有依赖关系的下拉列表(省市区县)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...