Codeforces Round #263 (Div. 1) C. Appleman and a Sheet of Paper
来源:互联网 发布:mysql 替换 编辑:程序博客网 时间:2024/04/28 15:08
题目地址:http://codeforces.com/contest/461/problem/C
题目大意:见原题。
算法分析:启发式暴力,每次把短的纸带折到长的纸带中,在全局记一个rev标记。注意细节。
Code:
#include <cstdio>#include <algorithm>#define N 100000using namespace std;bool rev;int n,q,beg=1,end,typ,p,l,r,bit[N+10];inline void add(int x,int y){for (;x<=n;x+=x&-x) bit[x]+=y;}inline int query(int x){int res=0;for (;x;x-=x&-x) res+=bit[x];return res;}int main(){scanf("%d%d",&n,&q);for (int i=1;i<=n;++i) add(i,1);end=n;for (int i=1;i<=q;++i){scanf("%d",&typ);if (typ==1){scanf("%d",&p);if (p<=(end-beg+1)/2)if (rev){p=end-p;for (int j=end;j>p;--j) add(2*p-j+1,query(j)-query(j-1));end=p;}else{p+=beg-1;for (int j=beg;j<=p;++j) add(2*p-j+1,query(j)-query(j-1));beg=p+1;}else{if (rev){p=end-p;for (int j=beg;j<=p;++j) add(2*p-j+1,query(j)-query(j-1));beg=p+1;}else{p+=beg-1;for (int j=end;j>p;--j) add(2*p-j+1,query(j)-query(j-1));end=p;}rev^=1;}}else{scanf("%d%d",&l,&r);if (rev) l=end-l,r=end-r;else l+=beg-1,r+=beg-1;if (l>r) swap(l,r);printf("%d\n",query(r)-query(l));}//<debug>/*puts("");for (int j=beg;j<=end;++j) printf("--");puts("");for (int j=beg;j<=end;++j) printf("%d ",query(j)-query(j-1));puts("");for (int j=beg;j<=end;++j) printf("--");puts("");printf("BEGIN @ %d END @ %d REV %s\n",beg,end,rev?"Y":"N");puts("");*///</debug>}return 0;}
By Charlie Pan
Aug 27,2014
1 0
- Codeforces Round #263 (Div. 1) C. Appleman and a Sheet of Paper
- 【Codeforces Round 263 (Div 2)E】【坐标映射 脑洞】Appleman and a Sheet of Paper 折纸游戏 区间查询
- Codeforces 461C. Appleman and a Sheet of Paper
- Codeforces 461C Appleman and a Sheet of Paper(模拟)
- CodeForces 461C Appleman and a Sheet of Paper
- 461C - Appleman and a Sheet of Paper 模拟
- Codeforces Round #263 (Div. 1) A. Appleman and Toastman
- CF 461C - Appleman and a Sheet of Paper (树状数组)
- CF -- 461C Appleman and a Sheet of Paper(线段树)
- CF 【树状数组】461C. Appleman and a Sheet of Paper
- 461C. Appleman and a Sheet of Paper(树状数组)
- Codeforces Round #263 (Div. 2)A. Appleman and Easy Task
- Codeforces Round #263 (Div. 2)A. Appleman and Easy Task
- Codeforces Round #263 (Div. 2)C. Appleman and Toastman
- Codeforces Round #263 (Div. 2) C. Appleman and Toastman
- Codeforces Round #263 (Div. 2)-C. Appleman and Toastman
- Codeforces Round #263 (Div. 2)-C. Appleman and Toastman
- Codeforces Round #263 (Div.1) B. Appleman and Tree
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- zookeeper分布式配置管理
- 如何用js判断文件是否存在
- android之webservice开发
- 双向链表插入与删除
- Codeforces Round #263 (Div. 1) C. Appleman and a Sheet of Paper
- 嵌入式 Linux驱动虚拟地址和物理地址的映射
- hdu 3342 Legal or Not (拓扑排序)
- Android 4.4 音量调节流程分析(二)
- SLF4J和Logback日志框架详解
- Arm下使用Qt和Opencv进行图像处理的入门例程和遇到的问题
- strom中worker、task、spout/bolt、executor、component的关系
- 鼠标事件的一些问题
- sqlite replace into