题目描述 给出一个的数列,将其重新排列,使得其等差子序列的数目最小.输出一种可能的排列后的数列. 题解 构造 那天和 EdwardFrog 讨论 bzoj2124 的构造时突然有的灵感,最后发现就是这道题... 通过构造可以使得不存在长度为3的等差子序列. 考虑:如果把所有奇数放到所有偶数的左面,那么就不会出现 “奇-偶-奇” 或 “偶-奇-偶” 的情况. 对于 “奇-奇-奇” 或 “偶-偶-偶” 的情况,将所有 $a_i$ 变为 $\lfloor\frac{a_i}2\rfloor$ 不影响判…
传送门 做过这道题,然后这道题告诉你怎么构造数据-- 一种可行的构造方式是:将奇数和偶数分成两半,奇数放在偶数前面,然后除以2,再递归下去处理. 构造的正确性是显然的:如果存在"奇数偶数奇数"或者"偶数奇数偶数"的等差子序列,会在当前层被分离,否则除以2之后,"奇数奇数奇数"和"偶数偶数偶数"的等差子序列的公差会/2,那么这些等差子序列在递归到某一时刻也会变为"奇数偶数奇数"或者"偶数奇数偶数&q…
题目描述 两个人在 $n\times m$ 的棋盘上下 $k$ 子棋,问:是否存在一种平局的情况?如果存在则输出一种可能的最终情况. 输入 第一行三个正整数 $n,m,k$ ,意义如前所述. 输出 如果双方不能打成平局,输出 $−1$ : 否则输出 $n×m$ 行,第 $i$ 行两个整数 $x_i,y_i$ 表示第 $i$ 次落子的坐标为第 $x_i$ 行第 $y_i$ 列.黑子先行,所以 $i$ 为奇数时为黑方落子,$i$ 为偶数时白方落子.坐标需满足 $1≤x_i≤n,1≤y_i≤m$ .…
题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞模型,洞有容量和额外权值. 这道题的Subtask 4,5,6,7分别对应着老鼠进洞的最基础模型.洞有额外权值.洞有容量.洞有容量和额外权值四个变形. 让我们从最简单的开始各个击破. Subtask 4 注: 本部分配合WC2019课件里的代码图理解效果更佳. 数轴上有\(n\)只老鼠(坐标\(x_…
一开始将数列设置为0 1 2 3 4 5 6... 然后从左到右遍历,每位不够就增加即可 #include<bits/stdc++.h> using namespace std; #define maxn 200005 #define ll long long ll a[maxn],n,k; int main(){ cin>>n>>k; ll sum=(+k-)*k/; if(sum>n){ puts("NO"); ; } a[]=-; ;i&…
允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x=0,每次x=max(x+1,x*1.05),再用单调队列$O(n)$找出当前x能更新的区间即可.总复杂度$O(n\log_{1.05}V)$ #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l);…
论文题. 考虑到这题的维护和区间操作是反向的,也就是说无法像V那题快速的合并标记. 我们知道,一个区间的最小值和其他值是可以分开来维护的,因为如果一个区间被整体覆盖,那么最小值始终是最小值. 对于被覆盖一半的区间,讨论一下即可. 对于每个最小值和次小值记录前缀最小值,当前/历史最小值,当到达合法区间的时候: 如果区间最小值>x,直接退出. 如果minv[o]<x<semn[o],那么更新当前的次小值 反之继续向下. #include<bits/stdc++.h> ; ; us…
快排! /** 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中.这个过程的费用记为pa + pb. 2. 重复步骤1,直到{pi}中只剩下一个数. 在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用. 本题任务:对…
Preface 本着刷遍(只刷一遍)各大OJ的原则我找到了一场UOJ的比赛 无奈UOJ一般的比赛难度太大,我就精选了UER中最简单的一场打了一下,就当是CSP前的练习吧 A. [UER #5]万圣节的南瓜灯 一看就是要搞个结论的题目.首先我们看出来所有没有坏的格子要形成一棵树 那么对于\(n,m\le 1000\)的数据我们直接暴力连边并查集判断即可 然后考虑\(n,m\)较大时怎么做,我们发现树一定满足边数+1=点数,换句话说就是边数小于点数 那么我们容易发现对于\(2nm-m-4K<nm-k…
问题背景:            Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程.            给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:              1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}                中.这个过程的费用记为pa + pb.              2. 重复步骤1,直到{…