Codeforces Round #732 (Div.1) 题解
实在是打击人信心的一场比赛啊……一不注意就掉了 50+ 分,rating 没了啊/ll/dk/wq/kk
A
Weak pretest!!!!!11 /fn/fn/fn
一个很显然的注意点是在交换前后,对于每一种数 \(c\) 而言,奇数位上的 \(c\) 中朝右的人数的奇偶性不会发生变化,偶数位上的 \(c\) 中朝右的人数的奇偶性也不会发生变化,因此我们只需检验排序前后奇偶位上数的组成是否相同即可,时间复杂度 \(Tn\log n\)。
现场降智选手,指我无疑了
B
首先根据手玩样例法可以发现 \(\dbinom{13}{5}=\dbinom{13}{8}=1287,\dbinom{13}{4}=\dbinom{13}{9}=715\),因此考虑 \(5,8\),以及后面的 \(4,9\) 是个什么东西,再通过瞪眼法可以发现 \(8\) 恰好是样例中 \(0\) 的个数,\(5\) 恰好是每个全 \(1\) 段中 \(1\) 的个数除以二下取整,于是写个组合数求一求即可。
证明?别问我,我什么也不知道
C
首先记目前没有确定是否被划分进集合的排列的集合为 \(S\),那么我们枚举 \(S\) 中每一个排列 \(p\),如果排列 \(p\) 中存在一个位置满足 \(S\) 中没有其他排列和它值相同,那么根据题目的性质显然它只能在前 \(n\) 个排列中,与此同时我们把与它有重复值的排列设为“不在前 \(n\) 个排列中”并从 \(S\) 中删去;否则根据抽屉原理,每个数在 \(S\) 对应的列中必须恰好出现了两次,这也就意味着那些在原拉丁方阵中的排列和不在原拉丁方阵中的排列是平分秋色的,都能和已经选出的排列集合组成拉丁方阵,此时我们需要将答案乘以 \(2\),并随便选择一个排列设为在拉丁方阵中,并将与其存在重复值的排列从 \(S\) 中删除,重复以下步骤直到选出 \(n\) 个排列为止即可。
时间复杂度 \(n^3\)。
D
我们考虑求出每个排列所有时刻坐标的和 \(s1_i\) 以及平方和 \(s2_i\),记 \(S=\sum\limits_{i=1}^mv_i,T=\sum\limits_{i=1}^mv_i^2\),那么如果没有错误元素,一定有 \(s1_{i+1}-s1_i=S\),由此可以确定错误元素所在的时刻 \(p\),而根据第 \(j\) 个人 \(i\) 时刻的坐标为 \(x_{j}+i·v_j\) 可知,对于三个连续的时刻 \(t-1,t,t+1\),有
\sum\limits_{j=1}^m(x_j+(t-1)·v_j)^2=s2_{t-1}\\
\sum\limits_{j=1}^m(x_j+t·v_j)^2=s2_{t}\\
\sum\limits_{j=1}^m(x_j+(t+1)·v_j)^2=s2_{t+1}
\end{cases}
\]
一式加三式减两倍的二式,得
\]
由此可以确定第 \(i\) 行所有坐标的和及平方和,这样我们枚举修改的元素是哪个,根据第 \(i\) 行坐标的和求出被改前的元素,并 check 平方和是否满足要求即可。
时间复杂度 \(nm\)。
Codeforces Round #732 (Div.1) 题解的更多相关文章
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- Codeforces Round #525 (Div. 2)题解
Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...
- Codeforces Round #160 (Div. 1) 题解【ABCD】
Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...
- Codeforces Round #383 (Div. 2) 题解【ABCDE】
Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...
随机推荐
- Java---String和StringBuffer类
Java---String和StringBuffer类 Java String 类 字符串在Java中属于对象,Java提供String类来创建和操作字符串. 创建字符串 创建字符串常用的方法如下: ...
- 初识HTML02
HTML 超文本标记语言 什么是超文本标记语言 浏览器能够解释和解析的语言 通过元素的形式构建页面结构和填充内容 构建HTML页面 构建页面的步骤 创建一个扩展名为.html和.html的页面文件 向 ...
- 【UE4 C++】获取运行时间、设置时间流速、暂停游戏
基于UGameplayStatics 获取运行时间 /** Returns the frame delta time in seconds, adjusted by time dilation. */ ...
- elasticsearch的索引重建
我们知道es在字段的mapping建立后就不可再次修改mapping的值.在我们实际的情况下有些时候就是需要修改mapping的值,解决方案就是重新构建索引数据. 方式一 : 使用索引别名,创建另外一 ...
- js_数据类型转换
转整数----parseInt(string,radix) 1)类似于从左往右匹配数字,直到匹配到非数字结束,并返回匹配到的数字.同parseFloat(). parseInt("123&q ...
- 六个好习惯让你的PCB设计更优
PCB layout工程师每天对着板子成千上万条走线,各种各样的封装,重复着拉线的工作,也许很多人会觉得是很枯燥无聊的工作内容.看似软件操作搬运工,其实设计人员在过程中要在各种设计规则之间做取舍,兼顾 ...
- 六步教你如何用PADS进行PCB设计?
在使用PADS进行PCB设计的过程中,需要对印制板的设计流程以及相关的注意事项进行重点关注,这样才能更好的为工作组中的设计人员提供系统的设计规范,同时也方便设计人员之间进行相互的交流和检查. 02 设 ...
- 让Visual Studio x64 支持 __asm内联汇编
目录 让Visual Studio x64 支持 __asm内联汇编 Intel Parallel Studio XE 2016安装 设置Interl C++ Compiler 使VS x64支持内联 ...
- centos 7 安装nfs 实现主机目录共享
多台服务器之间共享目录,实现每个服务器进入目录看到的内容都一样 服务器A 服务器B 1.服务器A和服务器B,安装 nfs-utils和rpcbind #yum install -y nfs-utils ...
- springcloud优雅停止上下线与熔断
SpringCloud 服务优雅上下线 Spring Boot 框架使用"约定大于配置"的特性,优雅流畅的开发过程,应用部署启动方式也很优雅.但是我们通常使用的停止应用的方式是 k ...