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 ...
随机推荐
- How to convert from BufferedImage to JavaFX 2.2 Image
http://blog.idrsolutions.com/2012/11/convert-bufferedimage-to-javafx-image/ ———————————————————————— ...
- MonoTouch
本文为2012年4月19日Xamarin研讨会OLO在线咨询高级软件工程师Greg Shackles的一份的演讲资料. 本文为2012年4月19日Xamarin研讨会OLO在线咨询高级软件工程师Gre ...
- 【转】不用程序mysql也可以查询今天、昨天、7天、近30天、本月、上一月的数据
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NO ...
- C++ 类的多态一(virtual关键字--构造函数深刻理解)
//virtual关键字--构造函数深刻理解 #include<iostream> using namespace std; /* C语言编译器,c++编译器全部是静态链编,就是一段一段代 ...
- markdown完整语法规范3.0+编辑工具介绍
以下每一种,我都会挑选最常用的一种写法,一切表述只追求简明扼要.想深究,请查看文末链接. 通用写法:符号+空格+内容 1 引用: 单层引用: > 一级引用 多层引用:内层符号前的空格必须要 &g ...
- 【BZOJ】1632: [Usaco2007 Feb]Lilypad Pond(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1632 我简直是个sb... ... bfs都不会写.. 算方案还用2个bfs! 都不会整合到一个! ...
- js用计时器加载大量dom
改进前: <table><tbody></tbody></table> var tbody=document.getElementsByTagName( ...
- 【统计分析】ROC曲线
http://baike.baidu.com/link?url=O8nVf39qW4UpYAegk9cJfYARCFDg8YHQ6p5wFnWxYvo151doXo-WvG5Rfz0j4R-r 受试者 ...
- CopyOnWriteArrayList分析
ArrayList是比较常用的一个可变大小的数组集合,但是是不能同步的.如果多个线程同时访问一个ArrayList实例,其中至少一个线程从结构上修改了列表,那么它必须保持外部同步.一般通过加锁对象进行 ...
- ReSharper 配置及用法(ZHUANG)
1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键.是使用vs2010的快捷键还是使用 Resharper的快捷 ...