• A

不多说了吧,直接扫一遍求出 \(r_i>b_i\) 的个数和 \(r_i<b_i\) 的个数

  • B

稍微打个表找个规律就可以发现,当 \(n\) 为奇数的时候,答案为 \(\dfrac{(n+1)(n+3)}{2}\),当 \(n\) 为偶数的时候,答案为 \((\dfrac{n}{2}+1)^2\)。

  • C

考虑 \(\operatorname{gcd}\) 的另一种计算方式,\(\operatorname{gcd}(a_1,a_2,\dots,a_n)=\operatorname{gcd}(a_1,a_2-a_1,a_3-a_2,\dots,a_n-a_{n-1})\),那么就有 \(\operatorname{gcd}(a_1+x,a_2+x,\dots,a_n+x)=\operatorname{gcd}(a_1+x,a_2-a_1,a_3-a_2,\dots,a_n-a_{n-1})\),预处理出 \(G=\operatorname{gcd}(a_2-a_1,a_3-a_2,\dots,a_n-a_{n-1})\),然后对于每组询问,输出 \(\operatorname{gcd}(G,a_1+b_j)\) 即可。

  • D

首先要明确的一点是,我们不会出现回倒的情况,就是从杯子 \(x\) 倒到一个杯子 \(y\),再倒到一个杯子 \(z\),因为这样还不如 \(x\) 直接倒到 \(z\),\(y\) 直接倒到 \(z\)。

于是本题变为选择 \(k\) 个杯子 \(i_1,i_2,\dots,i_k\),将所有其它杯子里的水倒到这 \(k\) 个杯子里,这样总共能容纳 \(\min(a_{i_1}+a_{i_2}+\dots+a_{i_k},b_{i_1}+b_{i_2}+\dots+b_{i_k}+\sum\limits_{i \text{没被选择}}\frac{b_i}{2})\) 的水。

然后就可以 \(dp\) 了,\(dp_{i,j,k}\) 表示在前 \(i\) 个杯子里选择了 \(j\) 个杯子,这 \(j\) 个杯子的 \(a_i\) 的和为 \(k\),最多能容纳多少水。时空复杂度均 \(n^4\)。

  • E

现场被这题区分了/kk

首先要明确的一点是 LRUD 和 IC 肯定不是同一类的。如果 \(s\) 中只包含 LRUD,那此题就变得异常简单。直接维护两个标记 \(x,y\) 表示行/列分别位移了多少就可以了。

重头戏在于 I 和 C。首先我们要理解 I 和 C 的本质。

对于排列 \(p_1,p_2,\dots,p_n\),我们如果把每个元素看作一个二维坐标 \((i,p_i)\),那么这个排列的逆元相当于 \((p_i,i)\),即交换两维坐标的值。

I 和 C 也是如此。如果我们把这个矩阵看作 \(n^2\) 个三维空间里的点 \((i,j,a_{i,j})\),那么 I 操作其实就是交换 x,z 坐标的值,C 操作其实是交换 y,z 的值。

这样一来这题就很好做了,对于 LRUD,记录每一维的增量,对于 IC,记录当前每一维是原来的第几维,这样每个操作都可以 \(\mathcal O(1)\) 解决了。

看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

  • F

现场试图看这道题结果什么思路都没有。

考虑记 \(0\) 为 \(-1\),\(1\) 为 \(+1\),这样可以得到一个长度为 \(|s|\) 的由 \(+1\) 和 \(-1\) 组成的序列。

然后对这个序列做一遍前缀和,并连一条 \(s_i\to s_{i+1}\) 的有向边,这样可以得到一张图,一个欧拉回路就对应着一个字符串。

考虑题目中那个奇怪的操作的本质。假设我们对区间 \([l,r]\) 进行操作。既然 \([l,r]\) 要求 01 个数相等,那么肯定有 \(s_{l-1}=s_r\),而翻转+反转实际上等于将这些边反向。所以实际上该操作等价于选择一个环然后将环上所有边反向。

