ShinriiTin/notes/ABC

Codeforces Div,1 AB(C) practice

1019 A

题目大意

\(n\)个人给\(m\)个党派投票,第\(i\)个人投给\(p_i\),但如果给他ci元钱,可以让他改选任意党派,最小化消耗的金额使得党派1的票数严格大于其它所有党派。

(\(n,m\le3000,ci\le10^9\))

题解

枚举党派1获胜至少需要多少票,显然大于等于这个票数的党派都要改票。

\(O(nm)\).

1019 B

题目大意

交互题。

在一个长度为偶数\(n\le10^5\)的环上,任意相邻两个数的绝对值之差都为1。最多询问60次,确定是否存在一个位置\(i\),满足它等于\((i+n/2)\pmod{n}\)位置的数。存在则输出一组,否则输出-1.

题解

差分之后既是问一个长度为\(n/2\)的区间内\(-1\)\(1\)的数量是否相同。

显然\(n/2\)不为偶数就无解,否则:

先问一下\([1,n/2]\)中哪一个多,如果有解了就退出。

否则在\([1,n/2]\)内二分答案,如果\([mid,mid+n/2)\)内的情况和\([1,n/2]\)相同,则答案区间与[1,n/2]的交集应该减少,反之就增加

1012 A

题目大意

二维平面上有\(n\le10^5\)个点。

现在它们的横纵坐标被打乱了,只知道一共\(2n\)个数, 但不知道每个数属于哪个点,也不知道是横坐标还是纵坐标。

对于所有可能的情况,求能覆盖这些点的最小矩形面积。

题解

等价于将数平分到两个集合,最小化两个集合的(\(\max-\min\))乘积。

先排序,如果最小的数和最大的数不属于同一集合,则前\(n\)小的数一个集合最优。

否则,枚举另一个集合,一定是连续的区间,取两种情况的最小值即可。

\(O(n\log{n})\).

1012 B

题目大意

\(n\)\(m\)列的网格图,上面有\(q\)个点是黑色,其它点是白色。(\(n,m\le2\times10^5,q\le\min(n\cdot m,2\times10^5)\). 可以无数次进行一种操作:如果一个矩形(不能是只有一行或一列的)的三个顶点都是黑色,而另一个是白色,则可以将其染黑。 问在原有的\(q\)个黑点的基础上至少要新增多少个新点,才可以使得经过若干次操作后使得所有点都是黑色。

题解

将网格图的行列建成二分图,每个黑点就是二分图中的一条边。

显然,在二分图中不属于同一连通块的无法进行操作,而属于同一连通块的一定可以通过操作全部染黑 (通过找两个不同部分的点,沿着两条它们连向其他点的边不断轮询,如果不能操作就删除这两个点, 再沿这两个点连的两条边轮询,最后直到连通块大小不超过3一定可以进行操作,然后之前轮询过的所有操作也可以完成)。

答案就是连通块数量减去一。

1012 C

题目大意

有一行\(n\le5000\)个数字,每花\(1\)的代价,就可以指定一个位置将其减小\(1\).

对于\(k\in[1,\lceil\frac{n}{2}\rceil]\),问至少花多少代价可以让满足严格大于左右两个相邻的数(如果存在)的位置不少于\(k\).

题解

记录末两位选或不选dp即可,\(O(n^2)\).

coding time: 7 min : 39 sec

1010 A

题目大意

有一个质量为\(m\)的飞船,要从星球\(1\)出发,依次经过星球\(2,\cdot,n\)再回到星球\(1\).

在星球\(i\)上起飞需要花费总质量(包括燃料质量)除以\(a_i\)单位的燃料,着陆需要花费总质量(包括燃料质量)除以\(b_i\)单位的燃料。

可以认为起飞和着陆的时间很短,当整个过程完成之后,燃料质量才一口气减少消耗的部分。

问至少要携带多少燃料(中途不可以补充),无解输出-1。

题解

二分答案判断即可。

coding time: 5 min : 50 sec

dirt: 1:二分上界不要恰卡在最大可行范围。

1010 C

题目大意:

给出\(n\le10^5\)个整数,每个整数可以用无数次,问在模\(k\le10^5\)意义下可以用和的形式凑出哪些数字。

题解

由裴蜀定理,等价于用这个\(n\)个数的gcd的倍数去凑数字,\(O(n\log{A}+k)\).

coding time: 3 min : 36 sec

1010 D

题目大意

给出一个\(n\le10^6\)个节点的二进制表达式树,运算符包括与、或、非和异或四种。

对于每一个叶子,问只有它取值改变后整个表达式的值是多少。

题解

对于每一个运算符,如果它的一个儿子取值改变后会导致它的取值也改变,就连一条无向边,用并查集判断每个叶子是否与根连通即可,\(O(n)\).

coding time : 10 min : 45 sec