ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

构造

2020-04-19 12:06:51  阅读:250  来源: 互联网

标签:一堆 构造 节点 行都 yt xt 2k


Coloring Torus 

  如果要构造 n = k 的,那么直接 构造一个第 i 行为 i 的就好了。

那么 n<k<=2n 呢?

我们考虑斜着的列。

  如果第 i 个斜列放 i ,那么也可以达到 n = k 的目的。

  如果第 i 个斜列间隔放两种数,那么仍然可以满足条件。这时候就可以做到 k属于 [n,2n] 了。

放个图便于理解。(下图蓝线穿过的列是特殊的列)

 

 Robot Arms

如果这些点(xt,yt),xt+yt的奇偶性不同那无解

如果xt+yt为偶数,我们先让d1=1,这样转换为xt+yt为奇数的情况。

奇数怎么做?二进制构造。

一:考虑d(k)=1,2,4,...,2k

这样的集合,能走到所有|x|+|y|≤2k+1−1的点(且和为奇数)

对于d(k)−d(k−1)

的区域(新区域),直接走一步就到了(如上图红到紫)

对于原来就能到达的区域,我们可以从内部走到内部。

二:考虑怎么找到方案。

证明:d(k)

能走到到点满足min(|x|,|y|)≤2k−1

证明大概就是最值在|x|=2k−1,|y|=2k时取到,调整发现不优。

我们只要每次从d(k)走到d(k−1)即可,到d(0)时就成功了

通过画图分析,每次把绝对值大的减小就可以从d(k)走到d(k−1)。我们上面是d(k)走到d(k−1),实际上是反过来的,因此输出的字母要注意取反。

 

 

Inverse of Rows and Columns

挺简单的一道题,大概算暴力模拟

当n>1时,为了满足题目的条件,最后的矩阵必须满足两个条件中至少一个:A、第一行全是0 B、最后一行全是1

按照两种情况做两遍(强制使其中一个情况满足)就可以得到答案了吧,以A为例:

若a[1][i]=1,则第i列标记为需要一次操作,然后对之后每一行判断操作后的情况

有两种情况存在答案:

1、对a[1][i]=1的列操作一次后,所有行都只包含0或1,此时可选择将所有行都翻成只有0(或只有1)

2、仅有一行k同时包含0和1,且0和1都挤在一堆(左边一堆0,右边一堆1或左边一堆1,右边一堆0),对于1都在左边的情况对第k行操作一次,然后1——k-1行都翻成0,k+1——n行都翻成1

然后以类似方法对B操作一次,如果两种都不能得出答案print(-1)

 

Construct the Binary Tree

给出 n 个节点深度和为 d问你是否可以构成一个二叉树,可以的话输出全部节点深度。
全部节点组成一条链的话深度和肯定最大,我们就先组成一条链,然后每次移动最下面那个节点,看看移动到哪里合适,然后判断是否可以组成深度和为 d。

 

 

 

 

标签:一堆,构造,节点,行都,yt,xt,2k
来源: https://www.cnblogs.com/2018hzoicyf/p/12730876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有