HDU 3328 Flipper (stack)
最近着手打基础,做做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 0x7FFFFFFF
- using 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 5934 Bomb(炸弹)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- Java的堆(Heap)和栈(Stack)的区别
Java中的堆(Heap)是一个运行时数据区,用来存放类的对象:栈(Stack)主要存放基本的数据类型(int.char.double等8种基本数据类型)和对象句柄. 例1 int a=5; int ...
- HDU 5734 Acperience(返虚入浑)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU 5724 Chess(国际象棋)
HDU 5724 Chess(国际象棋) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU 5826 physics(物理)
physics(物理) Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) D ...
- HDU 5835 Danganronpa(弹丸论破)
Danganronpa(弹丸论破) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- [置顶] ※数据结构※→☆线性表结构(stack)☆============栈 序列表结构(stack sequence)(六)
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表.栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据.栈 ...
- PHP实现栈(Stack)数据结构
栈(Stack),是一种特殊的后进先出线性表,其只能在一端进行插入(插入一般称为压栈.进栈或入栈)和删除(删除一般称为弹栈.退栈或出栈)操作,允许进行插入和删除操作的一端称为栈顶,另一端则称为栈底.栈 ...
- C# 堆栈(Stack)和队列(Queue)
一.什么是堆?(Heap) 堆是无序的,是一片不连续的内存域,由用户自己来控制和释放,如果用户自己不释放的话,当内存达到一定的特定值时,通过垃圾回收器(GC)来回收. 是程序运行期 ...
随机推荐
- android FragmentPagerAdapter的“标准”配置
private class ImagePagerAdapter extends FragmentPagerAdapter { public List<ImageItem> ...
- android取得所在位置的经纬度
android提供了LocationManager来取得位置,用LocationListener来监听位置的变化 先做一些初始化工作: /** latitude and longitude of cu ...
- ASP.NET路由
ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL. 由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL. ASP.NET MVC 框架和 A ...
- 从数据库中,绑定JQuery Accordion控件---Repeater control
http://aspsnippets.com/Articles/jQuery-Accordion-example-in-ASPNet-using-C-and-VBNet.aspx 1. 添加JQuer ...
- 【Oracle】number类型保留小数位
SQL> SELECT TO_CHAR(, '9990.00') A, TO_CHAR(5.8, '9990.00') B, TO_CHAR(., '9990.00') C FROM dual; ...
- MySQL无法使用、导入中文数据乱码
1,新版的MySQL无法使用 装的新版的mysql-installer-community-5.6.14.0.msi,无法使用(无法导入地图数据,卸载重装mysql_5.6.13.msi,无法启动). ...
- django-extensions
命令行: admin后台管理扩展 后面会出现个放大镜实现搜索补齐功能. 交互式的 Python Shells(shell_plus) 实现自动导入 如果遇到apps中包含的的models名字出现冲突, ...
- Qt Chart 5.7.0 傻瓜安装教程
前提 qtchart 里的README文件(注意红色标记处)(本人翻译不行.多多见谅,也可以在评论里纠正( ⊙ o ⊙ )) --------------- Qt Charts 5.7.0 ----- ...
- java入门(1) 程序运行机制及运行过程
首先我们来看一下java程序在底层是怎么工作的: JAVA有两种核心机制: Java虚拟机(Java Virtual Machine): 1.java虚拟机可以理解成一个以字节码为机器指令的CPU. ...
- SolrCloud Hello Word
Solr Cloud 设计出来的目的是使你的搜索服务具有更高的可用性,提高容错.容灾能力.下面我们在一台电脑上建立2个solr服务,作为一个solrCloud分片(shard),初步认识一下solrC ...