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的情况,一定无法构造。

代码:

  1. const
  2. bb:array[..]of longint=(,,,,,,,,,,,);
  3. var
  4. i,j,k,l,n,m,cnt:longint;
  5. fa,a,b,c:array[..]of longint;
  6. d:array[..,..]of longint;
  7. procedure ss2(x:longint);
  8. var i:longint;
  9. begin
  10. if a[x]< then
  11. begin
  12. for i:= to m do
  13. begin inc(cnt); d[x,i]:=cnt; end;
  14. a[x]:=;
  15. end;
  16. i:=c[x];
  17. while i> do
  18. begin
  19. if a[i]< then ss2(i);
  20. i:=b[i];
  21. end;
  22. end;
  23. procedure ss(x:longint);
  24. var i,j,k,l,xx:longint;
  25. begin
  26. a[x]:=; x:=fa[x];
  27. while a[x]= do
  28. begin
  29. a[x]:=; x:=fa[x];
  30. end;
  31. k:=; xx:=fa[x]; a[x]:=;
  32. while x<>xx do begin inc(k); a[xx]:=; xx:=fa[xx]; end;
  33. if k<= then begin writeln(); halt; end;
  34. if(k=)and(m=)then
  35. begin
  36. for i:= to do
  37. begin
  38. d[x,+((i-)div )]:=bb[i];
  39. x:=fa[x];
  40. end;
  41. end else
  42. begin
  43. for i:= to m do
  44. begin
  45. l:=cnt+k;
  46. for j:= to k do
  47. begin
  48. d[x,i]:=l; dec(l);
  49. if j<>k then x:=fa[x];
  50. end;
  51. cnt:=cnt+k;
  52. end;
  53. end;
  54. for i:= to k do
  55. begin
  56. ss2(x); x:=fa[x];
  57. end;
  58. end;
  59. begin
  60. readln(n,m);
  61. for i:= to n do
  62. begin
  63. read(fa[i]);
  64. b[i]:=c[fa[i]]; c[fa[i]]:=i;
  65. end;
  66. for i:= to n do
  67. if a[i]= then ss(i);
  68. for i:= to n do
  69. begin
  70. for j:= to m do write(d[i,j],' ');
  71. writeln;
  72. end;
  73. 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. vim 编辑器简单使用总结

    http://blog.csdn.net/sharp_allen/article/details/27075133转载 说了这么多,其实还少一个和word,记事本一样的编辑器,在各个操作系统都有编辑器 ...

  2. Moon.Orm 入门总指南

    注意:下面的pdf文件强烈建议下载或在线查看 1)旗舰版帮助文档点击查看或下载 2)http://pan.baidu.com/s/1hq7krFu(新手手册下载)(强烈推荐) 3)性能及规范下载,网友 ...

  3. line-height不同单位之间的区别

    line-height用来设置元素的行高. 该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离. line-height 与 font-size 的计算值 ...

  4. 获取asp.net服务器控件的客户端ID和Name

    前几天在做项目的时候,遇到一个问题,想查看Asp.net中服务器控件在客户端显示的name属性.起初,感觉不是很难找,但就是找不到,几经周折,终于发现了: string btnClientName = ...

  5. PHP基础知识第二趴

    下期预告,函数...

  6. 【初探IONIC】不会Native可不可以开发APP?

    前言 Hybrid技术流行已经有一段日子了,楼主的关注点也一直围绕着移动端围绕着Hybrid相关展开,Hybrid已经是大大提升开发效率的开发方式了,但是仍然需要至少一个IOS与Andriod,那么可 ...

  7. ES6之数组扩展方法【一】(相当好用)

    form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作: ...

  8. O365(世纪互联)SharePoint 之使用Designer报错

    前言 在SharePoint Online中使用Designer报错,错误为:This Feature has been disabled by your administrator.找了好久发现原因 ...

  9. Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode

    Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...

  10. Lucene提供的条件判断查询

    第一.按词条搜索 - TermQuery query = new TermQuery(new Term("name","word1"));hits = sear ...