UVALive 6911 F - Double Swords
思路:1.把所有有长度的剑看做点。Ai点是肯定要取。然后求另一把剑。
先对右区间排个序,然后每次看这个区间范围内有没有剑,如果没有就添加一把(值为右端点的剑);
如果有并且数量为1且这条龙的Ai等这把剑的长度的话,说用还需要一把剑,再添加一把。
否则不添加。
至于怎么查询某个区间有没有剑,可以用树状数组,线段树之类的。
2.也是先排序,然后set模拟。。。。具体看第二份代码吧,懒得打字了。
#include <bits/stdc++.h>
#define PB push_back
#define MP make_pair
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
#define PI acos((double)-1)
#define E exp(double(1))
#define K 1000000+9
struct node
{
int a,b,c;
}sw[];
int n,c[*K],mx,vis[K];
bool cmp(node ta,node tb)
{
if(ta.c==tb.c)
return ta.b<tb.b;
return ta.c<tb.c;
}
void add(int x,int v)
{
while(x<=mx)
{
c[x]+=v;
x+=x&(-x);
}
}
int get_sum(int x)
{
int sum=;
while(x>)
{
sum+=c[x];
x-=x&(-x);
}
return sum;
}
int main(void)
{
int t,cs=;cin>>t;
while(t--)
{
set<int>st;
cin>>n;
memset(c,,sizeof(c));
memset(vis,,sizeof(vis));
mx=;
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&sw[i].a,&sw[i].b,&sw[i].c);
mx=max(mx,max(sw[i].a,sw[i].c));
}
for(int i=;i<=n;i++)
if(!vis[sw[i].a])
add(sw[i].a,),vis[sw[i].a]=;
sort(sw+,sw++n,cmp);
for(int i=;i<=n;i++)
{
int cnt=get_sum(sw[i].c)-get_sum(sw[i].b-);
if(sw[i].a>=sw[i].b &&sw[i].a<=sw[i].c && cnt==)
add(sw[i].c,);
else if(!cnt)
add(sw[i].c,);
}
printf("Case #%d: %d\n",cs++,get_sum(sw[n].c));
} return ;
}
#include <bits/stdc++.h>
#define PB push_back
#define MP make_pair
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
#define PI acos((double)-1)
#define E exp(double(1))
#define K 100000+9
struct node
{
int a,b,c;
}sw[K];
int n;
bool cmp(node ta,node tb)
{
if(ta.c==tb.c)
return ta.b<tb.b;
return ta.c<tb.c;
}
int main(void)
{
int t,cs=1;cin>>t;
while(t--)
{
set<int>st;
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&sw[i].a,&sw[i].b,&sw[i].c);
st.insert(sw[i].a);
}
sort(sw+1,sw+1+n,cmp);
for(int i=1;i<=n;i++)
{
set<int>::iterator it=st.lower_bound(sw[i].b);
if(it!=st.end() && *it==sw[i].a)it++;
if(it==st.end() || *it>sw[i].c )
if(sw[i].c==sw[i].a)
st.insert(-sw[i].c);
else
st.insert(sw[i].c);;
}
printf("Case #%d: %d\n",cs++,st.size());
} return 0;
}
UVALive 6911 F - Double Swords的更多相关文章
- UVALive 6911 Double Swords 树状数组
Double Swords 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) F. Double Knapsack 鸽巢原理 构造
F. Double Knapsack 题目连接: http://www.codeforces.com/contest/618/problem/F Description You are given t ...
- UVALive 6911 Double Swords (Set,贪心,求区间交集)
补:华中VJ这个题目很多标程都不能AC了,包括我下面原本AC了的代码,再交就WA掉了,感觉是样例有问题呢-- 首先左边的是必须要选的,然后右边的需要注意,有些区间是可以舍掉的.1.区间里有两个不同的A ...
- ①创建项目testpackage ②在pack2.B中添加方法f ③在类A中添加如下三个成员变量:int型的私有变量i float型的变量f double型的公有变量d 在pack1.B的main方法中为对象a的成员变量f和d分别赋值为2和3 在pack2.C的main方法中为对象a的成员变量d赋值为3
package pack1; public class A { private int i; float f; public double d; public float getF() { retur ...
- [codeforces 618 F] Double Knapsack (抽屉原理)
题目链接:http://codeforces.com/contest/618/problem/F 题目: 题目大意: 有两个大小为 N 的可重集 A, B, 每个元素都在 1 到 N 之间. 分别找出 ...
- double型数据的输入和输出--%f和%lf
scanf函数是通过指针指向变量的. %f告诉scanf函数在所传地址位置上存储一个float型值, 而%lf告诉scanf函数在所传地址位置上存储一个double型值. 这里float和double ...
- java使double保留两位小数的多方法 java保留两位小数
这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat d ...
- UVALive 3635 分派
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
随机推荐
- [Tips]Fix node.js addon build error: "gyp: binding.gyp not found"
基于node-gyp写Node.js native addon的时候,碰到一个很恶心的问题. 调用“node-gyp configure”能成功,再调用“node-gyp”时总会报错,最后发现时系统时 ...
- js 风格(注意事项)
类型 • 原始类型:我们可以直接使用值. ο string ο number ο boolean ο null ο undefined var foo = 1, bar = foo; bar = ...
- Lumen 队列
队列 简介 连接 Vs. 队列 驱动的必要设置 创建任务类 生成任务类 任务类结构 分发任务 延迟分发 任务链 自定义队列 & 连接 指定任务最大尝试次数 / 超时值 频率限制 错误处理 运行 ...
- uWSGI配置(转 )
原文地址:http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html 下面的内容包含了大部分uWSGI的配置选项,这些配置选项的列举没有 ...
- 判断 null undefined NaN
1.判断undefined: var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined ...
- dns解决测试微信二级域名访问问题
背景介绍: 1:解决本地不能通过域名访问问题: 2:解决微信设置二级域名且本地iis站点使用非80端口号问题: ps:网站中微信部分在global中设置了重定向,代码已经修改为必须通过“wechat. ...
- 同时调整lv分区的大小(减少一个,增加另一个)
author:headsen chen date: 2018-04-20 16:48:06 1.查看分区:/home 为67G,太大了,/ 是50g,太小了. [root@localhost ~]# ...
- Kubernetes之kubectl常用命令
最近项目有用到Kubernetes作集群配置,所以学习下相关命令,记录下以备下次使用... kubectl help 显示具体的用法 kubectl controls the Kubernetes c ...
- FineReport----查询功能 的知识点
1.设置日期控件,默认当前日期 2.默认不查询 选择参数:点击查询前不显示报表内容
- Powershell Get File/Disk Size
知识点: 1.获取路径中的文件夹:Get-ChildItem $startFolder | Where-Object {$_.PSIsContainer -eq $True} | Sort-Obje ...