rounding maximum 1857b cf
CF1883G1 Dances (Easy version)
思路 考虑从大到小给每一个 \(b_i\) 匹配一个 \(a_j\),那么如果对于 \(b_i\),\(a_j\) 不能匹配,那么对于后续更小的 \(b_i\),\(a_j\) 同样无法匹配,所以可以直接忽略,跳到下一个,一直匹配,直到无法匹配为止,那么无法匹配的 \(b_i\) 的数量就是需要的操 ......
CF1883G2 Dances (Hard Version)
思路 大体上的思路应该和简单版本一致,建议先看本人关于简单版本的题解。 与简单版本不同的是,困难版本的 \(m\) 可以不为 \(1\),而是取遍 \([1,m]\) 中的整数,所以答案的总值会变大很多倍。 如果直接枚举 \(m\) 次,时间复杂度将会达到 \(O(mn\log n)\) 显然过不了 ......
CF1883B Chemistry
思路 性质题,因为可以随便排序,所以只需要考虑数量满不满足条件即可。 一个回文串,应该满足所有的字符的数量都是偶数或者其中一个字符的数量是奇数。 所以可以直接扫一遍字符串,统计每个字符的数量,然后再统计数量是奇数的个数,如果这个个数大于 \(k+1\) 就无解,否则有解。 AC code #incl ......
CF1883C Raspberries
思路 最开始晃眼一看,感觉很难,仔细一读题,哦,原来 \(k\in [2,5]\) 啊。 首先如果 \(k\) 是质数,也就是 \(k\) 不等于 \(4\) 的情况,必须要有一个数是 \(k\) 的倍数,那么计算每个数需要的操作数,取最小即可。 如果 \(k\) 不是质数,也就是 \(k\) 等于 ......
CF1884C Medium Design
思路 Step1. 贪心 拿到题后,第一时间想到贪心,如果这个区间加上会使答案变小或不变就不加。 但是很显然,这个贪心是错误的。 如果答案的最大值在区间 B,但是先加了区间 A,导致加区间 B 使答案不变,那么这样就会使答案变劣。 所以贪心是错误的。 Step2. 枚举 接着,想到了可以枚举最小值, ......
Codeforces Round 905 - div.3(A B C D E)
目录Codeforces Round 905 (Div. 3)A. MorningB. Chemistry Codeforces Round 905 (Div. 3) A. Morning 模拟光标移动即可 void solve(){ string ss; cin >> ss; char ch = ......
Codeforces Round 904 (Div. 2)
目录写在前面ABCD写在最后 写在前面 比赛地址:https://codeforces.com/contest/1884 捏吗我不会容斥,我是飞舞。 A \(k\le 10\),于是直接枚举 \(x\sim x+20\) 检查即可。 // /* By:Luckyblock */ #include < ......
CF1839C题解
分析 首先对于最后一个元素为1的数组,显然不存在合法构造方式。为什么?因为每个1都需要至少一个数插入在它后面对它完成翻转,如果最后一个数为1,这时没有数在它后面翻转它,所以这时无法构造。 然后我们很naive地想让每个1都只被翻转一次,那么很好想到,对于一个形如\(11\dots100\dots0\ ......
CF1839B
分析 根据题意,对于亮度为\(a\)的灯,我们最多可以一次开\(a\)盏。 显然我们选\(b\)最大的\(a\)盏灯就行,注意到\(b\)最大为\(1e9\),所以开long long。 代码 #include <iostream> #include <vector> #include <algor ......
CF1839A题解
分析 可以很容易地想到如果只有1要求的话答案就是 \(\lceil \frac{n}{k} \rceil\)。 最优策略显然是在每个整除分块的第一位放一个1。 思考加入2条件如何修改。 显然当最后一块的大小不为1时,大于1的部分后缀和为0。 所以需要在最后一位加入一个1。 所以答案为\(\begin ......
CF981E Addition on Segments
将操作按右端点从小到大排序,这样对于当前值相同的点,只有最右边的那一个是有用的。 令 \(f_i\) 表示当前值为 \(i\) 最靠右的点的位置,转移直接暴力判断能否取 \(\max\) 即可,时间复杂度 \(O(nq)\)。 这个东西看起来就不好优化。 不妨调换状态和值,令 \(f_{i,j}\) ......
Codeforces Round 905 Div 1 (CF1887)
A1. Dances (Easy version) 把 \(a,b\) 序列都从小到大排序,\(a\) 贪心删大的,\(b\) 贪心删小的,二分答案并 \(O(n)\) \(\text{check}\)。 Code ```cpp const int N=1e5+5; int T,n,m; int a ......
CF229E 题解
前言 基本是官方题解的思路。 分析 先考虑不用纠结的情况。假设第 \(n+1\) 大价值的物品的价值小于第 \(n\) 大的。 此时物品名称集合可以确定。 对于每类名称,恰好拿到的概率为 \(1/\dbinom{k_i}{a_i}\),\(a_i\) 为选择的物品数量,\(k_i\) 为总数。 对于 ......
题解 CF1876E - Ball-Stackable
输在 D 上了,呜呜呜。 首先显然环是没有用的,因此我们只用考虑简单路径。 先思考一个弱化版:如果所有边都已经定向了怎么做。对于每条路径 \(u\to v\),如果它是一个括号序列,那么我们就用并查集将这条路径上第一条边和最后一条边合并起来,那么颜色数就是并查集连通块数。考虑如何快速合并这个连通性。 ......
PAT 甲级【1007 Maximum Subsequence Sum】
本题是考察动态规划与java的快速输入: max[i]表示第i个结尾的最大的连续子串和。b begin[i]表示第[begin[i],i]为最大和的开始位置 超时代码: import java.io.BufferedReader; import java.io.IOException; import ......
CF1886D Monocarp and the Set
Link 此题目可以从两个方向考虑,正着和倒着,倒着考虑比较容易,首先把所有的数放到一块,如果是'<'或者'>',就是去掉最左边或者最右边的数,这样显然只有一种可能,答案不变。 如果是'?',那么显然可以去掉中间的任意一个,所以答案就是\(\times l-2\),那么对于\(s_n-i\)位置的\ ......
Codeforces Round 887 (Div. 2)
Codeforces Round 887 (Div. 2) A. Desorting 解题思路: 每次操作能使相邻数之差减\(2\),设最小相邻数之差为\(mind\),答案为\(ans = (mind + 1) / 2\)。 代码: #include <bits/stdc++.h> using n ......
Codeforces Round 855 (Div. 3) C. Powering the Hero
有 \(n\) 张卡的卡堆,你可以自顶向下抽卡。装备卡显示数值为 \(a_i(a_i>0)\) ,英雄卡显示数值为 \(a_i = 0\) 。 如果是装备卡,你可以将卡抽出放在装备堆。如果是英雄卡,你可以将装备堆顶端的一张数值为 \(x\) 的装备卡装备给英雄,英雄数值 \(+ x\) 。无论是否装 ......
Codeforces Round 857 (Div. 2) B. Settlement of Guinea Pigs
你非常喜欢豚鼠。每个笼子可以住两只豚鼠,且你不想把每个笼子放入不同性别的豚鼠。豚鼠只有两种性别。假设你买到豚鼠时并不知道性别,只有医生能够分辨。 接下来的 \(n\) 天方案中,若第 \(i\) 天为 \(1\) ,你买入一只豚鼠;若为 \(2\) ,你请医生分辨你的豚鼠性别。 给出方案,你最少需要 ......
Nebius Welcome Round (Div. 1 + Div. 2) B. Vaccination
你管理一个疫苗接种站,将会有 \(n\) 个人前来接种疫苗。第 \(i\) 个到来的人时间为 \(t_i\) ,已知每个人的等待时间不会超过 \(w\) 分钟。 疫苗存放在特质冰箱中,一袋疫苗有 \(k\) 支,当一袋疫苗在 \(x\) 时刻打开时,它的有效时间为 \(d\) 。 现在询问最少需要打 ......
Educational Codeforces Round 145 (Rated for Div. 2) B. Points on Plane
给一个二维平面,你需要在上面放 \(n\) 个芯片。将一个芯片放在 \((x, y)\) 的代价为 \(|x| + |y|\) 。放 \(n\) 个代价的代价为,所有芯片中耗费的最大代价。并且你需要保证任意两个芯片之间的距离严格 \(> 1\) 。 现在给出 \(n\) 给芯片,询问放 \(n\) ......
Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees( DFS )
Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees 思路: 在输入树的边的同时记录他们的输入顺序 从 1 开始跑 DFS ,遇到未连上的边时 , 有两种情况(用 q 表示当前点的顺序序号) 1.边的顺序在这个点连上之前,那么 DFS 的 ......
Educational Codeforces Round 149 (Rated for Div. 2)
这场D被切穿了。 A题 答案为 x 或者 x-1 1 B题 答案就是最长的连续一段的长度+1 证明的话大概可以将它看成是几段连续上升和下降的段,然后在峰谷、峰顶分别填上最小、最大,剩下的就依次递增或递减就行。 C题 将一段连续的0/1视作一个块,那么我们最小化这个块的数量就行。 D题如果猜到如果有解 ......
[CF444E] DZY Loves Planting
DZY Loves Planting 逆天题。 想到二分,判断用网络流,但是好像 n 有点大。 我们想尽量让每个点的 g 能大于下界,所以我们尽量往大的边走,其实就是尽量不走小的边。 所以考虑将边从小到大排序,每次合并两端的连通块,如果剩下点的 x 总和小于总点数就只能内部消化。 又因为这已经是最劣 ......
Codeforces Round 863 (Div. 3) B. Conveyor Belts
给一个 \(n \times n\) 的矩阵, \(n\) 是偶数。将矩阵按圈分割,同一圈的位置可以不消耗代价移动,可以消耗一个代价移动到相邻圈。 给出 \(n, x_1, y_1, x_2, y_2\) ,询问 \((x_1, y_1)\) 移动到 \((x_2, y_2)\) 的代价最小是多少。 ......
Codeforces Round 865 (Div. 2) B. Grid Reconstruction
给一个 \(2 \times n\) 的网格,且 \(n\) 是偶数。你需要将 \(1 \sim 2 \times n\) 填入这个网格。 一条路径是从 \((1, 1)\) 开始,每次只能向右或向下,到 \((2, n)\) 结束时,所经过的位置。按经过点的顺序标号,一两条路径的代价是 \(cos ......
Codeforces Round 902 (Div. 2, based on COMPFEST 15 - Final Round)
\(D. Effects of Anti Pimples\) 对每个数字能到达的所有位置先预处理最大值,那么就代表选择这个数字之后真实的贡献,那么对这样的预处理值,最小值显然只有一种做法,为 \(2^0\) ,第二小的值应该可以与最小值一起选择,所以答案为 \(2^1\) ,以此类推之后,每个值乘上 ......
CF1634F
知识点:差分 Link:https://codeforces.com/contest/1634/problem/F 差分的本质是递推。 简述 给定两长度为 \(n\) 的数列 \(a, b\),模数 \(p\),要求进行 \(q\) 次操作,每次操作为 c l r 的形式,表示将数列 \(c\) 的 ......
CF1100E Andrew and Taxi
套路题又来咯,最大值最小先直接上个二分答案\(lim\) 对于图中的边,若它的权值\(>lim\)的话这条边的方向就确定了,那么直接把这些边连出来跑个拓扑排序看看有没有环即可 如果有环则当前答案一定不合法,否则我们总存在如下的构造方法: 先把权值\(>lim\)的边得到的图的拓扑序搞出来,对于所有权 ......
CF1003E Tree Constructing
很trivial的构造题 首先上来判掉一些显然无解的情况,然后考虑既然最后直径长为\(d\)那么不妨先搞一条长度为\(d\)的链来 考虑在链上接一些点使得直径不会变长,对于链上的某个点,它最多能接上的链的长度就是它到两个端点距离的最小值 不妨设计递归函数求解,设solve(x,dis,lim)表示在 ......