![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cf
愚末语
行于末路,静听语声。
展开
-
F. Rebrending
此题类似分块的做法很有趣,听说是一个很老的套路,但是我不会。这场居然rated,真是活久见。原创 2023-02-13 21:59:29 · 218 阅读 · 0 评论 -
D. Ela and the Wiring Wizard
cf原创 2022-10-12 01:10:33 · 92 阅读 · 0 评论 -
字符比较的问题
字符比较原创 2022-10-09 00:09:48 · 76 阅读 · 0 评论 -
背包问题 --- 路径回溯的方式
传送门:CFAC代码:#include<bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int T; cin>>T; while(T--){ int n, m; cin>>n>>m; vector<int>a(n);原创 2022-03-10 19:07:44 · 187 阅读 · 0 评论 -
D. Yet Another Minimization Problem
传送门:CF前言:过完年的这么几把,把把掉大分,从1850调到1700,真实酸爽。这场D的dp是一个很妙的点(至少我不会),看了 小t 的代码后,醍醐灌顶(小t如药也,善读可以医愚)。正文:首先看下数据范围,给了2秒的实现加上n为100,我初解的时候觉得是一个暴力枚举的题,所以压根就没往化简式子+dp上面想。所以掉大分。通过化简式子,可以得到,最优的时候是当然,很难得到最完美的情况,所以只要尽量接近就行。然而我们该怎么找到这个最优的和呢?我最初的想法是暴力,但是MLE了(我是原创 2022-02-13 20:38:03 · 632 阅读 · 0 评论 -
D. Not Adding
传送门:CF正文:这道题是一道数论题,有两种解法,都挺有趣的。解法一:#include<bits/stdc++.h>#define maxn 1000005using namespace std;int a[maxn];bool vis[maxn];int main(){ ios::sync_with_stdio(false); cin.tie(0); int n,ans=0; cin>>n; for(int i=1;i<=n;i++) c原创 2022-01-16 20:04:26 · 4452 阅读 · 1 评论 -
C. Road Optimization
前言:这场其实不想打的,因为报名的时候已经开了十分钟了......在初做此题的时候,我直接把这道题当成了傻逼贪心,交了一发WA8,认为贪心没毛病,可能爆int了,于是乎陷入了长时间的无意义的纠错环节......突然灵感来了,觉得可能是dp,但是我脑子抽了,想的是dp , 于是裂开。传送门:CF正文:这道题首先想聊聊为什么是一道dp。其实判断是不是dp的最快的方法就是想:移走个标志的最优方案是不是在移走个标志的最优方案的基础之上的。如果是,则可以贪心写,如果不是,就要枚举所有的可能,因为暴..原创 2022-01-13 00:07:59 · 649 阅读 · 3 评论 -
D. Robot Cleaner Revisit
前言:好像已经很久没有写过题解了,感觉都是半个退役老人了,哈哈。怎么说呢,这个赛季发生了很多不好事情,有一段时间很低迷,很抑郁,很不甘心(每次想到这里眼泪就会控制不住),但现在到另一个环境下修养了一个月后,心态变好了很多,很多事情想通了,想明白了,以前我唾口大骂的事情现在看也没什么,都是人之常情罢了。在经过一段时间的思想斗争过后,还是打算再征战一年吧,希望这一年我的实力能够更进一层楼吧!传送门:CF题目:题解:此题是一道2300分的概率期望的题,在我看来挺有意思的(我是菜狗)。可能是原创 2022-01-02 21:20:39 · 345 阅读 · 0 评论 -
E. Non-Decreasing Dilemma
传送门:CF前言:嗯,看了题解就是一个普通的线段树,所以就是硬搞,嗯,搞,嗯,搞,嗯,搞。于是一晚上的美好时间就被这道题搞没了......具有纪念意义的AC代码如下:#include<bits/stdc++.h>using namespace std;#define ll long longstruct AC { ll ln, rn, ls, rs, v;};int main() { ios::sync_with_stdio(false); cin.tie(0)原创 2021-09-06 21:15:56 · 325 阅读 · 0 评论 -
C. Compressed Bracket Sequence
传送门:CF前言:这应该是暑假的最后一场CF了,我的掉分之旅终于要结束了,一个月了,场场掉分,从1700掉到1500,这一场直接掉了80。轻轻跪下~~~ 其实这场的C已经是一个被CF玩烂掉的点了,但我还是没写出来,好吧,我承认,我是fw。正文: 题目要求找符合条件的括号序列的个数。举个例子: 这个括号串可以构成7个不同的字串使得每一个字串都满足括号序列。 如果直接计算这个串里有多少个字...原创 2021-08-31 12:12:08 · 284 阅读 · 3 评论 -
F2. Nearest Beautiful Number (hard version)
传送门:CF前言:开了这场div3,但是F1和F2都不会写。F2是一个2100的dp题,看来如果想要AKdiv3,就要连连2100难度的题目了。希望大二有机会能够解锁 AKcodeforcediv3的成就。(手动狗头)思路:这道题最常见的做法是数位dp,但是身为dp选手的我,不会呀。这里要聊的是ksun48大佬的解法。题目要求找一个最小的数x,使得x>=n,且x种出现的数字种类不超过k种。可以这样想,要保证最小,就说明,我们要改变的是靠后的数字。下面分两种情况讨原创 2021-08-21 20:28:35 · 188 阅读 · 0 评论 -
D. Integers Have Friends
传送门:CF前言:放假以来,一直掉分,这场也不例外,前三题思路很顺,但是被傻逼vector卡了很久,于是心态爆炸,做到D题,share了思路后,发现不会写st表,于是改写线段树。二分+线段树,如果不用function和stl等东西,可以利用评测机的波动,把时间卡在1980ms左右,但是我是一个喜欢写各种阴间东西的选手,于是GG!思路:这种区间求GCD的题,十有八九是相减。找区间所有数mod相同,实际上是找两两相减后构成的新数组,在这个新数组的某段区间内的GCD>=2。题目给原创 2021-08-02 17:22:52 · 366 阅读 · 0 评论 -
D. Say No to Palindromes
传送门:CF思路:题目说明只由’a‘ ,'b' ,'c' 组成,那么合法的字符串一定是由“abc”,“acb”,"bac","bca","cab","cba" 循环组成的。AC代码:#include<bits/stdc++.h>using namespace std;#define INF 1e9+7;int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >原创 2021-08-01 12:35:02 · 120 阅读 · 0 评论 -
D. Array Differentiation 位枚举
传送门:CF前言:昨天打这场cf打到凌晨两点,差点要翻墙进宿舍了......昨晚一直在想01背包,但是WA了,今天我又写了一发背包,结果 T 了。然后看了下T神的代码。发现根本不用背包,直接暴力枚举更快。并且从T神那里还学到一种用进制来枚举的方式。思路:最开始的时候我觉得是满足三元关系即可,也就是或者。然后再想了想,发现只要即可。实际上想到这里,这道题已经解出90%了,但昨天我还差了最后一步,即只要满足即可。也就是说,我们可以暴力枚举每个数,每个数有三种选择,不取,加上,减去。只..原创 2021-07-26 17:56:18 · 423 阅读 · 1 评论 -
E. Funny Substrings
传送门:CF前言:这场div3是很久之前打的,那时候就卡在E题上,赛后也没补。我记的当时觉得是无脑大模拟,所以没考虑时间复杂度,于是调了半天程序,最后还是T了。现在再看这道题觉得挺有意思的,我看前面的人都是用struct和operate写的。(但我不精通c++呀)所以就写了一个我自己认为比较看的懂的写法。代码如下:#include<bits/stdc++.h>using namespace std;#define ll long longint main(){ i原创 2021-07-22 11:17:54 · 71 阅读 · 0 评论 -
D. Omkar and Medians
传送门:CF思路:这道题再做之前应该明确一个点:我们要做的是输出YES或者NO,也就是判断情况是否成立,不是要求出原数组,所以一定存在一个判断条件来决定是否成立。不难发现当前中位数一定是在上一个中位数的基础上移动不超过1格,所以我们要做的是找到新增加2个数后,(上一次中位数的位置-现在中位数的位置)<=1。AC代码:#include<bits/stdc++.h>using namespace std;int lowbit(int x){ return x &a原创 2021-07-10 15:42:03 · 106 阅读 · 0 评论 -
A - Exciting Bets
传送门:CF题目如下:前言:原创 2021-07-09 08:47:11 · 304 阅读 · 0 评论 -
D. Deleting Divisors
传送门:https://codeforces.ml/contest/1535/problem/C原创 2021-07-06 21:51:21 · 600 阅读 · 0 评论 -
C. Unstable String
传送门:CF原创 2021-06-08 18:27:06 · 347 阅读 · 2 评论 -
Educational Codeforces Round 107 (Rated for Div. 2) E Colorings and Dominoes
传送门:E-Colorings and Dominoes思路:根据题目所说,一张牌会占据两个格子,如果横着放,则两个格子都是红色,如果竖着放,则两哥格子都是蓝色。如果把这道题看成一个整体来解的话,无疑是很难出结论的,所以我们要做的是把这么一个大题划分为很多个小题,也就是把情况分成很多小份。我们先分析一下一张牌对整体的影响,注意,这里是一张牌,这么一张牌占据了2个格子,那么剩下的可用格子数为sum-2 这里的sum是指白色格子总数。则这么一张牌会给整体增加2^(sum-2) 种可能的情况。但是仅仅知原创 2021-04-19 13:59:35 · 171 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2) E. Travelling Salesman Problem
传送门:E. Travelling Salesman Problem前言:一开始写这道题,我以为是搞图论,然后就想是不是弗洛伊德,看了一看数据,1e5,显然不成立,然后就想是不是其他图算法,但怎么想都想不出有什么算法可以在O(nlog(n)) 的时间复杂度下预处理出最短路。最后看了一下输入要求,发现这题根本就没有建边的过程…所以进而就能想到这个题应该是披着图论的皮的思维题。但是知道是思维题也不会写思路:题目给出任意两点之间的距离是max(c[i],a[j]-a[i]) 不难想到,如果a[j] 小原创 2021-04-07 16:36:54 · 149 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2)C Balance the Bits 题解
题目如下:思路:一开始看到这道题的时候思路很混乱,没有抓住关键点。题目表示可能存在不能构成的情况,所以我们第一步就应该想想怎么判定是否存在。首先必须满足起始位是(,末尾是)。其次再想:因为1是表示相同的,那么两个相邻的1可以组合成()把情况想极端点,如果全是1,就可以组成()()()() 。 显然成立的。这时候出现了一个0。那么考虑这个0会给序列造成怎样的影响。会出现一个( 和一个) 但是如果把其余的1成对的消去,(已知道一对1可以构成一个括号序列,所以这对1不会对其他位置产生影响)就只原创 2021-04-04 18:23:30 · 232 阅读 · 0 评论 -
Bananas in a Microwave
传送门:Bananas in a Microwave此题为codeforces #711D题,从这个题上学到一些技巧。题目大意:执行操作n次,每次操作执行k=k+x或者k=k∗x,注意:k=ceil[k]。可以重复执行[0,y]次。k 初始状态为0依次输出从1到m,到达每个数最少的操作次数。思路:这道题题解说是dp,但实际上是暴力+剪枝。这题和入学新生赛的一道题很像,都是标记之后再操作。初看此题就可以大概感觉到 直接暴力解会造成很多重复计算使得时间复杂度爆炸,所以就会想到记忆优化。而此题的原创 2021-04-02 17:47:47 · 115 阅读 · 0 评论 -
Codeforces Round #703 (Div. 2) C interactive problem
这场div2被这个交互题打的头皮发麻。20分钟我AC了AB两题,那是觉得这场要飞天,但开到C题的时候就懵逼了,题目是什么意思?输入是什么意思?输出又是什么鬼?%%%%%因为这是本蒟蒻第一次写交互题,所以写这种题需要注意的点我完全不知道,于是乎出现了这个诡异的一幕:其他人拼命输出,而我却在学习what is interactive problem?废话不多说,直接上题。题目如下:注释:交互题,顾名思义就是一种通过不断给出信息,然后通过程序利用信息,最后得到答案的过程。其不同于传统的题目,这种原创 2021-02-20 16:37:16 · 279 阅读 · 0 评论 -
codeforces #697 div3 D
题目如下:此题思路:b数组实际上是一个用来分割的数组,即把a数组分成便利值为1和2的两个数组,再分别求前缀和,最后通过枚举前缀和来表示选择多少割1和多少个2。但要注意1,用来储存前缀和的数组要开long long。2,使用lower_bound来加速,如果两个数组都枚举会TLE。AC代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define INF 0x3f3f3fconst int原创 2021-01-26 20:21:12 · 118 阅读 · 0 评论 -
codeforces #697 E题做题笔记
题目如下:此题思路很简单,即排序后求组合数,但这个组合数我在解题的时候想玩点骚套路,结果把自己玩死了。下面先给出组合数的求法:绝大一部分求组和数都可以用杨辉三角来求解,杨辉三角可以很快的进行prepare,并且代码很容易实现。模板可见:杨辉三角+组合数具体代码实现:#include<bits/stdc++.h>using namespace std;#define ll long long#define INF 0x3f3f3fconst ll mod=1e9+7;con原创 2021-01-26 19:33:06 · 176 阅读 · 0 评论 -
codeforces #694 div2 B,C题解
B题如下:AC代码如下:#include<bits/stdc++.h>using namespace std;#define ll long long#define INF 0x3f3f3f3fint s1[200005], s2[200005];int main(){ ios::sync_with_stdio(false); int T; cin >> T; while (T--) { int n, x; ll minn = INF; int原创 2021-01-06 12:21:13 · 342 阅读 · 0 评论 -
#688 div2 Suffix Operations题解
#688 div2 Suffix Operations题解题目如下:本题AC代码:#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f#define ll long longll s[10000000];int main(){ int T; cin>>T; while(T--) { ll n,sum=0,ans=0; cin>>原创 2020-12-05 12:11:39 · 152 阅读 · 0 评论