CF - Round #580 (Div.2) 总结

P.S. 彩色字体可以点

$\text{A. Choose Two Numbers}$

题意:有两个数组,要从两数组各选出一个数,使得它们的和不在任何数组中出现。

这道题的数据范围很小,是签到题,但是这改变不了我交错一发的事实

由于所有数字均不超过 $200$,可以开一个桶来记录是否出现。

之后枚举即可。

 

$\text{B. Make Product Equal One}$

题意:有一个长度为 $N$ 的序列,将一个数字加一或减一需要花费 $1$,求最小花费,使得整个序列的积变成 $1.$

$1 \le N \le 10^5$

这道题问题在于:$-1\times-1=1$,如何处理负负得正的事情?

我们可以使用贪心策略:负数变成 $-1$,正数变成 $1.$

那么,如果这样操作成绩是 $-1$,那么将答案加二,否则直接输出就可以。

但是,我们忽略了 $0$!

不难发现,$0$ 变成 $1$ 和 $-1$ 都要花费 $1.$

因此,只要这个序列有 $0$,直接按照如上策略,不管乘积正负,直接输出答案就可以。

$\text{C. Almost Equal}$

题意:构造一个 $1$ 到 $2n$ 的一个排列,让这个排列形成一个首尾相接的环,并且环上任意连续 $n$ 个数的和之差不超过 $1.$

$1 \le n \le 10^5.$

如果没有答案,输出 $-1.$

下面是一些好方法:

  • DFS 找规律

因为爆搜搜出的所有合法序列的规律是相同的,所以这是一个很好的东西。

用 DFS 可以去枚举 $N=2,3,4,5,6$ 五种情况,足够找规律了。

  • 数学方法

如果 $n$ 为偶数,易知 $\sum_{i=1}^{2n}i$ 为 $n$ 的倍数且不为 $2n$ 的倍数。

所以  $\sum_{i=1}^{2n}i$ 为 $n$ 必为 $2$ 的倍数。

我们随便将这个环对半砍,那么这两半的值一定相等,否则它们的差为 $2$,不满足条件。

比如这样($N=4$):

那么这两块的和必定相等。

我们换一个角度切:

道理相同。

因为总和相同,所以砍成两半的值也是相同的

所以:

红点 * 3 + 上面的紫点 = 红点 * 3 + 下面的紫点 = 总和的一半。

所以两个紫点的值相同。

但排列的元素是两两不同的,矛盾。

因此,$n$ 为偶数的时候无解。 

然后我们思考 $n$ 为奇数的时候。

当 $n$ 为奇数时,$\sum_{i=1}^{2n}i$ 必为奇数

因此,就可以砍出差为 $1$ 的两半了。

当 $n=3$ 的时候,和为 $21$,因此可以砍成两半,分别为 $10$ 和 $11.$

我们先砍两刀:

我们就可以得出,两个紫点的差必为 $1$,否则不成立。

其它也一样。

所以第一个结论是相对的点差为 $1.$

 然后我们想如何构造使得两半差为 $1.$,如下图:

大于号的意义是相同颜色的点相对编号较大的点。

所以策略出来了:

按顺序把每一对点分别赋值为 $(1,2),(3,4),...,(2n-1,2n)$

然后如果我们选定一个点为“大于号”,那么它的两边必须是小于号。

看构造伪代码($n$ 为奇数):

int ans[200010];

for i=1 to n
    if i % 2 == 1
        ans[i] = 2 * i - 1
        ans[i + n] = 2 * i
    else
        ans[i] = 2 * i;
        ans[i + n] = 2 * i - 1;
}

 

 


 

后面的先咕着

转载于:https://www.cnblogs.com/zengpeichen/p/11376369.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值