思维
文章平均质量分 63
bandiaoz_cjl
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #726 (Div. 2) F. Figure Fixing
F. Figure Fixing题意一个 nnn 个点 mmm 条边的无向图,每个点有一个当前权值 aia_iai 和一个目标权值 tit_iti。如果 uuu 和 vvv 之间有边,那么可以把 u,vu,vu,v 的权值都加 kkk ,问能否通过有限次这样的操作,使得所有点的权值变成目标权值。题解令 ai=ai−tia_i = a_i - t_iai=ai−ti ,那么只需要让所有 aia_iai 的权值为 000 即可;每次操作所有权值的和变化 2⋅k2\cdot k2⋅k ,不原创 2021-06-25 19:25:59 · 72 阅读 · 0 评论 -
Codeforces LATOKEN Round 1 (Div. 1 + Div. 2) E. Lost Array
E. Lost Array题意给你 nnn 个数,每次可以询问 k(1≤k≤n)k(1 \le k \le n)k(1≤k≤n) 个数的异或和,要求用最少的询问得到所有 nnn 个数的异或和。如果没有可能的方案,则输出 -1。题解异或奇数次等价异或一次,异或偶数次等价于没有异或;这个问题等价于一个经典的问题,有 nnn 枚正面朝上的硬币,每次可以选择 kkk 个硬币翻转,怎么用最少的操作次数让所有硬币反面朝上;枚举翻转中正面朝上的个数即可。代码#include <bits/stdc原创 2021-06-21 16:20:15 · 88 阅读 · 0 评论 -
Codeforces LATOKEN Round 1 (Div. 1 + Div. 2) D. Lost Tree
D. Lost Tree题意先给定一个树,你每次可以询问某个点到 nnn 个点的距离,要求通过最多 $\left \lceil \frac{n}{2} \right \rceil $ 次询问,得到树的结构。题解以 111 作为根节点,先询问根到其他点的距离,就得到了每个点的深度;把所有 nnn 个点染两种颜色,也就是深度奇偶相同的点是同一种颜色;如果距离为 111 那么两个点之间有一条边;询问颜色数少的节点。代码#include<bits/stdc++.h>#define原创 2021-06-21 09:23:49 · 130 阅读 · 0 评论 -
Codeforces Round #724 (Div. 2) E. Omkar and Forest
E. Omkar and Forest题意一个矩阵,要求矩阵的相邻数字之差最大为 111 ,如果数字非零,那么至少严格大于其中一个相邻的数字。给出一个矩阵,要求填满这个矩阵,问有几种方案。题解在给出的 #的子集中选择一部分为0,那么剩下的非零的值是确定的,非零的单元值等于到最近的0的距离。对于一个非零单元,这个单元到最近的 0 的值为 ddd,那么这个非零单元的值不可能大于 ddd ;这个非零单元的值不可能大于 ddd:假设大于 ddd ,从这个单元格到最近的0,每次移动一步最多减一,所以单元原创 2021-06-20 01:01:15 · 82 阅读 · 0 评论 -
牛客 数码
牛客 数码题意对于所有满足属于区间 [l,r][l,r][l,r] 的 numnumnum,把 numnumnum 所有因子写下来,对于写下来的数,只保留最高位数,求 1−91-91−9 每个数出现的次数。题解为了简化问题,可以求从 [1,l−1][1,l-1][1,l−1] 和 [1,r][1,r][1,r] 的情况,然后做差得到 [l,r][l,r][l,r] 的答案,这样可以不用管左边界,接下来就是要求 [1,n][1,n][1,n] 的答案即可;因子都是成对出现的,所以把 numnumn原创 2021-01-29 00:43:54 · 149 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)
F. Strange Housing题意有 nnn 个点和 mmm 条边,对点进行染色。要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通。请给出一种染色方案。题解暴力贪心即可。首先如果图连通,则一定存在答案,不存在答案。BFS遍历所有的点。如果当前节点没有染色,且相邻的所有节点没有染色,就染色,否则不染色。如果当前节点已经染色,那么把相邻的所有节点标记不染色。代码#pragma region#include <algorithm>#incl原创 2021-01-14 21:36:50 · 204 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2) D. Strange Definition 思维
D. Strange Definition题意如果 xxx 和 yyy 满足 lcm(x,y)gcd(x,y)\frac{lcm(x,y)}{gcd(x,y)}gcd(x,y)lcm(x,y) 是完全平方数,则 xxx 和 yyy 相邻。给一个长度为 nnn 的数组,满足 1≤ai≤1061\le a_i\le 10^61≤ai≤106 。每一秒过后,数组每个元素 aia_iai 都会替换为自身与所有与 aia_iai 相邻的数的乘积。定义 did_idi 为 aia_iai 相邻的元素的原创 2021-01-13 21:07:44 · 117 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) D. Sum of Paths(dp)
D. Sum of Paths题意一共有 nnn 个格子,每个格子都有一个值 aia_iai。一开始可以在任意一个格子放置一个机器人,机器人精确的走 kkk 步经过 k+1k+1k+1 个格子,走过一个格子产生 aia_iai 的贡献,问所有不同的走法产生的总贡献,有 qqq 次询问,每次询问都可以修改一个格子的值。题解先预处理出所有走法每个格子会被走的次数总和,然后每次询问 O(1)O(1)O(1) 计算即可。dp[i][j]dp[i][j]dp[i][j] 表示第 jjj 步走到第 i原创 2021-01-11 23:56:33 · 116 阅读 · 0 评论 -
牛客 tokitsukaze and Soldier 贪心
牛客 tokitsukaze and Soldier题意有 nnn 个士兵,每个士兵有战斗力 vvv ,选了这个士兵之后要求最多选 sss 个士兵,求如何选士兵,使得士兵的战斗力总和最大。题解可以先把士兵按照 sss 从大到小排序,那么对于可选择的士兵数量的限制就是选择的最右边的 sss ,并且 sss 递减,那么先选择那个士兵,然后可以在左边选战斗力最大的 s−1s-1s−1 个士兵。使用优先队列(小根堆)维护即可,如果当前优先队列里的士兵数量大于 sss ,则要pop战斗力最小的士兵。代码原创 2020-12-28 02:03:16 · 266 阅读 · 0 评论 -
2020ICPC上海 H. Rice Arrangement
2020ICPC上海 H. Rice Arrangement题意有一个周长为 nnn 圆桌,有 kkk 个人和 kkk 盘菜,给出 kkk 个人和 kkk 盘菜的初始位置,当一个人面前有一盘菜时,可以拿走,也可以再等一碗。问最少旋转多少次,可以把 kkk 盘菜分给 kkk 个人。解法首先有一个结论,把每个人和他分到的菜连线,不会有交点。那么可以对人的位置和菜的位置进行排序,然后枚举第一个人分到哪一盘菜,对每种情况取最小答案。人和菜匹配之后,先计算出菜需要按照顺时针旋转 cic_ici 度可以到原创 2020-12-23 13:51:58 · 364 阅读 · 0 评论 -
2020ICPC上海 E. The Journey of Geor Autumn
2020ICPC上海 E. The Journey of Geor Autumn题意有多少个长度为 nnn 的排列满足 i>k,i≤n,ai>min(ai−k,…,ai−1)i>k,i\le n,a_i>min(a_{i-k},\dots,a_{i-1})i>k,i≤n,ai>min(ai−k,…,ai−1) 。解法首先最小的数一定在前 kkk 位,假设最小的数在第 xxx 位,那么这个排列就被分成了 [1,x−1],[x+1,n][1,x-1],[x+1,原创 2020-12-22 14:55:31 · 275 阅读 · 0 评论