Flipper
来源:互联网 发布:淘宝卖水果 编辑:程序博客网 时间:2024/06/06 18:38
题意:给定n张卡片,'U'表示该卡片正面朝上,'D'表示朝下
给定n-1个操作,'L'表示最左边的卡片集翻转并且叠放到相邻右边一个卡片集上面,如第1个卡片集翻转叠放到第2个卡
片集上
'R'表示最右端的卡片集翻转并且叠放到相邻左边一个卡片集上面,最终只会剩余一叠卡片
对这叠卡片接下来有m个询问,询问从上到下第a张卡片的序号和正面的方向
链接 :UVALive4536 POJ3824 HDU3328 Flipper
#include<iostream>#include<cstring>#include<cstdio>#include<stack>using namespace std;stack<int> stac[100+10];int main(){ int price=0,n,i,flag[100+10]; string str1,str2; while(cin>>n,n){ cin>>str1>>str2; i=0; while(str1[i]){ if(str1[i]=='U') flag[i] = 1 ; else flag[i] = 0 ; i++; } for(int j=0;j<n;j++){ stac[j].push(j+1); } int left=0,right=n-1; i=0; for(;i<n-1;){ if(str2[i]=='R'){ right--; for(int j=n-1;j>right;j--) flag[j]=1-flag[j]; while(!stac[right+1].empty()){ stac[right].push(stac[right+1].top()); stac[right+1].pop(); } } if(str2[i]=='L'){ left++; for(int j=0;j<left;j++) flag[j]=1-flag[j]; //翻转 while(!stac[left-1].empty()){ stac[left].push(stac[left-1].top()); stac[left-1].pop(); } } i++; } int t,m,a[100+10]; for(int j=0;j<n;j++){ a[j]=stac[left].top();//数组 a 存储的数据 比脚标 大 1 所以 flag[a[j]-1]才是 第j张牌的正反情况 stac[left].pop(); } cout<<"Pile "<<++price<<endl; cin>>m; while(m--){ cin>>t; printf("Card %d is a face %s %d.\n",t,(flag[a[t-1]-1]?"up":"down"),a[t-1]);//记录是从0开始的,即存储的比获取的少1 } } return 0;}
阅读全文
0 0
- Flipper
- Flipper
- Flipper
- Flipper(栈)
- hdu 3328 Flipper <stack>
- HDU3328 && POJ3824:Flipper
- hdu 3328 Flipper
- hdu 3328 Flipper
- Sicily 7907. Flipper
- HDU 3328 Flipper [模拟]
- Flipper (栈模拟)
- hdu 3328 Flipper(栈)
- hdu Flipper (用栈模拟)
- HDU 3328 Flipper (stack)
- hdu 3328 Flipper 模拟题
- HDU-3328-Flipper(栈模拟)
- hdu 3328 Flipper(栈模拟)
- HDU 3328 Flipper 魔术纸牌
- VUE简介
- 安卓实现A-Z字母排序和模糊搜索
- 第七周项目1
- 计算图像均值
- 借用Ajax实现Echarts与MySQL的交互(2)
- Flipper
- FFMPEG 压缩视频文件
- PrivacyPolicy
- spark 问题
- ubuntu package XXX needs to be reinstalled, but I can't find an archive 修复
- SQL使用(一)-----联合查询
- 【LeetCode】C# 70、Climbing Stairs
- MySQL的锁
- paint