T1

对\(t_i = 1\)的边,将\(u_i, v_i\)连一条边权为\(1\)的边。否则连一条边权为\(0\)的边。

对于每一个连通块,若图中不存在一条边权之和为奇数的圈,则可以将这个连通块二染色,使得每条\(1\)边对应的两个端点不同色,每条\(0\)边对应的两个端点同色。我们判断第一种颜色的值之和的增加量与第二种颜色的值之和的增加量是否相等。

若图中存在一条边权之和为奇数的圈,那么我们只需判断每个点对应的值之和$ \mod 2$ 是否同余。

我们接下来来证明这一事实。不妨设我们构造的图\(G\)连通。必要性显然,只需证明充分性即可。

引理一:对任意一个顶点\(u\),我们可以做到将除了\(u\)之外的点\(v\)上的数从\(a_v\)变为\(b_v\)。

证明:选一棵以\(u\)为根的有根树,我们对一个非根顶点\(v\),假设\(v\)子树内的点都已经变化完毕,那么我们可以适当的操作\(v\)和它父亲的边,使得\(v\)上的值从\(a_v\)变为\(b_v\)。

这样子,若图中不存在一条边权之和为奇数的圈,由于每次第一种颜色的增加量与第二种颜色的增加量相等,所以我们将除了\(u\)之外的点\(v\)从\(a_v\)变为\(b_v\)后,容易证明\(u\)上的数\(a_u\)也变为\(b_u\)。

否则我们有引理二:

引理二:若存在一个包含\(u\)的简单环,使得其边权之和为奇数,则可以将\(u\)上的值增加或减少\(2\),且其它点上的值不变。

证明:设简单环上的点为\(u_0 = u, u_1, .., u_{l - 1}\),\(u_iu_{i + 1}\)上的权值为\(w_i\)。

则若\(\sum_{i = 0}^{j - 1} w_j \equiv 0 (\mod 2)\),我们操作\(u_ju_{j + 1}\)让\(u_j\)增加\(1\),否则让\(u_j\)减少\(1\)。(当\(j = 0\)时,我们是让\(u_0\)增加\(1\)的)。

这样容易验证\(u_0\)上的值增加了\(2\),其它点上的值不变。

同理可以将\(u\)上的值减少\(2\).

结合引理\(1,2\),可以得到如果该图\(G\)不能按上述条件二染色,那么只要保持每个点上的数的和的奇偶性不变,我们找一个边权和为奇的圈上的一个点\(u\),用引理一把除\(u\)之外的点\(v\)的数从\(a_v\)变为\(b_v\),这样不改变\(u\)上的数的奇偶性。我们再用引理二把\(u\)上的数变为\(b_u\)即可!

时间复杂度\(O(n + m)\)

T2

首先,我们容易注意到每次冒泡排序的时候,排在每个数左边且比它大的个数如果还有,那么恰好减少了\(1\)。

这样,设排在数字\(i\)前面且比\(i\)大的数有\(a_i\)个,那么经过\(k\)轮冒泡排序后,答案为\(\sum_{i = 1}^{n} {\max(a_i - k, 0)}\)。

我们先对初始的排列中求出\(a_i\)的值,注意到每次相邻交换操作,只有最多两个\(a_i\)的值发生改变。设\(c_i\)表示\(i\)在\(a_1, ..., a_n\)中出现的次数。我们用两个树状数组维护\(c_1, ..., c_n\)的部分和,以及\(c_1, 2c_2, ..., nc_n\)的部分和。这样子即可在\(O(\log n)\)的时间内计算出经过\(k\)轮冒泡排序后的答案。

时间复杂度\(O((n + m) \log n)\)

T3

首先,我们容易发现对一次询问\(k\),问题等价于将\(n\)划分成\((n, k)\)个圈,最大化圈上相邻元素的乘积和。

(为了之后讨论方便,我们暂且与出题人心灵相通一下,把一个长度为\(2\)的圈理解成相邻元素乘积算两次。但是本人并没有看到网站所发的公告,也没有和出题人心灵相通。)

我们称\(b_1 \leq b_2 \leq ... \leq b_m\)在圈上的排列方式是好的,当且仅当它按如下方式排列:

\(b_1\)与\(b_2\)相邻,\(b_m\)与\(b_{m - 1}\)相邻,且\(b_i\)与\(b_{i + 2}\)相邻(\(1 \leq i \leq m - 2\))。

