UESTC 1061 SET的妙用
2015-11-30 13:44
513 查看
E - 秋实大哥与战争
Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu
Submit Status Practice UESTC
1061
Description
男儿何不带吴钩,收取关山五十州。
征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏。
秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击。
敌方每一次会攻击一个士兵,这个士兵就会阵亡,整个阵列就会从这个位置断开;同时有的时候已阵亡的士兵会受人赢气息感染而复活。
秋实大哥想知道某一时刻某一个士兵所在的阵列的长度是多少。
Input
第一行包含两个整数
,
,表示秋实大哥的士兵数目和接下来发生的事件数目。
接下来
行,每一行是以下三种事件之一:
,
,
。
Output
对于每一个
事件,输出对应的答案占一行。
Sample Input
5 3
2 2
0 3
2 2
Sample Output
5
2
题解:这一题可以说非常巧妙地使用了set,可以将死的士兵插入进去,如果查询就进行二分查找,这个数字的左右区间,答案相减即可。注意有一种情况是如果查询的那个恰好是死的士兵那就不去二分查找了,直接输出0。
亦可以用线段树写。表示太难了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#include<set>
set<int>s;
int main()
{
int n,m,a,b;
scanf("%d%d",&n,&m);
s.insert(0);
s.insert(n+1);
while(m--)
{
scanf("%d%d",&a,&b);
if(a==0)
{
s.insert(b);
}
else if(a==1)
{
if(s.count(b))
{
s.erase(b);
}
}
else
{
if(s.count(b))
{
puts("0");
}
else
{
int R=*(s.lower_bound(b));
int L= *(--s.lower_bound(b));
printf("%d\n",R-L-1);
}
}
}
return 0;
}
Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu
Submit Status Practice UESTC
1061
Description
男儿何不带吴钩,收取关山五十州。
征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏。
秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击。
敌方每一次会攻击一个士兵,这个士兵就会阵亡,整个阵列就会从这个位置断开;同时有的时候已阵亡的士兵会受人赢气息感染而复活。
秋实大哥想知道某一时刻某一个士兵所在的阵列的长度是多少。
Input
第一行包含两个整数
,
,表示秋实大哥的士兵数目和接下来发生的事件数目。
接下来
行,每一行是以下三种事件之一:
0 x : 表示x位置的士兵受到攻击阵亡 1 x : 表示x位置的士兵受人赢气息感染复活 2 x : 秋实大哥想知道第x个士兵所在阵列的长度
,
,
。
Output
对于每一个
事件,输出对应的答案占一行。
Sample Input
5 3
2 2
0 3
2 2
Sample Output
5
2
题解:这一题可以说非常巧妙地使用了set,可以将死的士兵插入进去,如果查询就进行二分查找,这个数字的左右区间,答案相减即可。注意有一种情况是如果查询的那个恰好是死的士兵那就不去二分查找了,直接输出0。
亦可以用线段树写。表示太难了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#include<set>
set<int>s;
int main()
{
int n,m,a,b;
scanf("%d%d",&n,&m);
s.insert(0);
s.insert(n+1);
while(m--)
{
scanf("%d%d",&a,&b);
if(a==0)
{
s.insert(b);
}
else if(a==1)
{
if(s.count(b))
{
s.erase(b);
}
}
else
{
if(s.count(b))
{
puts("0");
}
else
{
int R=*(s.lower_bound(b));
int L= *(--s.lower_bound(b));
printf("%d\n",R-L-1);
}
}
}
return 0;
}
相关文章推荐
- UITouch 触摸事件处理(实例)
- leetcode 307 : Range Sum Query - Mutable
- UESTC 1060 字典树
- iOS UIButton同时设置title和image属性
- 设置SVN的needs-lock:true属性
- 浅谈3D Touch(2) -- UITouch && Peek && Pop
- 浅谈3D Touch(1) -- Home screen quick action
- 倒计时获取验证码 runOnUiThread Timer TimerTask
- 1085. Perfect Sequence
- jsp request 对象详解
- UI-1-UI入门
- String,StringBuffer与StringBuilder的区别
- UIPickerView基本用法
- UITextField的使用
- UESTC 58 任意阶矩阵的乘法 虽然简单但优化还是要思考一下的 而且也使自己意识到了原来没有注意的问题
- LintCode: Longest Increasing Continuous subsequence
- [DB2]错误"Requesting too many semaphores" 解决办法
- 用dialog引入easyui的时候会报错
- UITextField的使用
- hdu5568 sequence2