这里需要观察出一个性质:就是操作前后,原图所包含的边集 \(E\) 是不变的。因为每次操作是将边反向,所以如果把有向边改为无向边,那么边集显然是不变的。又由于我们操作的是一个环,所以对于一条边 \((x,y)\),\(x\to y\) 和 \(y\to x\) 的次数是一样的,所以 \(x\to y\) 和 \(y\to x\) 在操作前后出现次数都是相同的。

有了这个性质,我们还需观察出另一个性质:原图任意一条欧拉回路(起点和终点必须与初始相同)代表的都可以由原字符串进行一系列操作得到:首先我们假设原路径与当前路径在 \(x\) 位置出现了分歧,一个走了 \(x\to x+1\) 的边,一个走了 \(x\to x-1\) 的边。而这两个路径终究还是要走 \(x\to x-1\) 和 \(x\to x+1\) 的边的,所以肯定有一条边 \(x+1\to x\),也有一条边 \(x-1\to x\),此时我们选择 \(x\to x-1\to x\to x+1\to x\),并将其翻转,看看会发生什么。此时我们惊奇地发现,原来先走 \(x\to x-1\) 的路径改走 \(x\to x+1\) 了!以此类推,最后两个路径一定会重合。

于是此题就变为:求字典序最小的欧拉序。直接贪心就可以了。

看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

看到没?什么超纲的算法都没有。所以啊,菜是原罪/kk

Codeforces Round #691 (Div. 2) 题解的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  3. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  4. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  5. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  6. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  7. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  8. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

  9. 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 题解 直接 ...

随机推荐

  1. 3.4 Common Principles 通用原则

    3.4 Common Principles 通用原则 Before going into details, let's see some overall DDD principles; 在讨论细节之前 ...

  2. Java序列元素替换

    1.数组 直接赋值. 2.String (1) String是不可变的,只能将新的字符串重新赋给String变量.可使用substring进行拼接: String s="hello" ...

  3. Java集合 - 集合知识点总结概述

    集合概述 概念:对象的容器,定义了对多个对象进项操作的的常用方法.可实现数组的功能. 和数组的区别: 数组长度固定,集合长度不固定. 数组可以存储基本类型和引用类型,集合只能存储引用类型. 位置: j ...

  4. Coursera Deep Learning笔记 卷积神经网络基础

    参考1 参考2 1. 计算机视觉 使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大.例如一张64x64x3的图片,神经网络输入层的维度为12288. 如果图片尺寸较大,例如一张1000x10 ...

  5. 从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)

    纸上得来终觉浅,绝知此事要躬行 注意: 本文 SpringBoot 版本为 2.5.2; JDK 版本 为 jdk 11. 前言: 前文:你了解SpringBoot启动时API相关信息是用什么数据结构 ...

  6. 使用logstash的grok插件解析springboot日志

    使用logstash的grok插件解析springboot日志 一.背景 二.解决思路 三.前置知识 四.实现步骤 1.准备测试数据 2.编写`grok`表达式 3.编写 logstash pipel ...

  7. Noip模拟52 2021.9.13

    T1 异或 比较稳的切掉 观察数据范围,无法线性筛啥的,根号复杂度也会死,于是只能考虑$log$级 然后打表 发现当$n$为$2^i$时的答案是一个可递归数列: $1,3,7,15,31,63,127 ...

  8. NOIP模拟22

    T1d 一道垃圾贪心,写个堆优化或者桶就行 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; ...

  9. Spring Boot 2.5.0 重新设计的spring.sql.init 配置有何用?

    前几天Spring Boot 2.5.0发布了,其中提到了关于Datasource初始化机制的调整,有读者私信想了解这方面做了什么调整.那么今天就要详细说说这个重新设计的配置内容,并结合实际情况说说我 ...

  10. 如何抓取直播源及视频URL地址-疯狂URL(教程)

    直播源介绍 首先,我们来快速了解一下什么是直播源,所谓的直播源,其实就说推流地址,推流地址可能你也不知道是什么,那么我再简单说一下,推流地址就是,当某个直播开播的时候,需要将自己的直播状态实时的展示给 ...