不妨设\(a_1 \leq a_2 \leq ... \leq a_n\),我们证明如下命题:

将这\(n\)个数划分成长度为\(\frac{n}{k}\)的\(k\)个圈,使得圈上相邻两个元素乘积之和最大,则取到最大值的解中存在一种满足:

性质1: 每个圈所拥有的元素在下标上是连续的一段。

性质2: 每个圈上的数的排列方式是好的。

(\(k | n,k < n\))

证明:我们另取一个数列\(c\)满足\(c_1 < c_2 < ... < c_n\)。我们在最优解中再取在圈上相邻两个下标\(c\)值乘积之和最大者。如果两个解中虽然相邻下标的\(a\)值乘积相等,但\(c\)值乘积第一个解比第二个解严格大,那么我们也认为第一个解比第二个解优。之后两个解的比较都是先比\(a\)值乘积之和,再比\(c\)值乘积之和。我们证明我们取的这个最优解必定满足了上述条件。

容易知道只需考虑\(k \leq 2\)的情况即可。这样若\(k \ge 3\),把任意两个圈的元素提取成一个子序列,均满足性质1,2,那么整个最优解也满足性质(1)(2)了。

\(k = 1\)证明:对\(n\)归纳。当\(n = 2\)时,显然成立。

假设结论对\(n - 1\)成立,我们设与\(a_n\)相邻的两个数为\(a_i, a_j\),将\(a_n\)从圈中删去,连接\(a_i, a_j\),则由归纳假设,剩下的圈中相邻元素乘积之和最大值当且仅当在圈上的数排列方式为“好的”时取到。将\(a_n\)重新加入圈中,那么我们得到的和的增量为:

\[a_na_i + a_na_j - a_ia_j = a_n^2 - (a_n - a_i)(a_n - a_j) \leq a_n^2 - (a_n - a_{n - 1})(a_n - a_{n - 2}) = a_na_{n - 1} + a_na_{n - 2} - a_{n - 1}a_{n - 2} \tag 2
\]

而当圈上所排列的数是好的的时候,\(a_{n - 1}\)与\(a_{n - 2}\)也是相邻的。且把\(a_i\)换成\(c_i\)后,\((2)\)等号当且仅当\(\{i, j \} = \{n - 1, n - 2 \}\)时取得。因此\(n\)个数在圈上的一个好的排列,构成唯一的最优解。

\(k = 2\)证明:

如果这个解的大小不比\(k = 1\)时好,那么当\(k = 2\)的解满足性质(1)(2)时,容易验证它比\(k = 1\)时的解要更优。(通过一定的计算可以知道\(a\)的乘积之和多了\((a_{k + 1} - a_k) (a_{k + 2} - a_{k - 1})\))

如果\(1 \leq i, j, k, l \leq n\)满足下标\(i,k\)在第一个圈相邻,\(j, l\)在第二个圈相邻,且\(i < k, j < l\),那么我们讨论三种位置关系:

(本来是\(6\)种,但是由两个圈的对称性,只需考虑\(3\)种)

情形一:\(i < j < k < l\),这个时候改为\(i\)与\(j\)相邻,\(k\)与\(l\)相邻,形成的一个圈的解比原解还要优,矛盾!

情形二:\(i < j < l < k\),这个时候改为\(i\)与\(j\)相邻,\(l\)与\(k\)相邻,形成的一个圈的解比原解还要优,矛盾!

情形三:\(i < k < j < l\)。这是我们想要的情况。由于排除了情形一、二,我们可以得到\(j\)小于与\(k\)相邻的所有的下标。依次可以推出\(j\)小于圈上所有的下标。

因此最优解只能是一个圈占据\(1, 2, ..., k\),\(k + 1, ..., 2k\),再用\(k = 1\)的结论即得证!

有了这一结论,只需枚举\(n\)的因数\(k\),贪心求解即可。

复杂度为\(O(n \log n + n d(n))\),其中\(d(n)\)为\(n\)的正因数个数。

注意,请你要与出题人心灵相通!

考场上由于与出题人心灵不相通的原因,此题应该会获得玄学分数吧。

