原题:清华大学出题(侵删)

题意:

模拟俄罗斯方块游戏给出 N 个方块,限高为 M

对于 N 个方块给出 方块的类型 ,方块的方向,方块的最左端的列数。问 N 个方块径直下落后,共可以消除几层?游戏过程中保证不超出限高。

思路:

模拟

代码:

不知道对不对

#include <bits/stdc++.h>
using namespace std;
char kuai;
int n,m,fangxiang,lie,h[15],w[500050];
bool mp[11][500050];
int high,ans,tt;
void debug(){cout<<"debug:"<<endl;cout<<"high:"<<high<<endl;for(int i=0;i<10;i++)cout<<h[i]<<' ';cout<<endl;for(int i=0;i<=tt;i++)cout<<"w:"<<i<<"="<<w[i]<<endl;for(int i=tt;i>0;i--){for(int j=0;j<10;j++){cout<<mp[j][i]<<' ';}cout<<endl;}}
void check(){tt=h[0];for(int i=1;i<10;i++) tt=max(h[i],tt);for(int i=high+1;i<=high+4;i++){if(w[i]==10){int offset=0;while(1){if(w[i]==10){offset++;ans++;w[i]=0;}else break;i++;}int l;for(int j=i-offset;j<=tt;j++){l=0;for(int k=0;k<10;k++){mp[k][j]=mp[k][j+offset];if(mp[k][j]) l++;}w[j]=l;}for(int j=0;j<10;j++){h[j]-=offset;while(high>0&&mp[j][high]==0){h[j]--;high--;}}break;}}
}
void luo(){scanf("%c %d %d",&kuai,&fangxiang,&lie);getchar();if(kuai=='A'){high=max(h[lie],h[lie+1]);h[lie]=high+2;h[lie+1]=high+2;w[high+1]+=2;w[high+2]+=2;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;}else if(kuai=='B'){if(fangxiang==0||fangxiang==2){high=h[lie];h[lie]=high+4;for(int i=1;i<=4;i++) w[high+i]++;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie][high+3]=1;mp[lie][high+4]=1;}else{high=h[lie];for(int i=1;i<4;i++) high=max(high,h[lie+i]);for(int i=0;i<4;i++) h[lie+i]=high+1;w[high+1]+=4;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+2][high+1]=1;mp[lie+3][high+1]=1;}}else if(kuai=='C'){if(fangxiang==0){high=max(h[lie],max(h[lie+1],h[lie+2]));h[lie]=high+2;h[lie+1]=high+1;h[lie+2]=high+1;w[high+1]+=3;w[high+2]++;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie+1][high+1]=1;mp[lie+2][high+1]=1;}else if(fangxiang==1){high=max(h[lie],h[lie+1]);h[lie]=high+1;h[lie+1]=high+3;w[high+1]+=2;w[high+2]++;w[high+3]++;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+1][high+3]=1;}else if(fangxiang==2){high=max(h[lie]-1,max(h[lie+1]-1,h[lie+2]));h[lie]=high+2;h[lie+1]=high+2;h[lie+2]=high+2;w[high+1]++;w[high+2]+=3;mp[lie][high+2]=1;mp[lie+1][high+2]=1;mp[lie+2][high+1]=1;mp[lie+2][high+2]=1;}else if(fangxiang==3){high=max(h[lie],h[lie+1]-2);h[lie]=high+3;h[lie+1]=high+3;w[high+1]++;w[high+2]++;w[high+3]+=2;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie][high+3]=1;mp[lie+1][high+3]=1;}}else if(kuai=='D'){if(fangxiang==0){high=max(h[lie],max(h[lie+1],h[lie+2]));h[lie]=high+1;h[lie+1]=high+1;h[lie+2]=high+2;w[high+1]+=3;w[high+2]++;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+2][high+1]=1;mp[lie+2][high+2]=1;}else if(fangxiang==1){high=max(h[lie]-2,h[lie+1]);h[lie]=high+3;h[lie+1]=high+3;w[high+1]++;w[high+2]++;w[high+3]+=2;mp[lie][high+3]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+1][high+3]=1;}else if(fangxiang==2){high=max(h[lie],max(h[lie+1]-1,h[lie+2]-1));h[lie]=high+2;h[lie+1]=high+2;h[lie+2]=high+2;w[high+1]++;w[high+2]+=3;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie+1][high+2]=1;mp[lie+2][high+2]=1;}else if(fangxiang==3){high=max(h[lie],h[lie+1]);h[lie]=high+3;h[lie+1]=high+1;w[high+1]+=2;w[high+2]++;w[high+3]++;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie][high+3]=1;mp[lie+1][high+1]=1;}}else if(kuai=='E'){if(fangxiang==0||fangxiang==2){high=max(h[lie]-1,max(h[lie+1],h[lie+2]));h[lie]=high+2;h[lie+1]=high+2;h[lie+2]=high+1;w[high+1]+=2;w[high+2]+=2;mp[lie][high+2]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+2][high+1]=1;}else{high=max(h[lie],h[lie+1]-1);h[lie]=high+2;h[lie+1]=high+3;w[high+1]++;w[high+2]+=2;w[high+3]++;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie+1][high+2]=1;mp[lie+1][high+3]=1;}}else if(kuai=='F'){if(fangxiang==0||fangxiang==2){high=max(h[lie],max(h[lie+1],h[lie+2]-1));h[lie]=high+1;h[lie+1]=high+2;h[lie+2]=high+2;w[high+1]+=2;w[high+2]+=2;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+2][high+2]=1;}else{high=max(h[lie]-1,h[lie+1]);h[lie]=high+3;h[lie+1]=high+2;w[high+1]++;w[high+2]+=2;w[high+3]++;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+2][high+2]=1;}}else if(kuai=='G'){if(fangxiang==0){high=max(h[lie],max(h[lie+1],h[lie+2]));h[lie]=high+1;h[lie+1]=high+2;h[lie+2]=high+1;w[high+1]+=3;w[high+2]++;mp[lie][high+1]=1;mp[lie+1][high+1]=1;mp[lie+2][high+1]=1;mp[lie+1][high+2]=1;}else if(fangxiang==1){high=max(h[lie]-1,h[lie+1]);h[lie]=high+2;h[lie+1]=high+3;w[high+1]++;w[high+2]+=2;w[high+3]++;mp[lie][high+2]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+1][high+3]=1;}else if(fangxiang==2){high=max(h[lie]-1,max(h[lie+1],h[lie+2]-1));h[lie]=high+2;h[lie+1]=high+2;h[lie+2]=high+2;w[high+1]++;w[high+2]+=3;mp[lie][high+2]=1;mp[lie+1][high+1]=1;mp[lie+1][high+2]=1;mp[lie+2][high+2]=1;}else if(fangxiang==3){high=max(h[lie],h[lie+1]-1);h[lie]=high+3;h[lie+1]=high+2;w[high+1]++;w[high+2]+=2;w[high+3]++;mp[lie][high+1]=1;mp[lie][high+2]=1;mp[lie][high+3]=1;mp[lie+1][high+2]=1;}}
}
int main()
{while(scanf("%d %d",&n,&m)!=-1){getchar();memset(w,0,sizeof(w));memset(h,0,sizeof(h));memset(mp,0,sizeof(mp));ans=0;high=0;for(int i=0;i<n;i++){luo();check();//debug();}cout<<ans<<endl;}return 0;
}

2017 东北四省赛热身赛 C相关推荐

  1. 2018东北四省赛 Store The Matrix (矩阵)

    2018东北四省赛 Store The Matrix (矩阵) 题目描述 Given a matrix M with r rows and c columns. It is obviously tha ...

  2. 2018东北四省赛 Spin A Web 曼哈顿距离最小生成树

    莫队的论文,讲的很清晰 问题描述:给定平面N个点,两边相连的代价为曼哈顿距离,求这些点的最小生成树 按一般想法,prime复杂度O(n^2),Kruskal复杂度O(n^2 logn),N很大时,这复 ...

  3. 东北四省赛H-Skyscraper-线段树的区间合并优化

    题目描述: At the main street of Byteland, there will be built n skyscrapers, standing sequentially one n ...

  4. 2021CCPC东北四省赛 D. Lowbit 势能线段树

    传送门 分析 分析一下x+lowbit(x)x + lowbit(x)x+lowbit(x)这个操作 如果多次操作之后,那么xxx中只会有最高位存在一,这个时候再执行一次操作就会使整个数字乘二 所以, ...

  5. 【随笔】2015年ICPC四省赛/邀请赛小结

    因为槽点太多了,所以周日比完赛,周一就开始写文章吐槽了QAQ 这比赛真坑,真坑,真坑啊!!!(重要的事情要说三遍) 本次比赛是ICPC主办的东北赛,哈工大跟吉大可能是因为有了CCPC所以不来参加了吧, ...

  6. 2017华东师范大学网赛-拼音魔法

    拼音魔法 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabytes ...

  7. 和平精英明星四排赛,你的网游.fans域名抢了没?

    <和平精英>可谓是当下游戏界的霸王了~随着越来越多的人在玩,"一起吃鸡"也成了这款游戏的代言词.就在上周日,<和平精英>的特种兵代言人"迪丽热巴. ...

  8. 2017 华东师范大学网赛 F.丽娃河的狼人传说 Problem #3263( 贪心)

    丽娃河的狼人传说 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megaby ...

  9. 百度杯2017年春秋欢乐赛

    百度杯2017年春秋欢乐赛 第一场 0x01 小电影 分值:50分 类型:Misc已解答 题目: 我说过这次比赛是让大家开开心心的度过的所以送给你们一个小电影 压缩包内只有一个无法正常打开的名为end ...

  10. CT 系统参数标定及反投影重建成像-2017数模国赛论文A298编程分析

    CT 系统参数标定及反投影重建成像-2017数模国赛论文A298编程分析 之前的同学已经讲解清楚了这篇论文建模的主要思路,我主要讲解代码对建模思路的实现. 本文提到的论文下载地址:http://dxs ...

最新文章

  1. Django_ORM数据表查询总结
  2. strcmp可以比较数组么_6.3 C语言字符数组
  3. Lesson 2.张量的索引、分片、合并以及维度调整
  4. Freemarker的Null处理
  5. web.config配置Access数据库 (C#) ASP.NET+ACCESS
  6. 理解JavaScript里this关键字
  7. springboot应用启动原理(一) 将启动脚本嵌入jar
  8. SCPPO(十一):网站发布中的问题锦集—ReportViewer版本问题
  9. 构建一个可靠的分布式计数器--memcached之incr/decr操作实战分析
  10. 华三 h3c 交换机RSTP配置
  11. 升级TOMATO从DD-WRT固件刷到Tomato(番茄)的详细过程介绍--转
  12. 数独九宫格专家级解题思路
  13. msg1500说明书_MSG1500刷机笔记
  14. JS严格模式(use strict)
  15. 【CodeWars】Ones and Zeros
  16. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化
  17. Google Chorme
  18. SCI入门级知识(带你了解SCI期刊)
  19. oracle序列号、
  20. 实用的shell脚本合集

热门文章

  1. ftp服务器设置上文件大小,ftp服务器文件上传大小设置
  2. C#直接调用IE打开指定的网页文件
  3. ietester不错
  4. php过滤特殊表情符号
  5. Java父亲节贺卡,2018父亲节贺卡内容怎么写?父亲节贺卡写什么好
  6. 阿里云OSS云存储管理实践
  7. “这个世界最可怕的不是很多人比你牛,而是比你牛的人比你还努力。”
  8. ardupilot rover ardurover 电机相关源码 PreArm servo function 33 unassigned
  9. 新房装修选电视机还是投影仪?装修投影仪避坑指南
  10. 4G和3G到底有什么区别