
codeforces
文章平均质量分 62
自己做的,补题,专题
疯狂的码泰君
代码不是信仰,又有什么可以成为信仰呢!哦,还有鲁能泰山!!!
展开
-
Codeforces Round #753 (Div. 3)
虚拟参赛的,其实五道题都该赛时过的,可是 EEE 题,太毒瘤了,坐标弄错了。题目链接A题思路简单的模拟题,HASH一下代码void solve(){ map<char,int> mp; string s;cin>>s; for (int i = 0; i < s.size();i ++) { mp[s[i]] = i + 1; } cin>>s; int ans = 0; for (int i = 1;i < s.s.原创 2021-11-04 21:26:46 · 208 阅读 · 0 评论 -
上蓝训练(1600-1800)
A. Extreme Subtraction题意思路原创 2021-11-01 21:42:28 · 112 阅读 · 0 评论 -
Codeforces Round #752 (Div. 2)
A题思路最大的 (ai−i)(a_i-i)(ai−i)。代码int t;cin>>t; while(t--){ int n;cin>>n; vector<int> vec(n+1); for(int i = 1;i <= n; i++) cin>>vec[i]; int res = 0; for(int i = 1; i<= n;i ++){ res = max(res,vec[i]-i); } c原创 2021-11-01 20:23:28 · 208 阅读 · 0 评论 -
Educational Codeforces Round 116 (Rated for Div. 2)
题目地址文章目录A题B题C题借鉴1思路2A题思路比较不错的思维题?只需要检查最后一位,以为 abaabaaba 产生的 ababab 和 bababa 数量一样,不论他们中间是啥情况,只需要考虑最后一位,也就是如果数量不相等,ababab 和 bababa 的数量也只会相差 111。代码void solve(){ string s; cin>>s; int ab = 0,ba = 0; for(int i = 0;i < s.size()-1;原创 2021-11-01 19:44:37 · 110 阅读 · 0 评论 -
Codeforces Round #751 (Div. 2)、#750 (Div. 2)
这两场打的还算可以。Round #751A题题意把字符串 sss 拆分成两个串 aaa、bbb,使得 aaa < bbb。思路把 aaa 直接等于 sss 中出现的最小的字母就行,其他的全给 bbb。代码void solve(){ string s;cin>>s; char a = 'z'; bool flag = 1; for(int i = 0;i < s.size();i ++){ if(s[i] <原创 2021-10-25 20:31:56 · 223 阅读 · 0 评论 -
Codeforces 构造专题
D.Omkar and the Meaning of Life求出 p[n]p[n]p[n] 后,要分大于和小于的;具体见代码:代码void solve(){ int n;cin>>n; vector<int> p(n+1,0); int cnt = 0; for(int i = 2;i <= n;i ++){ cout<<"? "; for(int j = 1;j < n;j ++原创 2021-10-18 21:58:53 · 575 阅读 · 0 评论 -
Codeforces Round 749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)
又是自闭的一天。A题思路如果加起来整体式合数的话,那么直接输出 nnn,否则的话,考虑把一个奇数去掉,为什么一定会有奇数。如果没有奇数的话,最后和一定是个偶数——属于合数;所以必然有一个奇数,当一个素数减去一个奇数,那么必定是个偶数,即为合数。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+10,mod=1e9+7;template<type原创 2021-10-17 23:20:19 · 281 阅读 · 0 评论 -
E. Gardener and Tree
呜呜呜,想到了是拓扑排序,不过不会有向图的。思路拓扑排序,记录连边的size,将 size==1 的入队列;哎没想到,可惜!拓扑排序是想到了的。代码#include <bits/stdc++.h>using namespace std;const int max_n = 404444, inf = 1000111222;int t, n, k, dist[max_n], sz[max_n];vector<int> g[max_n];void clr()原创 2021-10-14 01:07:12 · 237 阅读 · 0 评论 -
C. Chef Monocarp 二维动态规划
题意主人公把 nnn 道菜放进了烤炉里,每道菜有最佳的烹饪时间 tit_iti ,你要对每道菜选择一个 TiT_iTi ,使得 ∑i=1n∣Ti−ti∣\sum_{i=1}^{n}|T_i-t_i|∑i=1n∣Ti−ti∣ 最小,每道菜的 TiT_iTi 不能相同。思路能贪心吗?不知道,似乎能,但又不好贪心,直接考虑动态规划。首先排序,排完序之后就满足局部最优可以全局最优,或者说第 iii 个菜可以从第 i−1i-1i−1 道菜转移过来。dp[i][j]=min(dp[i].原创 2021-10-11 19:48:47 · 252 阅读 · 0 评论 -
Codeforces Round #747 (Div. 2)
哎!卡题了又!!!A题题意思路可以从负数开始呀,-(n−1)(n-1)(n−1) ~ nnn代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+10,mod=1e9+7;template<typename T>void Debug(T x,string s){ cout<<s<<": "<<原创 2021-10-09 01:32:08 · 340 阅读 · 3 评论 -
Codeforces Round #744 (Div. 3)
吆西!!!我是个乌鸦嘴!!!掉了70,主要是卡B题了,一个暴力,我想着要用hash优化,实际上直接暴力;但是hash也能写,我少考虑了。。。A题思路统计‘A’和‘B’和‘C’得数量,b == a+c;代码void solve(){ string s;cin>>s; int a = 0,b = 0,c = 0; for(int i=0;i<s.size();i++){ if(s[i] == 'A') a++; i原创 2021-09-29 21:41:20 · 223 阅读 · 0 评论 -
Codeforces Global Round 16
A题思路前面全填零代码void solve(){ ll n,s;cin >> n >> s; // cout<<1<<endl; ll m = (n+1) / 2; // cout<<2<<endl; if(n==1){ cout<<s<<endl;return; } ll ans = (s) / (n-m+1); // cout<<3<<endl原创 2021-09-18 10:43:13 · 111 阅读 · 0 评论 -
Codeforces Round #741 (Div. 2)
题目链接md,要不是卡B卡了一个小时,铁上分,***。文明用语哦该,发泄一下也不为过吧,呜呜先写D1,多给两分钟就能过,思路最后一分钟猜对了D1思路为什么不知道,可是就是猜对了,首先猜最多不会超过 222 次;大概意思就是一个位置删除之后反转的话会抵消好多。然后就猜奇偶,然后呢,还个 ppp 然后,就过了,多给两分钟就过了代码#include<bitsdc++.h>using namespace std;typedef long long ll;const int N=原创 2021-08-27 01:32:10 · 153 阅读 · 1 评论 -
Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))
Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))这场其实有难度。(还是自己菜)A题思路直接按照题意暴力,搞,但是不能只判断是否奇数或者偶数没有 changechangechange 了。要全部判断 mmpmmpmmp,卡了半个小时代码(错误)#include<bits/stdc++.h>using namespace std;typedef long long ll;const原创 2021-08-25 02:39:47 · 308 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2) D ST表维护区间gcd,二分
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+10,mod=1e9+7;#define PII pair<int,int>// #define x first// #define y second#define PB push_backbool vis[N];ll ST[N][100];ll b[N],a[N];int n;void ST_in原创 2021-08-02 11:17:45 · 248 阅读 · 0 评论 -
Educational Codeforces Round 112 (Rated for Div. 2)(毒瘤掉分场)
写在前面的话:一个半小时才把A过了;虽然很毒瘤,但是还是因为自己菜,所以才掉分比赛链接· Problem A题意你需要 nnn 块蛋糕块,有三种蛋糕,分别是:15分钟搞6块、20分钟搞8块、25分钟搞10块。问你最短的搞的时间。思路毒瘤。直接看代码吧。稍微解释一下下:15/6=20/8=25/10=5/215/6=20/8=25/10=5/215/6=20/8=25/10=5/2,所以只要不浪费,用哪种蛋糕都一样;所以优先采用 15−615-615−6 的,(别问我为啥知道,.原创 2021-07-31 01:35:39 · 185 阅读 · 0 评论 -
Codeforces Round #735 (Div. 2)
比赛链接Problem A题意让你找一个区间,然后这个区间的最大值*最小值最大,输出这个答案。思路直接让区间取 222 就行。代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+10,mod=1e9+7;ll a[N];#define PII pair<int,int>// #define x first// #defi.原创 2021-07-30 11:23:58 · 138 阅读 · 0 评论 -
B. Reverse String——论如何优美文雅的暴力(还是自己菜)
现在是原本想着上一波分来,没想到被一个暴力卡死了这题过的人挺多的,所以就该考虑是不是自己思路偏了,可不可以换个角度考虑问题,还有就是写算法之前尽量证明一下自己的算法是正确的,要不然白白浪费时间,特别是cf这么短时间的比赛。掉分不可怕,可怕的是不知道自己为啥上不去分。题意就是从某一个位置开始连续向右走 0/x 步,然后反向连续向左走 0/y 步,问你给的 t 串是不是可以通过以上方法在 s 串中构造出来思路因为串的长度很短,所以肯定要考虑暴力,关键是怎样暴力。赛中以及赛后我.原创 2021-07-23 03:44:11 · 370 阅读 · 2 评论 -
2021杭电多校第一场 1008-maximal submatrix最大单调上升子矩阵
2021杭电多校第一场1008-maximal submatrix 单调栈维护题意题意大概就是让求一个最大子矩阵,这个子矩阵中每一列都是非递减。思路我们可以考虑一行一行的进行“搜索”答案;对于每一行要先处理出:以这一行的每个元素为基础的每一列的最长单调非递减连续序列,然后在这一行中就会转化为如下图所示的连续最大面积。POJ 2559 代码(官方给的标程)#include<bits/stdc++.h>using namespace std;原创 2021-07-21 11:39:46 · 270 阅读 · 0 评论 -
C. Good Subarrays 前缀和思维题
题目 借鉴题意给你一个数组,让你找 (∑i=lrai=r−l+1)\left(\sum_{i=l}^{r} a_{i}=r-l+1\right)(∑i=lrai=r−l+1) 的区间的数量。思路所以用一个 mapmapmap 存一下 sum[i]−isum[i]-isum[i]−i ,然后每个贡献就是 Cx2C_x^2Cx2 。特别要处理一下 sum[i]−i==0sum[i]-i==0sum[i]−i==0 的情况 ,这时候贡献就不是 Cx2C_原创 2021-07-16 15:34:07 · 171 阅读 · 1 评论 -
C. Discrete Acceleration ——计录自己第一个独立AC的实数二分题
题目题意有一条长为 lll 的道路,左边 000 位置有一辆车,右边 lll 位置有一辆车,这中间有 nnn 个加速站,每次经过一个就会速度加一(一开始速度是 111 ),问你辆车相遇的最小时间思路很明显所用时间具有单调性,因为时间少于答案就会不满足,就是碰不到面,时间多于最终答案,就会两车就会背道而驰。所以可以二分时间。难点其实是check函数的编写,代码#include<bits/stdc++.h>using namespace std;typed原创 2021-07-16 11:57:56 · 115 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) 补题B,C,D
Educational Codeforces Round 81 Problem C题意问你要往空串 zzz 中增加几次 sss 的子序列才能得到串 ttt ,如果不能得到输出 −1-1−1 。思路记录 sss 串中每个字母的位置,然后遍历 ttt 串,二分查找大于上一个字母的位置 lastlastlast ,如果没有满足的,则 cntcntcnt++ 。注:不要问为什么要用二分。我一直以为是因为我用的 STLSTLSTL 的缘故。为啥就没想到要原创 2021-07-14 17:01:45 · 122 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) D. Non-zero Segments
题目题意给你一个数组,不包含 000 但是要求你插入最少的数(随意大小),使得没有任何一个子数组的和为 000 。思路肯定要想到前缀和;自己笨死了,不知道以后咋处理了。也想到要用 mapmapmap哈希了,但是忘了消除前缀影响了——意思就是一旦你找到了 pre[l]==pre[r]pre[l]==pre[r]pre[l]==pre[r] r之前的所有前缀都会失效,因为你可以选择在 l∼rl \sim rl∼r 这一段区间,你可以搞掉他,使得他的区间和不为 000,从而对以后的处理没有影原创 2021-07-14 10:37:54 · 99 阅读 · 0 评论 -
codeforces 1546C
题目 借鉴题意题目大意:给一个长度为n的数组a[n],每个元素还有一个朝向,开始都为右。每次你可以调换两个相邻元素的位置,并使两个元素方向转向另一个方向(左->右,右<-左),问在所有元素均指向右向的条件下,能否使原数列单调递增。思路要令一个元素能能指向右向,则一定被进行了偶数次操作;那么在操作之后,每一个的奇偶性必然发生改变。所以可以统计每个数的在原序列和排序后的序列中的奇偶位置的个数。代码#include<bits/stdc+原创 2021-07-13 17:04:19 · 175 阅读 · 0 评论 -
Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort
题目 借鉴题意题目大意:给一个长度为n的数组a[n],每个元素还有一个朝向,开始都为右。每次你可以调换两个相邻元素的位置,并使两个元素方向转向另一个方向(左->右,右<-左),问在所有元素均指向右向的条件下,能否使原数列单调递增。思路要令一个元素能能指向右向,则一定被进行了偶数次操作;那么在操作之后,每一个的奇偶性必然发生改变。所以可以统计每个数的在原序列和排序后的序列中的奇偶位置的个数。代码#include<bits/stdc+原创 2021-07-12 10:08:09 · 159 阅读 · 0 评论 -
Educational Codeforces Round 102 (Rated for Div. 2) D. Program(全网最简单易懂的一个,我看过的)
题目 D. Program题意xxx,初始为0,两种操作,’+’ 表示 x+=1x += 1x+=1,’-’ 表示 x−=1x -= 1x−=1。然后题目给出一系列操作。然后qqq个询问 l,rl,rl,r。表示删掉区间 [l−r][l-r][l−r],之内的操作,剩下的操作,可以让x变成多少不同的值。样例8 4−+−−+−−+-+--+--+−+−−+−−+1 82 82 51 1样例解释:1.empty program — x was only equal to 0;原创 2021-07-10 12:50:09 · 132 阅读 · 0 评论 -
Codeforces Round #728 (Div. 2)
题意: n ~n~ n 个点,给你一个数组 d[i] ~d[i]~ d[i] ,表示第 i ~i~ i 个点到第一个点的最短距离。要求你加边,然后使得所有边权和最小,可以加负边。样例思路很明显其实, d[i] ~d[i]~ d[i] 其实可以排个序,对于最后结果并没有影响,之后我们可以考虑对于每个点,只建一条正向道路,使得满足题目条件原创 2021-06-26 10:46:45 · 493 阅读 · 0 评论 -
Codeforces Global Round 14
Codeforces Global Round 14A.Phoenix and GoldB.Phoenix and PuzzleC.Phoenix and TowerD.Phoenix and SocksA.Phoenix and Gold题意问你能不能重排 nnn 个物品,然后使得 ∑j=1iwj≠x\sum\limits_{j=1}^{i}w_j\neq xj=1∑iwj=x 其中(1≤i≤n)(1 \leq i \leq n)(1≤i≤n)思路比较简单,直接看代原创 2021-05-03 17:10:59 · 392 阅读 · 0 评论 -
Educational Codeforces Round 108 (Rated for Div. 2) C题
传送门题意就是给你 n ~n~ n 个学生,每个学生属于一个大学。然后问你在每个大学中挑选若干组 k ~k~ k 个人的队伍参赛,不足k个人的舍去。每个人有一个能力值。问你 k=1−n ~k=1-n~ k=1−n 时,所有学校的总能力值是多大?思路反正就是前缀和嘛,把最后模剩下的去掉,把每个队伍的加起来,就是 k=i ~k=i~ k=i原创 2021-04-30 09:18:51 · 105 阅读 · 0 评论 -
CF1491C Pekora and Trampoline
题目CF1491C Pekora and Trampoline题解贪心策略:尽量从编号小的地方开始跳。从头到尾模拟跳的过程,但是如果对每一步都逐个模拟会超时。可以发现:每次在一个地方跳的时候,只会影响到它后面的物体,而对前面的无影响。所以,处理某一点时,可以先将影响传递到下一点,不必传递到结尾。因此,需要记录每一点被前面的路线经过了几次。对于某一点,如果要使它的值降为1,则一定会经过i+2~i+S[i]的每一点,并且,如果这点的值为1后又被经过了几次,则i+1也会同样被影响。代码..转载 2021-04-09 09:17:09 · 135 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2) C. Balance the Bits
题目链接Here题意给你一个 0、1 ~0、1~ 0、1 串,要求你构造两个“平衡括号串”,1要求这两个串该位置括号一样,0相反思路因为如果有奇数个0,必然两个其中有一个不满足条件。所以必须得有偶数个0,那么1也就有偶数个了。官方代码#include <bits/stdc++.h>using namespace std;void solve() { int n; string s; ci.原创 2021-04-08 21:25:35 · 133 阅读 · 0 评论 -
Codeforces Round #710 (Div. 3) D题
题目链接Here题意大概就是给你一个数组,然后每次选择两个位置不同,而且对应位置的数值不同,然后将这两个删掉,问最后最少能剩多少个元素。思路垃圾,比赛的时候没想出来,只想出来把每个数字的数量用map映射出来,没想到用优先队列。而且C题在那搞那个最长公共字串模板搞了好久,实际上可以不用,直接暴力求解。垃圾,掉分了又。。。。。言归正传:比赛后又想了一个小时,还是没想出正解,只好找官方题解了。让我们用每个字符在字符串中出现的次数来替换它。然后每一个操作-取两个非零的数字并从中减去一个。最后.原创 2021-03-26 02:53:22 · 231 阅读 · 2 评论 -
Educational Codeforces Round 106 (Rated for Div. 2) C
还是太菜了,17分钟签完到,就自闭了。C题题目描述 你从 (0,0)(0,0)(0,0) 走到 (n,n)(n,n)(n,n),只能up/rightup/rightup/right ,每次方向转变,最多只能转变(n−1)(n-1)(n−1)次,所以就有n个 segmentsegmentsegment 。然后还会给你 n ~n^~ n 个cost-CiC_iCi 。问你最小花费是多少。思路当时比赛的时候就想到是贪心,就是最小的那个走多点,其他的只原创 2021-03-19 09:26:11 · 1636 阅读 · 5 评论 -
Educational Codeforces Round 105 (Rated for Div. 2) 补题
题目链接原创 2021-03-04 19:50:08 · 214 阅读 · 0 评论 -
codeforces 346B (kmp+三维dp)
借鉴了这位大佬的代码思路题意是,给你三个串a,b,virusa,b,virusa,b,virus问你能找到的a,ba,ba,b的最长不包含所给的virusvirusvirus串的公共子序列是啥,输出。思路最长公共子序列,直接套用LCS就行。这题不同的是要再加一个维度,代表a,ba,ba,b的公共子序列中能够与virus配对的最长前缀长度为k,即dp[i][j][k]dp[i][j][k]dp[i][j][k],最后只要在 dp[n][m][k],0<=k<tdp[n][m][k],0&原创 2021-02-20 17:18:58 · 226 阅读 · 0 评论 -
Codeforces Round #511 (Div. 2)虚拟参赛补题
AB为什么这么水,不知道,是我变强了吗?那必然不是。哈哈哈C题题目链接Here代码原创 2021-02-20 16:29:32 · 117 阅读 · 0 评论 -
codeforces round #683 div2 (div2第二场)
第一题就是直接1,2,3,4,5就行,这样的话,原来少的加的就多了,多的加的是少的第二题,其实还是有点思维含量的。就是规定了无限次操作,如果有偶数个负数(包含0),那么就可以把所有数全变成正数,无论相邻不相邻。第三题。太狗了,又是爆了int,以后tm真是猪了,哎,忘了忘了,很明显就是要开int呀,真垃圾反正就是排个序,(从小到大),然后从后面装。#include <bits/stdc++.h>using namespace std;#define ll long longco原创 2020-11-16 13:19:20 · 297 阅读 · 0 评论 -
codeforces 1117(第三场div2)
第一题,是啥吧,就是让你找最长区间,区间特性就是平均数要最大。所以你只要贪心地搞最大的就行了。找到最大的连续最大值区间。第二题就坑爹,不是人家题坑爹,简单地一匹,哎,可是忘了取整这回事了。假设m/(k+1)是次数,然后要乘以权重,你不能这样写,w*m/(k+),因为这样和可能就不是次数了,乘以w之后,几乎次数就变了。哎,还不如预先处理像。ll x=m/(k+1),然后再乘。不错不错,真不错。第三题就不会了。、给你一个点坐标,要去到另一个点,给你n天的风向,循环。问你最小的天数到达,或者不可能。还原创 2020-11-17 22:06:33 · 218 阅读 · 0 评论 -
codeforces round #684 div2 (div2第四场)
第三题22的方格中,你可以选三个然后变换一下,0-》1,1-》0;问能否在nm中变换成全部是0的#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std ;int t , n , m ;char s[110][110] ; int main(){ cin >> t ; while(t--){ sca原创 2020-11-18 09:56:59 · 235 阅读 · 0 评论 -
codeforces round #685 第六场(div2)
第三题就是给你两个字符串,a,b,问你能不能把a变成b,有两种操作1.交换a的相邻两个位置2.k,给你k,然后要求k个相等的可以都加1,就是假设k=2,aa变成bb,然后也可以变成cc无限次操作。。思路其实挺简单的,就是把a串和b串hash到一个字母数组中,就是存各自有多少个。虽然要求b不能动,但是你可以在下面操作中,实现b动,或者说实现b不动。具体看代码吧。以后这种题还是少用比较复杂的解题思路,虽然不知道上一个思路咋错的,但显然比较复杂,而且还有bug,虽然我觉得哪个bug是对的,正确代码原创 2020-11-22 07:59:41 · 280 阅读 · 0 评论