思维
小菜鸡加油
菜鸡
什么都能折磨
展开
-
Coloring Brackets(区间dp-不错的题)
https://codeforces.com/contest/149/problem/D题意: 给一匹配的括号序列,要求每对括号恰有一个被染成蓝或红色,要求相邻的括号不同色,求方案数思路:首先考虑到每次搜的一个连续区间需要是合法的括号匹配。所以我开始想着直接把每一个子串的合理位置存下来。但是实际上最长串的每个合理位置都是固定的。因此开始括号匹配存下来即可然后由于要求是合法子串,不方便递推,dfs记忆化搜索更加方便。考虑dfsdfs的过程中把判断当前子串是否合法写成函数,更加简洁明了。考虑当前的原创 2021-11-10 20:13:43 · 182 阅读 · 0 评论 -
F. 地图压缩(二维kmp+哈希)
https://codeforces.com/gym/103389/problem/F实际上比较能看出来是kmp吧。POJ2185是二维kmp的最小矩阵面积。询问次数多的话就不能每次取字符串遍历了。需要找到一个快速取字符串value的方式就是哈希。二维的公共前后缀怎么找呢?对每行每列进行哈希的预处理,对于查询的矩阵或者行的哈希值数组。对于列同理。然后找出行的哈希value的最大公共前后缀长度,即最多可以有多少行。对列同理找出哈希value的最大公共前后缀长度,即最多可以有多少列。行数和列数乘积就原创 2021-11-09 16:50:55 · 457 阅读 · 0 评论 -
B. 攻防演练(思维+倍增)
https://codeforces.com/gym/103389/problem/B假设字符集为{a,b,c}。从后往前看一个串,如果当前串集合没有满,比如说字符串是cbacba对于最后一个a,可以跳出去。对于最后一个b,可以跳出去。对于最后一个c,可以跳出去。但是当第一个a的时候,就不能直接跳出去了。贪心去看发现跳到a,再跳出去。当第一个b的时候,就不能直接跳出去了。假设跳到a,那么必然还要跳c|b|a中的一个然后再跳出去。而直接跳到b,就可以跳出去了。因此每次记录一下当前跳应该跳的最远原创 2021-11-09 15:00:52 · 714 阅读 · 0 评论 -
1951. 宇宙人浇花(最大异或对变形)
https://citel.bjtu.edu.cn/acm/problem/1951#submit宇宙人浇花时间限制 1000 ms 内存限制 256 MB因为没见过飞船,则卷博士把宇宙人的飞船修成了小汽车,于是他们被迫留在了企鹅村。失去目标的宇宙人没有变成咸鱼,他们很快找到了一份浇花的工作。花园的花一字排开,每盆花都有一个美丽值,而整个花园的和谐度是所有花美丽值的异或和。宇宙人只能浇连续的一段花,并且一天只能浇一次,每盆被浇到的花美丽值都会加 1。花园主人琪琪想让今天花园的和谐度尽可原创 2021-11-06 19:05:58 · 424 阅读 · 0 评论 -
C. Portal(dp优化二维前缀和)
https://codeforces.com/contest/1581/problem/C正常的第一想法是:二维前缀和预处理+暴力。但是n是400过不去。之前碰到一道利用最大子序和思想来优化的。这题类似。采用dp来优化。枚举两行 ,再枚举1列。对列进行dp。dp[k]:当前到k列的最小花费(注意这里是不包含第k列的)【后面解释】f[k]=min(f[k−1]+加入第k行需要的修改次数,以i、j、k−3、k为边界的矩阵的修改次数)每次用当前的f[k]+右边界需要的修改次数更新ans。先解原创 2021-10-30 18:51:49 · 219 阅读 · 0 评论 -
D - Rectangles(map的一个理解小bug)
https://atcoder.jp/contests/abc218/tasks/abc218_d直接暴力的思路没问题。但是我开始写的时候test3死活不对。进了调试才看到问题。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#includ原创 2021-09-12 00:13:44 · 88 阅读 · 0 评论 -
5866. 数组的最大公因数排序(CF1553D)
类似原题:https://codeforces.com/problemset/problem/1553/D每个质因子给做好下标的索引然后并查集连通。比较trick的是最后sort后来check一下当前的数字的下标和正确位置的下标是不是在一个连通块里。这个check的部分和cf的一道div2B是类似的。const int maxn=2e5+1000;typedef int LL;typedef pair<int,int>P;class Solution {public:.原创 2021-09-05 16:04:53 · 155 阅读 · 0 评论 -
D.Querying Multiset(思维/线段树)
题目大意维护使得满足以下三种操作:在一个空球上面写一个整数XX,并把这个球放入包内。 对于包内的所有球,将每个球上面的整数加上XX。 输出包中所有球上的最小的数字,并把这个球扔掉.法一:无脑线段树。把时间顺序看成修改的区间来处理#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<ma..原创 2021-08-09 15:16:35 · 128 阅读 · 0 评论 -
C. MP3(二分+离散化)
https://codeforces.com/contest/1199/problem/C思路:首先这个题卡原创 2021-06-04 21:06:34 · 110 阅读 · 0 评论 -
F2. Guess the K-th Zero (Hard version)(分块)
https://codeforces.com/contest/1520/problem/F2思路:先分块,再块中二分。暴力修改400ms#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#inc原创 2021-05-07 11:16:14 · 202 阅读 · 1 评论 -
C. Garland(思维)
https://codeforces.com/problemset/problem/767/C思路:答案必定%3==0然后跑子树的和一旦出现了sum/3就可以砍一段,然后记为0接着跑#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>原创 2021-05-02 18:11:26 · 155 阅读 · 0 评论 -
问题 C: 小李发奖金
时间限制: 1 Sec内存限制: 128 MB提交: 解决:[提交] [状态] [讨论版] [命题人:外部导入]题目描述当然打台球只是小李的休闲娱乐活动,对待他的本职工作,他还是非常兢兢业业的。但是小李的老板是个周扒皮,每次都想克扣小李的工资和奖金,甚至制定出非常奇葩的规则。又到了每年发年终奖的时候了,今年老板的规则是这样的:给你n个数,每次你可以对任意一个数加1,直...原创 2020-01-29 21:20:21 · 1468 阅读 · 0 评论 -
问题 B: 小李数星星
问题 B: 小李数星星时间限制: 1 Sec内存限制: 128 MB提交: 解决:[提交] [状态] [讨论版] [命题人:外部导入]题目描述小李在农村长大,那时候大家喜欢晚饭过后在院子里纳凉,听不懂大人在说什么的小李喜欢抬头看天空,尤其是夏天的夜晚,天上的星星又多又亮。长大后小李进城打工,每当想家的时他还是喜欢抬头看看天,寻找另一边故乡的记忆。可是大城市里空...原创 2020-01-29 21:17:57 · 2239 阅读 · 0 评论 -
Contest1764 - 2020年春节训练赛I(原谅我是个菜) A
问题 A: 小李打台球时间限制: 1 Sec内存限制: 128 MB提交: 解决:[提交] [状态] [讨论版] [命题人:外部导入]题目描述在异乡打拼的小李同志迷上了一款叫诺斯克的台球游戏,而且随着练习的深入,他总是能在某些神奇的时刻开启外挂模式,此时小李将指哪打哪,直至无球可打。现在小李想让你帮他计算下当他开启外挂模式的时候最多可以取得多少分数。注意:台面上的...原创 2020-01-29 21:15:26 · 864 阅读 · 0 评论 -
调和级数近似求和公式推导(转载)
原文链接:https://blog.csdn.net/ezoiHQM/article/details/82961266?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase.原创 2020-05-24 11:16:48 · 3107 阅读 · 0 评论 -
C. Choosing flowers(贪心+二分边界)
https://codeforces.com/problemset/problem/1379/C思路:考虑答案情况,假如a[i]都买了,剩下的钱肯定挑一个b[i]最大的买完。我们注意到,最优的答案应该是剩下的钱都买某个物品了。那么我们可以枚举某个物品,对于其他>这个物品的b[i]的贡献能就都拿,剩下都拿这个物品的b[i].注意一下二分的边界。找大于等于的第一个位置再-1#include<iostream>#include<vector>#include<原创 2021-04-30 17:49:34 · 91 阅读 · 1 评论 -
D. Maximum Sum of Products(区间dp)
https://codeforces.com/contest/1519/problem/D思路:刚好最近在整理区间dp。这题 看着像个区间dp.dp[l,r]为反转这段区间获得的新价值。然后递归[l+1,r-1]并且dp状态记录下来。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include原创 2021-04-30 01:33:29 · 705 阅读 · 0 评论 -
Tolik and His Uncle(构造)
https://codeforces.com/contest/1179/problem/B又被吊打了。先考虑一行的时候,怎么构造,肯定是先走到头,然后再回来,再过去。考虑n行的时候也这样,类似于中心对称去构造。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#inclu原创 2021-04-29 10:33:42 · 126 阅读 · 0 评论 -
C - Serge and Dining Room(思维+权值线段树)
https://codeforces.com/contest/1179/problem/C思路:思考x作为答案时候,条件是啥。就是大于等于x的商品个数 > 大于等于x的小朋友的钱的个数。那么对于这一单点点。维护好之后就是找后缀>0的最后位置。一个做法就是转化成维护前缀和区间修改。然后查区间最值来找到这个位置。插眼:cf393E#include<iostream>#include<vector>#include<queue>#原创 2021-04-28 22:40:00 · 161 阅读 · 0 评论 -
G.最大得分(连续长度dp)
http://acm.csust.edu.cn/contest/152/problem/G思路:如果按照枚举最后一段的长度去做,复杂度将到达O(n^2*k)的。无法接受。但是观察到gcd很小只有100。所以将gcd作为一维dp[i][j][k] 表示第i个数,当前部分的gcd为j,已经分到第k部分的答案对于第i个,要不和前面的合成一段。要不分开。对于分开:dp[i][a[i]][k]=max(dp[i][a[i]][k],dp[i-1][j][k-1]+a[i])...原创 2021-04-28 17:36:10 · 159 阅读 · 0 评论 -
C. The Hard Work of Paparazzi(最长上升子序列)
https://codeforces.com/problemset/problem/1427/C思路:暴力转移O(n^2)abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j] i<j 时dp[i]=max(dp[i],dp[j]+1)但是观察到图最大只有500*500.其最大的曼哈顿距离只有1000那么假设单调递增的人每次都相隔1,最多1000次,前面的人肯定都能到了。所以对于前面的,保证到达,没有必要再扫。直接处理一个最值的前缀O1.对于原创 2021-04-28 11:49:04 · 283 阅读 · 0 评论 -
C. K Integers(逆序对+二分中间位置)
https://codeforces.com/contest/1268/problem/C题意:思路:挺不错的一道题参考:https://blog.csdn.net/Q755100802/article/details/103664555相当不错#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath&原创 2021-04-27 22:23:53 · 96 阅读 · 0 评论 -
B. Domino for Young(二分图)
https://codeforces.com/contest/1268/problem/B思路:很神仙。二分图染色后取两个颜色后小的就是答案。据说是网络流建模经典...(麻了网络流又没补完)#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>原创 2021-04-27 20:22:51 · 202 阅读 · 2 评论 -
A. Long Beautiful Integer(构造+模拟)
https://codeforces.com/contest/1268/problem/A要不+1,要不不加就好#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algo原创 2021-04-27 19:50:59 · 117 阅读 · 0 评论 -
Add on a Tree: Revolution(思维+构造)
https://codeforces.com/contest/1188/problem/A2思路:注意找的是当前节点的两个儿子的叶子,不全是一个儿子下的叶子参考:https://blog.csdn.net/yopilipala/article/details/95652210?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.control&dist_原创 2021-04-26 21:10:10 · 107 阅读 · 0 评论 -
C. Array Beauty(dp好题)
https://codeforces.com/contest/1188/problem/C思路:那部分差分没懂干净阿....郁闷参考:https://www.luogu.com.cn/problem/solution/CF1188Chttps://blog.csdn.net/weixin_44178736/article/details/107777918?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&a原创 2021-04-26 19:17:28 · 160 阅读 · 0 评论 -
A1. Add on a Tree(证明)
https://codeforces.com/contest/1188/problem/A1思路:证明参考:https://blog.csdn.net/Emm_Titan/article/details/99857428?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.control&dist_request_id=&depth_1-utm_原创 2021-04-25 23:50:34 · 126 阅读 · 0 评论 -
C. Quantifier Question(思维+建图+拓扑dfs)
https://codeforces.com/contest/1344/problem/C题意:从x1开始按顺序执行条件。是从小的序号点开始。而不是按照度数。可以发现对于x1,x2x1<---x2. 任意X1,存在X2 truex1--->x2, 任意X1, 存在X2 true且其他情况都是存在对于一个A,能到他的点和他能到的点都是E。对于他能到的点。dfs对于能到他的点,反边dfs然后topo判一下有无环#include<iostrea...原创 2021-04-25 19:59:49 · 117 阅读 · 0 评论 -
B. Monopole Magnets(思维+连通块)
https://codeforces.com/contest/1344/problem/B思路:开始看成了白块区域不能放S极了。看懂题意的话还是能做对的。1.如果有一行/一列存在不连续的黑块。 -12.如果有一行全空而不存在列全空。-1/反之亦然。剩下的就全部扔S极,每个连通块里扔一个N极就好#include<iostream>#include<vector>#include<queue>#include<cstring>#i原创 2021-04-25 19:56:01 · 161 阅读 · 0 评论 -
A. Hilbert‘s Hotel(数论)
https://codeforces.com/contest/1344/problem/A证明参考:https://blog.csdn.net/qq_43408978/article/details/108889203#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#i原创 2021-04-25 19:53:38 · 194 阅读 · 0 评论 -
L3-028 森森旅游 (30 分)
还没题单把..怪无语的这题。我开始把更新最值写反了。没想到还给过了样例,交上去就1分。然后就gg了。可能很多人没整体思路?先暴力吧。有26分?枚举中间的换钱点,对于前面纸币的,跑一个最短路。对于后面的旅游币,跑一个最短路。这时候有一个最值答案。但是维护的话单纯看是否有一个比当前值更小是不对的。因为如果一开始total存的就是最小值,假如说是第x个,然后现在把x的汇率改小了,那么你就要花更多的钱。此时答案是未知的。于是这里可以暴力阿..我真是麻了以后就该cccc先给暴力过去的。原创 2021-04-24 21:55:54 · 1203 阅读 · 0 评论 -
C. Konrad and Company Evaluation(图论+势能分析)
https://codeforces.com/contest/1229/problem/C思路:暴力的话算中间点的入度和出度。答案就是Σ入度*出度但是暴力修改的复杂度是多少呢。O(sqrt(m))不会证阿..又是个大坑https://www.cnblogs.com/LLTYYC/p/11580886.html然后vector[x]存比当前权值大的点。遍历的时候就可以直接修改了。#include<iostream>#include<vector>#原创 2021-04-24 09:47:47 · 434 阅读 · 0 评论 -
B. Kamil and Making a Stream(暴力+前缀gcd)
https://codeforces.com/contest/1229/problem/B思路:开始直接儿子logn跳,cf这么强的数据肯定有链子的数据,直接tle9.考虑到gcd的单调性,一条链子上最多只有logn个。两个角度理解:1.gcd每次减小要减少的话至少会少一个次幂的一次。假设是2的1次,那么就是logn的递减速度2.gcd(a,b)=gcd(b,amodb) mod运算每次至少会少一半。(两个不等式合并)因此我们从根节点跑一个前缀,map记录每个节点的前缀的gcd的距离原创 2021-04-23 22:06:49 · 312 阅读 · 0 评论 -
B. Beingawesomeism(模拟)
https://codeforces.com/contest/1280/problem/B思路:分类讨论#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algori原创 2021-04-22 19:51:57 · 95 阅读 · 0 评论 -
C.Jeremy Bearimy(树上点对最大值/最小值边权总和)
https://codeforces.com/contest/1280/problem/C思路:参考:https://blog.csdn.net/qq_43682148/article/details/105297317?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242将具体的构造转化成算边的贡献进行思考。再分别贪心考虑最大值,最小值的情况下节点和父亲的边分原创 2021-04-22 18:41:41 · 202 阅读 · 0 评论 -
D. Cut(区间倍增)
https://codeforces.com/contest/1516/problem/D思路:首先要考虑到如何维护互质对。暴力怎么维护。肯定是跑一段到出现了区间内有两个数不互质的地方停止累加区间。预处理:把每个数分解了,对于当前位置能到达的区间更新成当前数分解出的因子处于的前面区间中的最近的地方。这样就把每个区间的段落其实划分好了。可是这么跑还是O(nq)的。这里还要一个倍增处理。当前位置往前跳的步数其实是单调的。从2^i的大到小,有一个满足之后就可以跳过去,最后凑成该区间的长原创 2021-04-22 16:15:59 · 156 阅读 · 0 评论 -
A. Cut and Paste(思维+模拟)
https://codeforces.com/contest/1280/problem/A思路:小于1e6的部分暴力。后面的直接算。注意ans%mod后会可能小于cur#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<原创 2021-04-21 20:15:04 · 165 阅读 · 0 评论 -
D. Numbers on Tree(思维+构造)
https://codeforces.com/contest/1287/problem/D参考:https://blog.csdn.net/weixin_43826249/article/details/103855447首先证明:n个节点一定可以用1-n的数字去放。因为1-n的数字都是不同的,那么不会有相对大小的问题,不会有节点之间相互影响而导致答案错误。放相同值的节点也就是少一个差值,我们完全可以用放的方式去避免,比如小的放在大的上面。其次证明:如果节点的C值小于节点的size,那么一.原创 2021-04-21 16:37:48 · 143 阅读 · 0 评论 -
B. Hyperset(思维+暴力)
https://codeforces.com/contest/1287/problem/B思路:得知三个串搞定两个最后一个答案就确定了,于是map里算完发现C(2,3)每次是算了3次。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#in原创 2021-04-21 15:39:33 · 225 阅读 · 0 评论 -
C. Garland(记搜版本)
https://codeforces.com/contest/1287/problem/C思路:上次是用递推做的..这一次用记忆化做。两者感觉有一点不同,记搜来说代码可以更简短一点,而且是对于当前的状态,暴力dfs跑完之后可能的所有状态,然后回来的时候把最优答案比较出来然后记住。和下面这个传送的先处理好边界然后再跑各有妙处。传送#include<iostream>#include<vector>#include<queue>#include<原创 2021-04-21 15:35:34 · 108 阅读 · 0 评论