鬼脚图,又称画鬼脚,在日本称作阿弥陀签,是一种经典游戏,也是一种简易的决策方法,常常用来抽签或决定分配组合。

下图就是一张鬼脚图,其包含若干条竖线和若干条横线。请注意,横线只能水平连接相邻的两条竖线,且 在同一高度只会有一条横线

在图的上方,我们将这 n 条竖线依次标号为 1 到 n。以数字 3 为例,它会沿着所在的竖线下降,期间如果 遇到横线就会移动到横线的另一端,最终降落至下面的第一条竖线。上图中还标出了另外几种数字的最终位置。奇特的是,开始时每条竖线上都有一个数字,而 最终每条竖线下还是有一个数字

现在,相信你一定已经理解了鬼脚图的规则,那么我们想请你完成下面的两个任务——

  1. 读入一张有 n 条竖线和 m 条横线的鬼脚图,请你输出最下面一行的最终序列。

  2. 如果让你设计一个鬼脚图最终序列达到上面的效果,你 最少需要多少条横线

输入格式

第一行 2 个数字 n,m,表示竖线和横线的数量。

第二行 m 个数字,依次表示从高到低的横线。数字 a 的意义为,在第 a(1≤a<n)条竖线和第 a+1 条竖线间存在一条横线。

输出格式

第一行 n 个数字,表示该鬼脚图的最终序列。

第二行 1 个数字,表示最少需要多少条横线。

数据范围

对于 10% 的数据:n≤3,m≤5。

对于 20% 的数据:n≤4,m≤100。

对于 40% 的数据:n≤8,m≤1000。

对于 60%的数据:n≤1000,m≤5000。

对于 100%的数据:n≤100000,m≤1000000。

样例输入

3 3
1 2 1

样例输出

3 2 1
3对于高度从大到小的横线,等价于在最终序列中交换最终序列开始与初始序列相同然后模拟,交换横线端点的值

第二问,要用最少步数得到显然就是最终序列的逆序对数
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int n,m,a[100001],t[1000001];
 7 long long ans;
 8 void partition(int l,int r)
 9 {
10     if (l>=r)
11         return;
12     int mid=(l+r)/2;
13     partition(l,mid);
14     partition(mid+1,r);
15     int i=l,j=mid+1,k=l;
16     while(i<=mid&&j<=r)
17     {
18         if(a[i]>a[j])
19         {
20             ans=(ans+mid-i+1);
21             t[k]=a[j];
22             k++;
23             j++;
24         }
25         else
26         {
27             t[k]=a[i];
28             k++;
29             i++;
30         }
31     }
32     while(i<=mid)
33     {
34         t[k]=a[i];
35         k++;
36         i++;
37     }
38     while(j<=r)
39     {
40         t[k]=a[j];
41         k++;
42         j++;
43     }
44     for(i=l; i<=r; i++)
45         a[i]=t[i];
46 }
47 int main()
48 {int i,x;
49     cin>>n>>m;
50     for (i=1;i<=n;i++)
51     a[i]=i;
52     for (i=1;i<=m;i++)
53     {
54         scanf("%d",&x);
55         swap(a[x],a[x+1]);
56     }
57     for (i=1;i<=n;i++)
58         if (i<n)
59         printf("%d ",a[i]);
60  else cout<<a[i];
61  partition(1,n);
62  cout<<endl<<ans;
63 }

转载于:https://www.cnblogs.com/Y-E-T-I/p/7592087.html

