Description

Input

第一行为两个整数n, m。第二行有n个整数,为a1,a2, …, an。

Output

包含n行,每行m个1~n×m的正整数,各不相同,以空格分开。如果有多解,输出任意一组解;如果无解,输出一个整数0。

Sample Input & Sample Output

 

HINT

30%的数据满足n, m≤10

100%的数据满足3≤n, m≤200

题解:

把ai认为是i的父亲,使其连边,那么题目给出的关系构成了一个基环树森林。

对于在环外、指向环的边(即“树”的部分),使骰子的每一个面都比其父亲大。

观察1、4样例可以发现一个构造方式:对于一个大小为n环,从第一个点开始,逆着父亲边放入1~n;再从第一个点在环上的儿子开始,逆着父亲边以此放入n+1~2*n,直到放满n*m个数。

但是这个构造法在样例3中失败了。事实上,可以证明,只有在像样例3这种环大小为3骰子面数为4的情况下,该方法会失效。对于这种情况,进行特判。

注意环大小为2或是m<=2的情况,一定无法构造。

代码:

 const
bb:array[..]of longint=(,,,,,,,,,,,);
var
i,j,k,l,n,m,cnt:longint;
fa,a,b,c:array[..]of longint;
d:array[..,..]of longint;
procedure ss2(x:longint);
var i:longint;
begin
if a[x]< then
begin
for i:= to m do
begin inc(cnt); d[x,i]:=cnt; end;
a[x]:=;
end;
i:=c[x];
while i> do
begin
if a[i]< then ss2(i);
i:=b[i];
end;
end;
procedure ss(x:longint);
var i,j,k,l,xx:longint;
begin
a[x]:=; x:=fa[x];
while a[x]= do
begin
a[x]:=; x:=fa[x];
end;
k:=; xx:=fa[x]; a[x]:=;
while x<>xx do begin inc(k); a[xx]:=; xx:=fa[xx]; end;
if k<= then begin writeln(); halt; end;
if(k=)and(m=)then
begin
for i:= to do
begin
d[x,+((i-)div )]:=bb[i];
x:=fa[x];
end;
end else
begin
for i:= to m do
begin
l:=cnt+k;
for j:= to k do
begin
d[x,i]:=l; dec(l);
if j<>k then x:=fa[x];
end;
cnt:=cnt+k;
end;
end;
for i:= to k do
begin
ss2(x); x:=fa[x];
end;
end;
begin
readln(n,m);
for i:= to n do
begin
read(fa[i]);
b[i]:=c[fa[i]]; c[fa[i]]:=i;
end;
for i:= to n do
if a[i]= then ss(i);
for i:= to n do
begin
for j:= to m do write(d[i,j],' ');
writeln;
end;
end.

BZOJ1298[SCOI2009]骰子的学问的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. Frida HOOK微信实现骰子作弊

    由于微信摇骰子的功能在本地进行随机后在发送,所以存在可以hook掉判断骰子数的方法进行修改作弊. 1.frida实现hook java层函数1)写个用来测试的demo,当我们点击按钮的时候会弹出窗口显 ...

  3. js+css实现骰子的随机转动

    网上找的例子,然后增添了新的东西,在这里展示一下...... 效果图预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  4. BZOJ1026: [SCOI2009]windy数[数位DP]

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6346  Solved: 2831[Submit][Sta ...

  5. html canvas 骰子1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)

    ---恢复内容开始--- 今天我们来讲的就是项目<掷骰子> 首先我们先下载资源包,也就是我们需要的图片[点击图片下载] 在我们下载完图片之后,我们就可以开始创建项目 一.我们项目的做法可以 ...

  7. html5掷骰子的小demo

    代码如下: <!DOCTYPE> <html> <title>柯乐义</title> <head> <script> var l ...

  8. 【编程题目】n 个骰子的点数

    67.俩个闲玩娱乐(运算).2.n 个骰子的点数.把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 S.输入 n,打印出 S 的所有可能的值出现的概率. 思路:用递归把每个骰子的可能情况变量,记录 ...

  9. 【原】CSS3的3D动画 ——3D旋转之骰子样式的钟表(2)下.md

    之前看到智能社主页的那个骰子样式的钟表,最近研究了一下,虽然没有仔细看他是怎么做的,但是学了css3的动画之后想自己尝试着写一下,用到的原理可能和智能社网站的不太一样,我自己主要用到了css3和js. ...

随机推荐

  1. 制作自己的MVC框架(二)——启动

    自己写了个框架,取名为“PrimusPHP”,就3个文件夹,log中是日志文件,会自动生成. app中就是控制器和视图,public中是入口文件和静态资源,library中既有框架的核心类,还有工具类 ...

  2. ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证

    原文:Model Validation 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 在这篇文章中: 章节: 介绍模型验证 验证 Attribute 模型状态 处理 ...

  3. 微信企业号开发(1)WebAPI在回调模式中的URL验证

    微信回调模式的官方文档. 开发语言:C#(微信相关功能代码可以从官网下载) 首先,必须要明确几个参数,这几个参数在微信企业号中,每次调用都会使用到. 1.msg_signature:签名(已加密,加密 ...

  4. .NET 同步与异步之封装成Task(五)

    本随笔续接:.NET 实现并行的几种方式(四) 前篇随笔已经介绍了几种可以实现并发的方式,其中异步方法.是最简便的方式.而 异步方式是基于 Task 和 async修饰符和await运算符实现的. 换 ...

  5. AutoResetEvent ManualResetEvent WaitOne使用注意事项

    公司还用这些老家伙没办法,用了几次这俩.每次用都要重新翻一下A片. 好好的A片楞是翻译成了禅经.把这东西弄成个玄学.微软也是吃枣药丸.参考了@风中灵药的blog.写的牛逼. 还有一些公司用到的风中灵药 ...

  6. Sql常用语句(3)

    --显示sql server现有的所有数据库 exec sp_helpdb --查看数据表设置的约束 exec sp_helpconstraint SubjectType --update selec ...

  7. 解析ListView联动的实现--仿饿了么点餐界面

    一.博客的由来 大神王丰蛋哥 之前一篇博客仿饿了点餐界面2个ListView联动(http://www.cnblogs.com/wangfengdange/p/5886064.html) 主要实现了2 ...

  8. 用C++实现的贪吃蛇游戏

    我是一个C++初学者,控制台实现了一个贪吃蛇游戏. 代码如下: //"贪吃蛇游戏"V1.0 //李国良于2016年12月29日编写完成 #include <iostream& ...

  9. 记录一次bug解决过程:可维护性和性能优化

    一.总结 使用某些变量的地方在2次以上的,强烈建议使用枚举值来维护变量,日后方便扩展. 查数据库的方法调用,能合并就净量去合并. 二.Bug描述 枚举变量的维护以及方法使用: public class ...

  10. C标准头文件<errno.h>

    声明了错误处理相关的宏 errno errno即error number,在程序启动时被设为0,当某个库函数运行出现错误的时候,会将相应的能表达错误类型的数字赋值给这个左值,这些数字往往有相应的宏来表 ...