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 ( ...
随机推荐
- Java基础篇Socket网络编程中的应用实例
说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作 ...
- 实际开发中,后台回传的错误格式的Json数据处理
现在很多学习刚学习移动开发的同学,相信在培训机构,拿到后台数据的时候,格式都是正确的,甚至有的还是plist文件.但是实际开发中,我们获取数据都是通过网络接口从服务器获取数据,这些数据的格式都是后台写 ...
- Float 的那些事
css float 定义元素浮动到左侧或者右侧.其出现的本意是让文字环绕图片而已. left.right.inherit(从父级元素获取float值).none 一.浮动的性质 1. 包裹性 disp ...
- 第10章 使用MySQL数据库
1.在数据库中插入数据:INSERT语句: 如://插入一整行: insert into customers values (NULL,'-','-','-'), - ; //插入一行中指定的列内容: ...
- php学习笔记——语言切换
现在的网站很多都可以实现多语言,于是记录一下多语言的实例. 方法一:通过将所有显示在页面的字段放在一个message文件里面来实现 思路如下图: test代码: main.php: <?php ...
- hdu5976贪心乘法逆元
hdu 5976 Detachment题目连接 题意: 给定一个自然数x,让你给出一种拆分方式n=a1+a2+...(ai≠aj),使得每个小部分的乘积s=a1*a2*...最大 解题思路: 我们要乘 ...
- C++第二天
今天学会了反码和补码: 1.正数的反码是本身,负数的反码是高位不变,其余位取反(这里的数是指二进制数) 2.补码是反码加一得到的 对于数据类型分为基本类型:整型,浮点型,字符型和布尔值类型,还有飞基本 ...
- 网络爬虫-获取infoq里的测试新闻保存至html
用java+webdriver+testng实现获取infoq里的测试新闻,获取文章标题和内容,保存至html文件 前提条件: 已安装好java环境,工程导入了webdriver的jar包和testn ...
- VR行业未来是会走向巅峰还是会归于落寞?
日前591ARVR资讯网www.591arvr.com根据有关市场调研机构的权威数据分析进行预测表明,全球VR头显出货量将达到1.3亿部,但是现在市场数字不过年出货1700万部,这一部分VR并不指的是 ...
- linux配置更改yum源
1,进入yum源配置目录 cd /etc/yum.repos.d 2,备份系统自带的yum源mv CentOS-Base.repo CentOS-Base.repo.bk下载163网易的yum源:wg ...