计蒜客NOIP模拟赛4 D2T1 鬼脚图相关推荐

  1. 计蒜客NOIP模拟赛(2) D1T1邻家男孩

    凡是一个具有领导力的孩子.现实生活中他特别喜欢玩一个叫做 UNO 的纸牌游戏,他也总是带着其他小朋友一起玩,然后战胜他们.慢慢地,他厌倦了胜利,于是准备发明一种新的双人纸牌游戏. 初始时,每个人手中都 ...

  2. 计蒜客NOIP模拟赛(2) D2T2紫色百合

    [问题描述] "牵着你的手的是她,路边开满了紫色的百合花--" 你从梦中醒来,却依然忘不了梦中的她百合花,每朵百合花都有一个权值,在二进制下写成一行'1',第i朵紫色百合的权值在二 ...

  3. 计蒜客NOIP模拟赛4 D2T2 跑步爱天天

    YOUSIKI 在 noip2016 的一道<天天爱跑步>的题爆零后,潜心研究树上问题,成为了一代大师,于是皮皮妖为了测验他,出了一道题,名曰<跑步爱天天>. 有一个以 1 为 ...

  4. 计蒜客NOIP模拟赛 数三角形

    数三角形 题目描述 刚刚上高中的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图 G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张 ...

  5. 计蒜客NOIP模拟D1T2

    原题: 蒜头君有一棵有根树,树的每一边都有边权,蒜头君想知道任意两点间最短距离之和为多少.另外,由于各种原因,蒜头君的树的边的边权会发生若干次改变,蒜头君想让你告诉他,每一次改变后,任意两点间最短距离 ...

  6. 【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)

    题干: 蒜头去嘉年华玩儿套圈圈,是这么玩儿的.有一些瓶口口径不同的啤酒瓶,瓶子里面有一些奖品.如果蒜头用手上的圈圈套中了啤酒瓶,那么奖品就归他了. 假设蒜头君无限精准,指哪儿打哪儿,并且蒜头了解到,只 ...

  7. 【计蒜客信息学模拟赛1月月赛 - D】Wish(dp计数,数位)

    题干: 如果一个数大于等于 10且任意连续两位都是质数,那么就称之为 Wish 数.当然,第一个 Wish 数是 11. 比如 97,111,131,119 都是 Wish 数,而 12,136 则不 ...

  8. 【计蒜客2017NOIP模拟赛1】

    D1T1 题面 题解:一开始以为傻题,旋转个坐标系就行了,结果光荣爆零~ 结果发现旋转坐标系后,由于多了一些虚点,锤子砸到虚点上了~gg [没有代码] D1T2 题面 题解:计算出每个边对答案的贡献即 ...

  9. 计蒜客一月入门赛:《三个火枪手》题解

    题目链接(https://nanti.jisuanke.com/t/52314) 有 n 个人,其中有 m 对相互认识的关系. 一个人的知名度定义为 有多少人 和他相互认识. 现在蒜头君需要从这 n ...

最新文章

  1. 创业计划书模板(周鸿祎口述)
  2. 通配符?子字符串匹配主字符串次数_突破LeetCode,拿BAT大厂offer之《正则表达式匹配》(动态规划)...
  3. Py中enumerate方法【转载】
  4. Linux基础之shell变量
  5. 每天一香蕉,长成螺纹钢
  6. Derby的jar说明
  7. 谷歌 MapReduce 初探
  8. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)
  9. 如何使用多个端口访问tomcat
  10. 【直通顶会 ICCV2021比赛大揭秘】ICCV2021比赛信息汇总
  11. 微软建了个内部AI大学:“我们很缺人!是时候增强自我造血能力了”
  12. DHCP服务在企业网络中的应用
  13. Latex绘制三线表
  14. 需求分析的文档模板的书写方式
  15. python走迷宫_Python使用Tkinter实现机器人走迷宫
  16. 5个国内优秀网站设计案例分享
  17. 全球首个大规模虐童图像数据库!标记15万图像、20类信息,自动判断图片是否违法​...
  18. 大数据学习笔记(六)HDFS-API
  19. go二维map_go map详细使用方法
  20. JAVA多线程作业-多人买票

热门文章

  1. Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
  2. 初中计算机学业水平考试知识点,初中信息技术学业水平考试复习提纲.doc
  3. c语言拓扑多边形自动生成,拓扑多边形生成算法(C++源码)一
  4. php 开启常驻进程,swoole如何常驻进程
  5. 现在那个拦截捆绑软件比较好_捆绑您的收件箱以更好地开发
  6. mysql数据库关于中文符号的解决
  7. 2K19老是显示与服务器,你与游戏服务器的连接出现问题2k19
  8. android maxlength 汉字,Android TextView maxWidth、maxLines、maxLength、maxEms
  9. LVDS接口分类与数据格式
  10. iOS 开发中添加自定义汉语字体