Problem F - Football Free Kick(数组1e9的插入和删除)
原题: https://cn.vjudge.net/problem/Gym-101864F
题意:
开始1到k为1,k+1到n为0,每次操作移动一个1到一个0的位置,保证操作合法。求每次操作后1到n有几个连续的0区间(100010有两个)
解析:
因为1e9的原因所以不能开数组。
考虑插入的情况:既然合法,也就是说当前位置之前为0,而且只会插在两个连续1区间的中间,所以对于连续1区间,我们不需要对整个区间的每个位置打标记,只需要对左端点和右端点打标记。那么在插入的时候,只需要判断当前空左边有没有打标记,右边有没有打标记即可。(两边有则空–,两边无则空++)
再考虑移走的情况,因为本就是01和10的关系,所以所有的操作都可以共享,即:对于一个连续0区间的左右端打标记,之后操作完全相同
#include<bits/stdc++.h>
using namespace std;map<int,bool>non,vis;int insert(int p){int add=0;int l=0,r=0;if(vis[p+1])r++;if(vis[p-1])l++;if(l+r==2)add--;else if(l+r==1);else add++;vis[p]=1;if(l==1&&r==0){non[p]=0;non[p+1]=1;}else if(l==0&&r==1){non[p]=0;non[p-1]=1;}else if(l&&r){non[p]=0;}else{non[p]=0;non[p+1]=non[p-1]=1;}return add;
}int erase(int p){int add=0;int l=0,r=0;//左边没有if(non[p+1])r++;if(non[p-1])l++;if(l+r==2)add--;else if(l+r==1);else add++;non[p]=1;if(l==1&&r==0){vis[p]=0;vis[p+1]=1;}else if(l==0&&r==1){vis[p]=0;vis[p-1]=1;}else if(l&&r){vis[p]=0;}else{vis[p]=0;vis[p+1]=vis[p-1]=1;}return add;
}int main(){int t;scanf("%d",&t);int ca=0;while(t--){printf("Case %d:\n",++ca);non.clear();vis.clear();int n,k,q;scanf("%d%d%d",&n,&k,&q);vis[0]=vis[n+1]=vis[1]=vis[k]=1;if(k<n)non[k+1]=non[n]=1;int now=1;while(q--){int x,y;scanf("%d%d",&x,&y);if(x!=y)now+=insert(y),now+=erase(x);printf("%d\n",now);}}
}
Problem F - Football Free Kick(数组1e9的插入和删除)相关推荐
- php 元素插入数组指定位置,数组任意位置插入元素,删除特定元素的实例
如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ar ...
- c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- [山东科技大学OJ]1376 Problem F: 编写函数:数组的排序 (Append Code)
Time Limit: 1 Sec Memory Limit: 16 MB Submit: 18648 Solved: 9472 [Submit][Status] Description 输入一组整数 ...
- c语言数组指定位置插入和删除_Apache POI在指定位置插入表格
接到的需求是在模板表格的指定位置再插入表格.比如在模板的${proTable}处插入表格. 依赖的包 org.apache.poi poi 3.15org.apache.poi poi-ooxml 3 ...
- hdu A + B Problem II(大数相加,数组实现)
hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...
- Problem F: 结构体--学生信息排序
Problem F: 结构体–学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 378 Solved: 192 [Submit][Status ...
- Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787
Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787 ...
- Problem F: 凹凸四边形
Problem F: 凹凸四边形 Description 四边形分为凸四边形和凹四边形,如下图,图1为凸四边形,图2为凹四边形. 按照连边顺序给出四边形的四个顶点坐标,判断该四边形是凹四边形还是凸四边 ...
- Problem F: 计票
Problem F: 计票 Description 美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜.各州的统计结果陆续出来了,你能帮忙统计下总得票吗? Input 多组测试数据,每组先输入一个 ...
最新文章
- 词云图可视化python_python 可视化 词云图
- c语言 枚举定义变量,C语言之枚举的定义以及测试
- 世界对一名颓废者的惩罚——SDOI2019R1游记
- 计算机网络.doc,计算机网络network.doc
- pynlpir(ICTCLAS)初步使用
- Ajax — 大事件项目(第四天)
- synchronized 和Lock区别
- sencha touch Container控件 setRecord 与 setData的区别
- c语言引用与指针有什么区别,Java引用与C语言指针的区别
- xp系统 护眼模式
- java实现递归算法
- android 锁屏界面来电话,android锁屏界面短信解锁指向怎么修改?
- 读书笔记:《圈子圈套》
- android开发 引入cpp文件
- Linux3._Linux环境基础开发工具使用
- stm8程序无法写入c语言,[转载]STM8 PWM例程
- 杨辉三角 118.杨辉三角 119.杨辉三角Ⅱ(数学解法)
- fitbit同步不了怎么解决_怎么处理Fitbit 后台同步错误信息?
- 国仁网络资讯:微信视频号运营中常遇见的10大问题;新手必知的疑难杂症。【建议收藏】
- PYQT5 Painter的简单入门
热门文章
- python大鱼吃小鱼
- 关于服务器,看这一篇就够了!
- 大学生静态HTML网页源码 我的校园网页设计成品 学校班级网页制作模板 web课程设计 dreamweaver网页作业
- 卡内基梅隆大学计算机专业类别,卡内基梅隆大学计算机专业优势介绍
- android 侧滑栏教程,Android控件开发——DrawerLayout侧滑菜单的实现
- 计算机开机进不了bios,开机进不了bios,教您怎么解决win8开机进不了bios
- 13.es slop参数实现近似匹配以及原理剖析和相关实验
- L1-8 雀魂majsoul (20 分)
- 金蝶K3添加触发器实现-生产领料单打印即时库存
- 【MOOC】JS脚本|便于复制粘贴中国大学MOOC网站的测试题和选项