洛谷 P1503鬼子进村
题目背景
小卡正在新家的客厅中看电视。电视里正在播放放了千八百次依旧重播的《亮剑》,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战。
题目描述
描述 县城里有n个用地道相连的房子,第i个只与第i-1和第i+1个相连。这是有m个消息依次传来
1、消息为D x:鬼子将x号房子摧毁了,地道被堵上。
2、消息为R :村民们将鬼子上一个摧毁的房子修复了。
3、消息为Q x:有一名士兵被围堵在x号房子中。
李云龙收到信息很紧张,他想知道每一个被围堵的士兵能够到达的房子有几个。
输入输出格式
输入格式:
第一行2个整数n,m(n,m<=50000)。
接下来m行,有如题目所说的三种信息共m条。
输出格式:
对于每一个被围堵的士兵,输出该士兵能够到达的房子数。
输入输出样例
输入样例#1:
7 9
D 3
D 6
D 5
Q 4
Q 5
R
Q 4
R
Q 4
输出样例#1:
1
0
2
4
说明
若士兵被围堵在摧毁了的房子中,那只能等死了。。。。。。
有人暴力AC!!!
//80‘
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int cnt=;
char s;
int sum;
int xxx[];
int n,m;
int f[]={};
void sousuo2(int a)
{
if(f[a]||a==) return;
if(f[a]==)
{
sum++;
sousuo2(--a);
}
}
void sousuo(int x,int y)
{
if(f[x]||x>n)
{
sousuo2(y-);
return;
}
if(f[x]==)
{
sum++;
sousuo(++x,y);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
cin>>s;
if(s=='D')
{
scanf("%d",&xxx[++cnt]);
f[xxx[cnt]]=;
}
if(s=='Q')
{
int x;
sum=;
scanf("%d",&x);
int y=x;
if(f[x]==)
sum=;
else
sousuo(x,y);
printf("%d\n",sum);
}
if(s=='R')
f[xxx[cnt--]]=;
}
return ;
}
//100——by whw
//我太懒了
#include<stack>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define M 50001
using namespace std;
stack<int> q;
bool vis[M];
int tree[M];
int a[M],n,m;
inline int read(int&x) {
x=;char c=getchar();
while(c>''||c<'') c=getchar();
while(c>=''&&c<='') x=*x+c-,c=getchar();
}
int main() {
read(n);read(m);
char s;
int x,bj=,tot=;
for(int i=;i<=n;i++) vis[i]=true;
for(int i=;i<=m;i++) {
cin>>s;
if(s=='D') {
read(x);
q.push(x);
vis[x]=false;
a[++tot]=x;
}
else if(s=='R') {
x=q.top();
q.pop();
vis[x]=true;
sort(a+,a+tot+);
for(int i=;i<=tot;i++)
if(a[i]==x) {
if(a[i]==a[tot]) tot--;
else a[i]=a[tot],tot--;
break;
}
}
else if(s=='Q') {
read(x);
if(!vis[x]) printf("0\n");
else {
sort(a+,a+tot+);
if(x>a[tot]) printf("%d\n",n-a[tot]);
else for(int i=;i<=tot;i++) {
if(a[i]>x) {
printf("%d\n",a[i]-a[i-]-);
break;
}
}
}
}
}
return ;
}
洛谷 P1503鬼子进村的更多相关文章
- 洛谷 P1503 鬼子进村 解题报告
P1503 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...
- 洛谷P1503 鬼子进村 [平衡树,STL]
题目传送门 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...
- 洛谷—— P1503 鬼子进村
https://www.luogu.org/problemnew/show/P1503 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的 ...
- 洛谷 P1503 鬼子进村
题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. 题目描述 描述 县城里 ...
- 洛谷 1503 鬼子进村 (set)
/*set加速维护*/ #include<iostream> #include<cstdio> #include<cstring> #include<set& ...
- P1503 鬼子进村
题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. 题目描述 描述 县城里 ...
- 【题解】Luogu P1503 鬼子进村
平衡树好题 原题传送门 这道题要用Splay,我博客里有对Splay的详细介绍 这道题思维有点难,要把被摧毁的节点插入平衡树,而不是把没有摧毁的节点插入 先把0和n+1插入平衡树,作为边界 操作1:摧 ...
- luogu P1503 鬼子进村
嘟嘟嘟 线段树好题. 其实挺水的,想暴力怎么做:每一次从这个点开始向两边扩,直到遇到第一个摧毁的房屋. 那么把暴力改成倍增,然后线段树查询区间和是否为0.时间复杂度O(nlog2n). 题解好像有线段 ...
- Luogu P1503 鬼子进村 set
还是拿set搞... 用set记录每个被摧毁的位置,Q的时候二分一下,在和上一个摧毁的位置减一下,即可求出能到的房子数 #include<iostream> #include<cst ...
随机推荐
- EOF与feof
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件.在文本文件中,数据都是 ...
- vue 点击倒计时 ajax 封装
方法:function(){ var that = this; if (that.time == 0) { that.disabled = false; that.text ="点击获取&q ...
- 697. Degree of an Array@python
Given a non-empty array of non-negative integers nums, the degree of this array is defined as the ma ...
- 洛谷 P2872 道路建设
https://www.luogu.org/problemnew/show/P2872 算是比较裸的并查集了,已经有路的两个点之间建一条代价为0的边,路径长度计算两点之间的距离,做并查集就好咯. #i ...
- LeetCode 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...
- nginx 部署ssl证书之后访问用火狐出现SSL_ERROR_RX_RECORD_TOO_LONG此错误,用Google出现ERR_SSL_PROTOCOL_ERROR错误
server { listen ; server_name xxx.com; ssl_certificate ssl/xxx.pem; ssl_certificate_key ssl/xxx.key; ...
- leepcode作业解析 - 5-20
22.缺失数字 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: ...
- JavaScript正则表达式-非捕获性分组
非捕获性分组定义子表达式可以作为整体被修饰但是子表达式匹配结果不会被存储. 非捕获性分组通过将子表达式放在"?:"符号后. str = "img1.jpg,img2.jp ...
- nw335 debian sid x86-64 --3 linux内核自带
nw335 debian sid x86-64 --3 linux内核自带
- Wp检查手机网络状态
/// <summary> /// 检查网络状态 /// </summary> private void CheckNetworkState() { if (DeviceNet ...