原题: 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的插入和删除)相关推荐

  1. php 元素插入数组指定位置,数组任意位置插入元素,删除特定元素的实例

    如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ar ...

  2. c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...

    最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...

  3. [山东科技大学OJ]1376 Problem F: 编写函数:数组的排序 (Append Code)

    Time Limit: 1 Sec Memory Limit: 16 MB Submit: 18648 Solved: 9472 [Submit][Status] Description 输入一组整数 ...

  4. c语言数组指定位置插入和删除_Apache POI在指定位置插入表格

    接到的需求是在模板表格的指定位置再插入表格.比如在模板的${proTable}处插入表格. 依赖的包 org.apache.poi poi 3.15org.apache.poi poi-ooxml 3 ...

  5. hdu A + B Problem II(大数相加,数组实现)

    hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...

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

  7. Problem F: 结构体--学生信息排序

    Problem F: 结构体–学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 378 Solved: 192 [Submit][Status ...

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

  9. Problem F: 凹凸四边形

    Problem F: 凹凸四边形 Description 四边形分为凸四边形和凹四边形,如下图,图1为凸四边形,图2为凹四边形. 按照连边顺序给出四边形的四个顶点坐标,判断该四边形是凹四边形还是凸四边 ...

  10. Problem F: 计票

    Problem F: 计票 Description 美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜.各州的统计结果陆续出来了,你能帮忙统计下总得票吗? Input 多组测试数据,每组先输入一个 ...

最新文章

  1. 词云图可视化python_python 可视化 词云图
  2. c语言 枚举定义变量,C语言之枚举的定义以及测试
  3. 世界对一名颓废者的惩罚——SDOI2019R1游记
  4. 计算机网络.doc,计算机网络network.doc
  5. pynlpir(ICTCLAS)初步使用
  6. Ajax — 大事件项目(第四天)
  7. synchronized 和Lock区别
  8. sencha touch Container控件 setRecord 与 setData的区别
  9. c语言引用与指针有什么区别,Java引用与C语言指针的区别
  10. xp系统 护眼模式
  11. java实现递归算法
  12. android 锁屏界面来电话,android锁屏界面短信解锁指向怎么修改?
  13. 读书笔记:《圈子圈套》
  14. android开发 引入cpp文件
  15. Linux3._Linux环境基础开发工具使用
  16. stm8程序无法写入c语言,[转载]STM8 PWM例程
  17. 杨辉三角 118.杨辉三角 119.杨辉三角Ⅱ(数学解法)
  18. fitbit同步不了怎么解决_怎么处理Fitbit 后台同步错误信息?
  19. 国仁网络资讯:微信视频号运营中常遇见的10大问题;新手必知的疑难杂症。【建议收藏】
  20. PYQT5 Painter的简单入门

热门文章

  1. python大鱼吃小鱼
  2. 关于服务器,看这一篇就够了!
  3. 大学生静态HTML网页源码 我的校园网页设计成品 学校班级网页制作模板 web课程设计 dreamweaver网页作业
  4. 卡内基梅隆大学计算机专业类别,卡内基梅隆大学计算机专业优势介绍
  5. android 侧滑栏教程,Android控件开发——DrawerLayout侧滑菜单的实现
  6. 计算机开机进不了bios,开机进不了bios,教您怎么解决win8开机进不了bios
  7. 13.es slop参数实现近似匹配以及原理剖析和相关实验
  8. L1-8 雀魂majsoul (20 分)
  9. 金蝶K3添加触发器实现-生产领料单打印即时库存
  10. 【MOOC】JS脚本|便于复制粘贴中国大学MOOC网站的测试题和选项