NOI Online 题解的更多相关文章

  1. 【题解】NOI 系列题解总集

    每次做一道 NOI 系列的估计都很激动吧,对于我这种萌新来说( P1731 [NOI1999]生日蛋糕 练习剪枝技巧,关于剪枝,欢迎看我的垃圾无意义笔记 这道题是有一定难度的,需要运用各种高科技剪枝( ...

  2. 【noi openjudge题解】最低通行费

    这道题完全没有必要去计算限制时间,把时间当做一个参数来做就行了.知道了这一点之后就可以直接使用DP求解了 #include <algorithm> #include <iostrea ...

  3. POJ1185 炮兵阵地 —— 状压DP

    题目链接:http://poj.org/problem?id=1185 炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions ...

  4. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  5. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  6. 【NOI 2019】同步赛 / 题解 / 感想

    非常颓写不动题怎么办…… 写下这篇博客警示自己吧…… 游记 7.16 我并不在广二参加 NOI,而是在距离广二体育馆一公里远的包间打同步赛(其实就是给写不动题找个理由) 上午身体不舒服,鸽了半天才看题 ...

  7. NOI 2021 部分题目题解

    最近几天复盘了一下NOI 2021,愈发发觉自己的愚蠢,可惜D2T3仍是不会,于是只写前面的题解 Day1 T1 可以发现,每次相当于将 \(x\to y\) 染上一种全新颜色,然后一条边是重边当且仅 ...

  8. [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)

    [NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...

  9. 【NOI题解】【bzoj题解】NOI2008 bzoj1063 道路设计

    @ACMLCZH学长出的毒瘤题T3.再也不是“善良”的出题人了. 题意:bzoj. 题解: 经典的树形DP题目,屡见不鲜了,然而我还是没有写出来. 这一类的题目有很多,例如这里的C题. 主要套路是把对 ...

随机推荐

  1. sql 训练及总结

    1.sql语句中=与in的区别,=是指一对一之间的等于,而in是指一对多之间的:同样的道理,<>与 not in的区别,<>是指一对一之间的不等于,而not  in是指一对多之 ...

  2. Tomcat Web服务器与常用Web服务器

    一.常用Web服务器 Tomcat ​ 由Apache组织提供的一种Web服务器,提供对jsp和servlet的支持.它是一种轻量级的javaWeb容器服务器.也是当前应用最广的JavaWeb服务器( ...

  3. Golang中的OO(面向对象)

    组合 > 继承 Go中的设计,以为继承的被诟病,所以Golang的设计团队在语言的设计时并没有采用经典的OO模式 那Golang中各个部分是怎么联系到一起的呢 type ReadWriter i ...

  4. 《Machine Learning in Action》—— Taoye给你讲讲决策树到底是支什么“鬼”

    <Machine Learning in Action>-- Taoye给你讲讲决策树到底是支什么"鬼" 前面我们已经详细讲解了线性SVM以及SMO的初步优化过程,具体 ...

  5. BeanFactory and FactoryBean

    BeanFactory,这是Spring容器的基础实现类,它负责生产和管理Bean的一个工厂.当然BeanFactory只是一个接口,它的常用实现有XmlBeanFactory.DefaultList ...

  6. 我要进大厂之大数据ZooKeeper知识点(1)

    01 让我们一起学大数据 老刘又回来啦!在实验室师兄师姐都找完工作之后,在结束各种科研工作之后,老刘现在也要为找工作而努力了,要开始大数据各个知识点的复习总结了.老刘会分享出自己的知识点总结,一是希望 ...

  7. 冷门的HTML - tabindex 的作用

    冷门的HTML - tabindex 的作用 HTML 的 tabindex 属性开发过程中一般不会使用到,最近开发中有个需求兼顾富交互,便总结了一下.本篇文章同时收录在我的[前端知识点]中,Gith ...

  8. 利用代理IP池(proxy pool)搭建免费ip代理和api

    先看这里!!!---->转载:Python爬虫代理IP池(proxy pool) WIIN10安装中遇到的问题: 一.先安装Microsoft Visual C++ Compiler for P ...

  9. 为什么TCP连接时是三次握手,而不是两次或四次?

    TCP连接时有一个重要的任务就是服务端和客户端双方互相确认收发功能是否正常.图中步骤1,当客户端发起连接,服务端接收到请求,对于服务端来说,它此时知道客户端的发送功能和自己的接收功能是正常的. 图中步 ...

  10. configure.ac和Makefile.am的格式解析概述

    1. configure.ac和Makefile.am的格式解析概述 1.1. Autotools相关工具链 1.1.1. Autotools 1.1.2. 其他相关工具 1.2. 工具链的流程 1. ...