题目反思与总结
文章平均质量分 82
补题与反思
Clarence Liu
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 946 (Div. 3) E. Money Buys Happiness
dp原创 2024-06-18 23:03:44 · 1072 阅读 · 0 评论 -
Educational Codeforces Round 134 (Rated for Div. 2) D. Maximum AND
codeforces原创 2023-10-24 21:47:13 · 92 阅读 · 0 评论 -
Educational Codeforces Round 125 (Rated for Div. 2) A - E
什么时候能教育场不再被教育呢~~~https://codeforces.com/contest/1657A从(0,0)(0,0)(0,0)出发,想要到(x,y)(x,y)(x,y),且每次移动的欧几里得距离需要是一个整数,问最少的移动次数显然我们可以第一次移动到(x,0)(x,0)(x,0),然后再移动到(x,y)(x,y)(x,y),这样最多移动两次,然后再判断有没有可能一次或者不用移动即可,这题我居然还想了一下怎么证明两步以内能移动过去..................#includ.原创 2022-03-24 02:36:02 · 520 阅读 · 0 评论 -
2021 ICPC 上海 H. Life is a Game 树上倍增+kruskal重构树
给你一个无向图,每个点有一个点权,从u−>vu->vu−>v的边权为www,给定一个出发点uuu,你当前积分为kkk,如果想去vvv,那么你手里的积分要≥w\geq w≥w,每当走到一个新的点就可以得到这个点的权值,每个权值只能得到一次,问你最后最多手里有多少分考虑对整个图建立kruskalkruskalkruskal重构树,叶子节点就是这些点,sz[i]sz[i]sz[i]表示以iii为根的树的点权和,val[i]val[i]val[i]表示iii通过节点的需要的最小分数。这样问题就.原创 2022-03-20 14:34:49 · 405 阅读 · 0 评论 -
2021 Jiangxi Provincial Collegiate Programming Contest G题Magic Number Group - 莫队求区间质因子出现最多的次数
问题很直观,因为一个数的质因子个数很少,而且数字个数和查询次数都是10410^4104级别,所以考虑直接莫队暴力此题可以练练莫队的写法,使用两个数组分别记录每个质因子的出现次数和出现次数为iii的质因子数量,方便统计答案,每当查询的时候,注意左右端点的移动对这两个数组的影响实测采用基本的排序方式也就是左端点按块从小到大,如果相同则按右端点从小到大排序即可通过;但是如果使用优化的排序方式即左端点所在块为奇数按右端点从小到大(同为奇数则按照块的顺序从小到大),否则按照右端点从大到小这种排序方式能快80ms.原创 2022-03-16 01:09:11 · 316 阅读 · 0 评论 -
Codeforces Global Round 19 A - E
https://codeforces.com/contest/1637A选择一个长度len,将前len个数和后面的数分别排序,问是不是总能把数组排好显然只有数组之前已经排好序才行#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); in原创 2022-02-13 17:27:47 · 687 阅读 · 2 评论 -
Codeforces Round #769 (Div. 2) A -D
https://codeforces.com/contest/1632A如果一个串存在一个回文子串长度大于1,那么输出NO,否则输出YES暴力可以做,但是有更好的想法,注意到这是一个01串,如果长度大于2,那么一定存在这样一个回文串,因为无论是001还是010都满足这一性质;如果长度是1,那么就是YES;如果长度是2,那么就判断前两个字符是否相同即可#include <bits/stdc++.h>using namespace std;typedef long long ll原创 2022-02-03 10:35:05 · 741 阅读 · 0 评论 -
Codeforces Round #768 (Div. 2) A - D
A随意交换a[i]a[i]a[i]和b[i]b[i]b[i],问max{a[i]}×max{b[i]}max\{a[i]\}\times max\{b[i]\}max{a[i]}×max{b[i]}的最小值因为两个数越靠近乘积越大,所以我们尽可能地让大数在aaa数组中,让小数在bbb数组中,然后分别取最大值乘积即可#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(fa原创 2022-01-29 01:34:10 · 655 阅读 · 0 评论 -
Codeforces Round #767 (Div. 2) A - F
A排序即可#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--){ int n, k; cin >> n >原创 2022-01-27 00:34:48 · 904 阅读 · 0 评论 -
Codeforces Round #764 (Div. 3) A - G
A每次操作可以选择任意个元素同时减1,问最少多少次操作能让所有元素相等显然是最大值和最小值的差值#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--){ int n; c原创 2022-01-18 20:34:43 · 516 阅读 · 0 评论 -
Educational Codeforces Round 121 (Rated for Div. 2) C、D
C题给出nnn个怪物的出现时间和血量,你可以发动技能,每次发动技能耗费的蓝是造成伤害的值,技能能够造成1点伤害或者上一秒发动技能造成伤害+1,当然你也可以不发动技能,如果是这样那么下一秒如果发动技能那只能造成1点伤害,杀死怪物的条件是必须在该秒发动技能的伤害量大于等于怪物血量。保证输入有解,问你至少耗费多少蓝因为保证输入有解,所以最后一个必须满足,那么可以考虑从后往前更新hhh数组,保证后一个满足的前提下前一个应该是多少更新完hhh数组之后,从前往后考虑,如果当前位置能够从1开始累积,那么显然是一个原创 2022-01-18 01:02:04 · 370 阅读 · 0 评论 -
Codeforces Round #753 (Div. 3) A - H
https://codeforces.com/contest/1607趁官方题解还没出来,赶紧写一波A按键盘,输入一串表示键盘上的字母,保证字母只出现一次,手移动到键盘上不耗时间。给出目标字符串,问操作时间数据范围很小,暴力找即可#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);原创 2021-11-05 02:16:41 · 117 阅读 · 0 评论 -
Codeforces Round #751 (Div. 2) D题
一个人初始在井底,距离地面高度为nnn,现在给出两个数组,a[i]a[i]a[i]表示距离地面高度为iii时他能往上走多远(可以移动的距离为[0,a[i]][0,a[i]][0,a[i]]),b[i]b[i]b[i]表示距离地面高度为iii时他要往下掉多远,输出一个数组d[i]d[i]d[i],表示这个人在第iii次跳跃之后距离地面的距离,这个时候他还没往下掉先把样例看懂,之后考虑做法,这道题实际上问的是从nnn到000的最短路,要求跳跃次数最少,我们先看,假设现在所处的位置是uuu,那么我们能够到达哪原创 2021-10-26 20:39:50 · 138 阅读 · 0 评论 -
Codeforces Round #748 (Div. 3) A - E
https://codeforces.com/contest/1593A问每个人能成为严格第一所需要的最少加分,三个人之间是独立的计算当前人需要超过其他人的最少加分,最后取最大值即可#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t-原创 2021-10-18 12:55:45 · 163 阅读 · 4 评论 -
Codeforces Round #747 (Div. 2) A - F
https://codeforces.com/contest/1594A我们显然可以构造出一个[−n+1,n][-n+1,n][−n+1,n]的区间和满足条件#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--){ long原创 2021-10-16 22:02:02 · 209 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2) A - E
https://codeforces.com/contest/1592A给你若干个武器的攻击力,不能用相同的武器攻击敌人,问最少需要攻击多少次才能消灭敌人显然先用伤害最大的武器攻击,然后用第二大的武器,一直这样进行下去即可,先把两个武器看做一个整体考虑#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int t原创 2021-10-07 14:12:33 · 166 阅读 · 0 评论 -
Educational Codeforces Round 114 (Rated for Div. 2) A-D
A构造含有nnn组合法括号的nnn组不同序列很容易能够想到一种构造方案是先在前面构造iii个左括号和右括号,再在后面构造n−in-in−i组完整括号,i∈[1,n]i\in [1,n]i∈[1,n]原创 2021-09-22 00:10:36 · 198 阅读 · 0 评论 -
Codeforces Global Round 16 A-E
https://codeforces.com/contest/1566D给出n×mn\times mn×m个人的视力值,规定值小的要坐在座位的左面,现在座位是nnn行mmm列的,从第一个人开始入座,也是从左往右走,如果他经过了其他人,那么不方便程度加一,问最小的不方便程度是多少考虑贪心,如果两个人在同一行,如果编号小的人的视力值小,那么他显然应该坐在外面, 这样他对于编号大的人对于答案的贡献就是111,所以此题的easyeasyeasy版本可以此思路解决,那么如果行数大于111,如果我们能够确定每一原创 2021-09-13 16:31:59 · 263 阅读 · 0 评论 -
Codeforces Round #741 (Div. 2) A-D
D1给出了一个公式和一个字符串,+++表示111,−-−表示−1-1−1,问在给定的一段区间内至少去掉多少个字符才能保持这段区间内的符号所对的公式值为000我们先维护一个前缀和sumsumsum,如果这段区间对应的值已经是000,那么就不需要修改了如果不是,考虑删除位置iii以后,整个序列的答案,删除位置iii以后,他前面的部分不变,但是后面的部分变成了原来的相反数,也就是现在序列变成了sum[r]−sum[i]−(sum[i−1]−sum[l−1])sum[r]-sum[i]-(sum[i-1]-原创 2021-09-10 13:55:55 · 110 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) A-D
https://codeforces.com/contest/1567A上面是左右排布的下面也一样,上面如果是上,下面就是下,反之上面是下,下面就是上#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#include <cmath>#include <queue>#inc原创 2021-09-06 10:26:34 · 194 阅读 · 0 评论 -
Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2) A-D
https://codeforces.com/contest/1556A题给你两个数初始值为000,可以同时加上一个数或者一个加一个减,问最少需要多少次能够达到目标值显然应该先同时加上两数平均数,然后再一个加一个减,特判相等、无解的情况即可#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#inc原创 2021-09-01 10:21:00 · 322 阅读 · 0 评论 -
Codeforces Round #739 (Div. 3) A-F
A题问不能被3整除且最低位不是3的第kkk大数,打表预处理即可#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <stack>#include <vector>#include <cmath>#include <cstdio>#include <map>#incl原创 2021-08-19 21:51:54 · 135 阅读 · 0 评论 -
Codeforces Round #738 (Div. 2) D. Mocha and Diana
https://codeforces.com/contest/1559/problem/D2给你两组森林结构,现在分别在两组森林结构中把任意两个节点连接起来,重复这样的操作若干次,要求经过若干次操作以后形成的两组结构仍然分别是森林(无环)easyeasyeasy版本范围只有1e31e31e3,时间复杂度可以达到O(n2)O(n^2)O(n2),创建两个并查集,初始状态先分好,之后暴力枚举每两个点,如果发现某一组森林中出现环,那么这条边不能连,否则连上,统计答案即可问题的关键在于hardhardhar原创 2021-08-16 23:14:18 · 139 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2) C. Moamen and XOR
给出原创 2021-08-12 18:57:55 · 97 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2) A-D
A题给出PPP是一个大于5的质数,有Pmod a=Pmod b(2≤a<b≤P)P\mod a=P\mod b(2\leq a\lt b\leq P)Pmoda=Pmodb(2≤a<b≤P),找到任意一组a,ba,ba,b显然Pmod 2=Pmod (P−1)=1P\mod 2=P\mod (P-1)=1Pmod2=Pmod(P−1)=1#include <iostream>#include <algorithm>#include <cstri原创 2021-08-03 21:04:01 · 80 阅读 · 0 评论 -
2021百度之星程序设计大赛-初赛一部分题目总结
部分题目1001迷失邻接矩阵k次方的结论拆点法1003鸽子1004萌新1006毒瘤数据结构题1008猎人杀1001迷失题目意思是要从111号岛屿经过kkk条路径到达nnn号岛屿的概率,里面提出了一个附魔桥和普通桥的概念,经过附魔桥身上如果有附魔则附魔消失,如果没有附魔则被标记;到达nnn号岛屿的时候,身上必须有附魔才能成功逃离,问成功逃离的概率解决这个问题需要几个知识点邻接矩阵k次方的结论如果从iii到jjj有路径,则设a[i][j]=1a[i][j]=1a[i][j]=1,则矩阵ak[i]原创 2021-08-03 11:47:23 · 1394 阅读 · 0 评论 -
Codeforces Round #734 (Div. 3) A-D
A题给出一个数nnn,现在要把它拆成n=c1+2c2n=c_1+2c_2n=c1+2c2,并且要使得∣c1−c2∣|c_1-c_2|∣c1−c2∣最小,问c1,c2c_1,c_2c1,c2的值⌊n3⌋\lfloor\frac{n}{3}\rfloor⌊3n⌋必定是c1c_1c1或者c2c_2c2,分别讨论剩下情况即可#include <iostream>#include <cstring>#include <algorithm>#incl原创 2021-07-26 23:13:57 · 94 阅读 · 0 评论 -
Codeforces Global Round 15 B、D两题
B题一共有五项运动,一个运动员比另一个运动员强的标志是至少有三项运动的排名比他小,问谁最强,或者没有不能直接暴力,假设第一个是第一,往后寻找,遇到矛盾就更新新的第一,直到最后,因为只有一个最强的运动员,需要再进行一次验证,如果再发现矛盾就说明不存在最强的运动员#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <stack&g原创 2021-07-26 09:46:57 · 137 阅读 · 0 评论 -
Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2) A-D题
A题函数S(n)S(n)S(n)表示nnn的各位数字之和,给出nnn,问[1,n][1,n][1,n]之间有多少数字满足S(n+1)<S(n)S(n+1)\lt S(n)S(n+1)<S(n)显然只有末尾数字是9的数才有这样的性质,这样的数个数是n+110\frac{n+1}{10}10n+1个int main(){ int t, n; cin >> t; while(t--){ cin >> n; co原创 2021-07-23 20:29:39 · 193 阅读 · 0 评论 -
2021年“图森未来杯”全国程序设计邀请赛 部分题目总结
其中B、F、H、J四题现在看都不太容易,以后有机会再拿出来看看题目链接网站链接目录A. Abstract AlgebraC. CountdownD. DivideE. Edge GameG. Group QQ SpeedI. I Love YouK. K-PrimesA. Abstract Algebra题目大意:给定两个矩阵A和B,其中A=[1101],B=[01−10]A=\begin{bmatrix}1 & 1\\0 & 1\end{bmatrix},B=.原创 2021-04-11 18:07:40 · 963 阅读 · 0 评论 -
Codeforces Round #565 (Div. 3)
div3题目一般都是思维题,算法比较少,用来训练思维和解题速度很合适A题模拟即可#include <iostream>using namespace std;typedef long long ll;int main(){ int q; ll n; cin >> q; while(q--){ cin >> n; int ans = 0; while(n != 1){ if(n % 2 == 0) n /= 2; else i原创 2021-03-13 16:40:29 · 152 阅读 · 0 评论 -
codeforces round99 A-D
A题注意到所求函数f(f(x))实际上所作操作是去掉原数末尾的0,原数末尾如果无0,则值为1,否则有多少0就有多少种情况,所以,只需求得原数有多少位即可。#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int main(){ string s; i原创 2020-12-01 18:02:44 · 128 阅读 · 0 评论 -
cf1294总结
A题无坑点#include <algorithm>#include <iostream>using namespace std;const int MAXN = 1e6+100;int main() { int a,b,c,t,n; cin>>t; while(t--){ int sum=0; ...原创 2020-05-07 13:53:26 · 166 阅读 · 0 评论 -
Nordic Collegiate Programming Contest 2019赛后总结
A题单词接龙,要求上一个人所说单词的最后一个字符要和你说的第一个字符相同。给你上一个人说的单词,再给你一组单词,让你从这中间选择单词接龙,找不到输出“ ?”,能找到的话让你的下一个人继续从这些单词里选择单词接龙,当然不能选择你说过的单词,如果他找不出来就说明你获胜了,输出你可能说的单词在这一组单词中第一个出现的(符合要求的单词可能不止一个)后面加一个“!”;他能找出来的话就不用输出这个“!”...原创 2020-05-02 17:30:31 · 449 阅读 · 0 评论 -
Codeforces#636(Div3) D题
相信看的人都知道题目题目简介:给你一个元素数为偶数的数组,现在需要你对这个数组进行某些操作,要求有两个。第一,要求数组中的每个数要小于或等于k;第二,满足数组中首尾元素和是一个定值。每次操作是将数组中的某一个数换成1-k闭区间的任何一个数,求这样的操作最少能是多少步。分析因为数组元素个数是偶数,并且首尾元素和要求为一固定值,所以考虑将数组分成前后两半是自然的,如果首尾元素要是定值,改变元素...原创 2020-04-30 01:17:05 · 216 阅读 · 0 评论