栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1512 Keeps Going and Goin...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1512 Keeps Going and Goin...

#include<iostream>#include<stdio.h>#define FOR(i,l,r) for (i=l;i<=r;i++)#define MAXN 28#define MAXG 35using namespace std;int n,m;int ki[MAXN],p[MAXN][2],a[MAXN][110],nex[MAXN];int tim[MAXG],ans[MAXG][260],q[MAXG][MAXN];void jump(int num) {while (num--) getchar();}void solve(int top,int now,int l,int r,int bot) {int i,j,k;if (l>r) return ;if (q[top][now]==tim[top]) {for (j=0,i=now;;) {j+=a[i][0];if ((i=nex[i])==now) break ;}if (l!=0) {r-=((l-1)/j)*j;l-=((l-1)/j)*j;}}if (ki[now]) {if (p[now][0]==now && l==1) {solve(top+1,p[now][1],1,1,0);ans[top][1]=ans[top+1][1];solve(top,now,3,r+1,1);return ;}tim[top+1]++;solve(top+1,p[now][0],(l+2)>>1,(r+1)>>1,0);j=((r+1)>>1)-((l+2)>>1)+1;FOR(i,1,j) ans[top][bot+i+i-( (l&1))]=ans[top+1][i];tim[top+1]++;solve(top+1,p[now][1],(l+1)>>1,(r+0)>>1,0);j=((r+0)>>1)-((l+1)>>1)+1;FOR(i,1,j) ans[top][bot+i+i-(!(l&1))]=ans[top+1][i];} else {q[top][now]=tim[top];if (l>a[now][0]) {solve(top,nex[now],l-a[now][0],r-a[now][0],bot);return ;}if (r<=a[now][0]) {FOR(i,l,r) ans[top][bot+(i-l+1)]=a[now][i];return ;}FOR(i,l,a[now][0]) ans[top][bot+(i-l+1)]=a[now][i];solve(top,nex[now],1,r-a[now][0],bot+(a[now][0]-l+1));}}int main() {int i,j,k; char na,chi,chj;scanf("%d%d",&n,&m);for (;n;n--) {scanf("n%c",&na);na-='A';if (jump(3),cin.peek()=='z') {scanf("zip %c %c",χ,&chj);ki[na]=1;p[na][0]=int(chi-'A');p[na][1]=int(chj-'A');} else {for (;;) {if (isdigit(cin.peek())) {scanf("%d",&a[na][++a[na][0]]);getchar();} else if (isupper(cin.peek())) {scanf("%c",χ);nex[na]=int(chi-'A');break ;}}}}for (;m;m--) {scanf("n%c%d%d",&na,&i,&j);i++;j++;tim[0]++;solve(0,int(na-'A'),i,j,0);printf("%d",ans[0][1]);FOR(k,2,j-i+1) printf(" %d",ans[0][k]);printf("n");}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号