题目

这是一道和俄罗斯方块有关的有趣题目

底面宽度为\(N\),高度无限,初始时方块高度为\(A_i\)

你可以决定每次会下落一个\(1 \times K\)或者\(K \times 1\)的方块

你需要在10000次内把所有方块消完,输出方案

$N , K A_i \le 50 $

题解

#include<bits/stdc++.h>
using namespace std;
const int N=51,K=51;
int n,m,k,a[N],b[N*K],c[K],mn,mx,ans;
struct opt{int x,y;}Ans[10010]; void put(int op,int x){Ans[++ans]=(opt){op,x};} bool judge(){
for(int i=0;i<n;++i)(c[i%k]+=a[i])%=k;
int tmp=c[0];for(int i=0;i<m;++i)if(c[i]!=tmp)return false;
tmp=c[m];for(int i=m;i<k;++i)if(c[i]!=tmp)return false;
return true;
} int main(){
freopen("tetris.in","r",stdin);
freopen("tetris.out","w",stdout);
scanf("%d%d",&n,&k);m=n%k;
for(int i=0;i<n;++i)scanf("%d",&a[i]); if(!judge())return puts("-1"),0; for(int i=1;i<n;++i)while(a[i]<a[i-1])put(1,i),a[i]+=k;
mn=mx=a[0];for(int i=1;i<n;++i)mn=min(mn,a[i]),mx=max(mx,a[i]);
mx-=mn;for(int i=0;i<n;++i)a[i]-=mn,b[a[i]]++; for(int i=mx;i;--i)b[i]+=b[i+1];
for(int i=1;i<=mx;++i)while(b[i]+k<=n)put(2,n-b[i]-k),b[i]+=k; for(int i=0;i<k;++i)c[i]=0;
for(int i=1;i<=mx;++i)c[n-b[i]]++;
for(int i=k-1;i;--i)c[i]+=c[i+1]; mx-=c[0];
int tmp=(mx-1)/k+1;mx=tmp*k;
for(int i=0;i<k-1;++i){
for(int j=0;j<tmp;++j)put(1,i);
a[i]=mx-c[i+1];
}
for(int i=k-1;i<n;++i)a[i]=0; mx=0;for(int i=m;i<=k-1;++i)mx=max(mx,a[i]);
for(int i=0;i<n;++i)while(a[i]<mx)put(1,i),a[i]+=k;
for(int i=0;i<n;++i)a[i]-=mx; if(n%k){
mx=0;for(int i=0;i<m;++i)mx=max(mx,a[i]);
for(int i=0;i<m;++i)while(a[i]<mx)put(1,i),a[i]+=k;
for(int i=m;i<n;i+=k)for(int j=0;j<mx;++j)put(2,i);
} printf("%d\n",ans);
for(int i=1;i<=ans;++i)printf("%d %d\n",Ans[i].x,Ans[i].y+1);
return 0;
}

【JZOJ6214】【20190614】tetris的更多相关文章

  1. 【HDOJ1811】【并查集预处理+拓扑排序】

    http://acm.hdu.edu.cn/showproblem.php?pid=1811 Rank of Tetris Time Limit: 1000/1000 MS (Java/Others) ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  5. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  6. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  7. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  8. 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】

    由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...

  9. 【原创分享·微信支付】C# MVC 微信支付教程系列之现金红包

            微信支付教程系列之现金红包           最近最弄这个微信支付的功能,然后扫码.公众号支付,这些都做了,闲着无聊,就看了看微信支付的其他功能,发现还有一个叫“现金红包”的玩意,想 ...

  10. 【原创分享·微信支付】 C# MVC 微信支付教程系列之扫码支付

    微信支付教程系列之扫码支付                  今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添 ...

随机推荐

  1. FileUpload上传多张照片

    <asp:FileUpload ID="uploaderInput" runat="server" multiple="multiple&quo ...

  2. Netty高性能原理和框架架构解析

    1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件 ...

  3. java 枚举示例

    public enum YNEnum { N(0,"否"), Y(1,"是"); private int code; private String name; ...

  4. ASP.NET SignalR 系列(七)之服务端触发推送

    前面几章讲的都是从客户端触发信息推送的,但在实际项目中,很多信息可能是由系统服务端推送的,下面2图分别展示两种通道 客户端触发推送 服务端推送 下面我们就重点介绍下服务端如何调用集线器的对象进行推送 ...

  5. vue中的混入

    数据对象合并 数据对象在内部会进行浅合并 (一层属性深度),在和组件的数据发生冲突时以组件数据优先 var mixin = { data() { return { msg_mixins: 'mixin ...

  6. Java 之 日期时间类

    一.Date类 1.概述 java.util.Date 类 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) p ...

  7. Java 面向对象—杂项(方法不能重写,修饰符,变量)

    一.哪些方法不能被重写? 1.final 修饰的不能重写 2.static 修饰的不能重写 3.private 修饰的,因为私有的在子类中不可见 4.如果跨包的话,修饰符缺省的也不能被重写,因为缺省的 ...

  8. 访问Stack Overflow速度超慢的原因

    很多网站,尤其是国外网站,为了加快网站的速度,都是用了 Google 的 CDN. 但是在天朝,由于某些原因,导致全球最快的 CDN 变成了全球最慢的. 解决方法步骤如下: 下载ReplaceGoog ...

  9. MySQL倒序索引测试1

    测试环境 MySQL Community Server 准备测试数据 DROP TABLE TB001; CREATE TABLE TB001(ID INT PRIMARY KEY AUTO_INCR ...

  10. xshell免费版

    1.说明 百度搜索xshell有时候会跳到国内的一个网站,从那个网站下载的xshell是收费的,但是国外的网站还是可以下载到免费为学生和学校使用的版本. 2.下载网址 网址:https://www.n ...