bnuoj 52317 As Easy As Possible(预处理+倍增法)
来源:互联网 发布:windows代表什么 编辑:程序博客网 时间:2024/06/04 19:53
代码:
#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <string>#include <vector>#include <cstdio>#include <cctype>#include <cstring>#include <sstream>#include <cstdlib>#include <iostream>#include <algorithm>#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;#define MAX 100010#define MAXN 1000005#define maxnode 5#define sigma_size 30#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define lrt rt<<1#define rrt rt<<1|1#define middle int m=(r+l)>>1#define LL long long#define ull unsigned long long#define mem(x,v) memset(x,v,sizeof(x))#define lowbit(x) (x&-x)#define pii pair<int,int>#define bits(a) __builtin_popcount(a)#define mk make_pair#define limit 10000//const int prime = 999983;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f;const double pi = acos(-1.0);const double inf = 1e18;const double eps = 1e-6;//const LL mod = 1e9+7;const ull mx = 133333331;/*****************************************************/inline void RI(int &x) { char c; while((c=getchar())<'0' || c>'9'); x=c-'0'; while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; }/*****************************************************/char s[MAX];int pre[MAX];int pos[5];int cnt[MAX];int f[20][MAX];int get(char c){ if(c=='e') return 0; if(c=='a') return 1; if(c=='s') return 2; if(c=='y') return 3;}int main(){ //freopen("in.txt","r",stdin); while(~scanf("%s",s+1)){ int len=strlen(s+1); mem(pos,-1); mem(cnt,0); for(int i=1;i<=len;i++){ int num=get(s[i]); if(num) pre[i]=pos[num-1]; pos[num]=i; cnt[i]=cnt[i-1]; if(num==3){ int e=i; for(int i=0;i<3;i++) e=pre[e]; cnt[i]=e; } } for(int i=1;i<=len;i++) f[0][i]=cnt[i]; for(int j=1;j<20;j++){ for(int i=1;i<=len;i++){ f[j][i]=f[j-1][f[j-1][i]]; } } int m; cin>>m; while(m--){ int l,r; scanf("%d%d",&l,&r); int ans=0; int t=r; for(int i=19;i>=0;i--){ if(f[i][t]>=l){ ans+=(1<<i); t=f[i][t]-1; if(t<0) break; } } printf("%d\n",ans); } } return 0;}
0 0
- bnuoj 52317 As Easy As Possible(预处理+倍增法)
- BNUOJ 52317 As Easy As possible
- As Easy As Possible 倍增法
- As Easy As Possible
- 2016弱校联盟十一专场10.5---As Easy As Possible(倍增)
- as precise as possible
- As Fast As Possible
- as rigid as possible编译
- 弱校连萌 2016 国庆训练计划 10,5 Problem A. As Easy As Possible
- As-Rigid-As-Possible Surface Modeling
- Get Users Involved As Early As Possible
- As-Rigid-As-Possible Surface Modeling
- As-Conformal-As-Possible Surface Registration
- Codeforces700A As Fast As Possible 数学推理
- CF 700A As Fast As Possible
- as-conformal-as-possible discrete volumetric mapping
- codeforces 701 D. As Fast As Possible
- As easy as A+B
- 1006-Tick and Tick
- BNUOJ52325 Increasing or Decreasing(数位dp)
- vs2010 瘦身--ipch文件夹和sdf文件配置
- Ubuntu 12.04 安装 GitLab
- poj 1426 Find The Multiple(DFS)
- bnuoj 52317 As Easy As Possible(预处理+倍增法)
- SDUT OJ 数据结构实验之栈四:括号匹配
- python爬虫——模拟登陆教务系统
- java中String类常量池详解
- Leetcode-58. Length of Last Word
- Linux 操作指令
- Codeforces Round #368 (Div. 2) D 离线+查询树
- 设计模式学习(简单工厂、策略模式、单一职责、开闭原则)
- 删除排序数组中的重复元素(三种方法的比较)