HDU 3328 Flipper (stack)
来源:互联网 发布:Knn算法预测天气预报 编辑:程序博客网 时间:2024/06/05 02:45
最近着手打基础,做做STL的题目,虽然一般STL题目难度不大,但需要加快速度的准确率.............................
本题有N张牌,一开始每个位置一张(正面朝上或者朝下),有N-1个操作,每次操作从有牌的最左边或者最右边,将那堆的牌由上到下依次翻转到旁边的那堆之中,操作结束,最后只剩一堆。
在那一堆中执行Q次询问,由上到下,第几张牌初始状态的编号以及它现在是朝上还是朝下。
直接开N个stack存好所有堆的状态......模拟操作即可。
#include <iostream>#include <algorithm>#include <cmath>#include<functional>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <vector>#include <set>#include <queue>#include <stack>#include <climits>//形如INT_MAX一类的#define MAX 100005#define INF 0x7FFFFFFFusing namespace std;int s[111][111];int head[111];int n,q;int numl,numr,final;char sta[111];char op[111];void init() { memset(s,0,sizeof(s)); memset(head,0,sizeof(head)); numl = 0; numr = 0;}void solve() { for(int i=1; i<=n; i++) { s[i][0] = i; } int len = strlen(op); int right , left; for(int i=0; i<len; i++) { if(op[i] == 'R') { numr ++; left = n - numr; right = left + 1; while(head[right] > -1) { s[left][++head[left]] = s[right][head[right]--]; } } else { numl ++; left = numl; right = left + 1; while(head[left] > -1) { s[right][++head[right]] = s[left][head[left]--]; } } }}bool judge(int x,int y) { int span = abs(x - y); if(span % 2 == 1) { if(sta[y-1] == 'U') sta[y-1] = 'D'; else sta[y-1] = 'U'; } if(sta[y-1] == 'U') return 1; return 0;}int main() { int a; int ca = 1; while(scanf("%d",&n) && n) { init(); scanf("%s",sta); scanf("%s",op); scanf("%d",&q); solve(); final = 1 + numl; printf("Pile %d\n",ca++); for(int i=0; i<q; i++) { scanf("%d",&a); printf("Card %d is a ",a); if(judge(final,s[final][n - a]) == 0)printf("face down %d.\n",s[final][n - a]); else printf("face up %d.\n",s[final][n - a]); } } return 0;}
- HDU 3328 Flipper (stack)
- hdu 3328 Flipper <stack>
- hdu 3328 Flipper(栈)
- HDU 3328 Flipper(栈模拟)
- HDU 3328 Flipper(优先队列)
- hdu 3328 Flipper
- hdu 3328 Flipper
- HDU 3328 Flipper [模拟]
- hdu 3328 Flipper 模拟题
- HDU-3328-Flipper(栈模拟)
- hdu 3328 Flipper(栈模拟)
- HDU 3328 Flipper 魔术纸牌
- HDU 3328 Flipper 栈的应用
- hdu Flipper (用栈模拟)
- Flipper(栈)
- Flipper (栈模拟)
- Flipper
- Flipper
- 技术39
- 用find和rm命令来批量删除文件
- SQL Server 2005-同步复制技术:发布、订阅
- http协议简介
- [eclipse] Open type (Ctrl-Shift-T)找不到类
- HDU 3328 Flipper (stack)
- JAVA生活例子
- Oracle递归查询示例分析
- concurrentMap
- 在UILable上添加点击事件
- eclipse升级后Android使用JAR报错
- C#入门经典—第七章
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- 远程调用服务的设计构思(zookeeper的一种应用实践)