思路: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的更多相关文章

  1. UVALive 6911 Double Swords 树状数组

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

  2. 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 ...

  3. UVALive 6911 Double Swords (Set,贪心,求区间交集)

    补:华中VJ这个题目很多标程都不能AC了,包括我下面原本AC了的代码,再交就WA掉了,感觉是样例有问题呢-- 首先左边的是必须要选的,然后右边的需要注意,有些区间是可以舍掉的.1.区间里有两个不同的A ...

  4. ①创建项目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 ...

  5. [codeforces 618 F] Double Knapsack (抽屉原理)

    题目链接:http://codeforces.com/contest/618/problem/F 题目: 题目大意: 有两个大小为 N 的可重集 A, B, 每个元素都在 1 到 N 之间. 分别找出 ...

  6. double型数据的输入和输出--%f和%lf

    scanf函数是通过指针指向变量的. %f告诉scanf函数在所传地址位置上存储一个float型值, 而%lf告诉scanf函数在所传地址位置上存储一个double型值. 这里float和double ...

  7. java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    d ...

  8. UVALive 3635 分派

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  9. Java基础-数据类型int,short,char,long,float,double,boolean,byte

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

随机推荐

  1. Ajax实现异步上传图片

    要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来 开发流程 一:在页面编写表单代码和js代码 <!DOCTYPE html PUBLIC "-//W3C/ ...

  2. 经典sql 语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  3. 第二百四十三节,Bootstrap模态框插件

    Bootstrap模态框插件 学习要点: 1.基本使用 2.用法说明 本节课我们主要学习一下 Bootstrap 中的模态框插件,这是一款交互式网站非常常见的 弹窗功能插件. 一.基本使用 使用模态框 ...

  4. Torch-RNN运行过程中的坑 [2](Lua的string sub函数,读取中文失败,乱码?)

    0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string( ...

  5. (转)Java锁、自旋锁、CAS机制

    转自:http://www.jb51.net/article/55381.htm 转自:http://blog.csdn.net/aesop_wubo/article/details/7537278 ...

  6. OpenWrt 安装usb支持

    (一)下载软件 1)komd-usb-ohci kmod-usb2 kmod-usb-storage kmod-usb-core 这些是USB驱动包 2) kmod-nls-base kmod-nls ...

  7. numpy和TensorFlow的函数

    pycharm  jupyter notebook 环境配置

  8. Eclipse用法和技巧

    http://blog.csdn.net/ts1122/article/category/1385337/2

  9. Nginx的安装与基本应用

    web服务器软件IIS (windows底下的web服务器软件) Nginx (Linux底下新一代高性能的web服务器) Tengine www.taobao.com 这是淘宝 Apache (Li ...

  10. Byzantine failures

    https://baike.baidu.com/item/拜占庭将军问题/265656?fr=aladdin 拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信 ...