CCSU_Cola
码龄5年
关注
提问 私信
  • 博客:14,265
    14,265
    总访问量
  • 54
    原创
  • 1,999,108
    排名
  • 176
    粉丝
  • 0
    铁粉

个人简介:ACMer

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2020-02-15
博客简介:

m0_46335115的博客

查看详细资料
个人成就
  • 获得27次点赞
  • 内容获得32次评论
  • 获得45次收藏
  • 代码片获得161次分享
创作历程
  • 54篇
    2021年
成就勋章
TA的专栏
  • 算法
    36篇
  • 笔记
    4篇
  • dp
    1篇
  • 每日赛后补题
    10篇
  • 练习赛
    2篇
  • 欢乐赛
    1篇
兴趣领域 设置
  • 数据结构与算法
    排序算法
创作活动更多

新星杯·14天创作挑战营·第9期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛! 注: 1、参赛者可以进入活动群进行交流、分享创作心得,互相鼓励与支持(开卷),答疑及活动群请见 https://bbs.csdn.net/topics/619626357 2、文章质量分查询:https://www.csdn.net/qc

475人参与 去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

B. Take Your Places!(思维)

题目链接 题意:给出一个序列,序列中相邻的数可以交换位置,问最少交换多少次使得奇偶性质相同的数不相邻。 思路:因为如果交换过后的数组的如果为奇数开头,那么所有的奇数都在奇数位,而如果以偶数开头,那么所有的偶数都在奇数位,而且如果奇数位置摆放好了,那么偶数也摆放好了。所以只需要分别求出奇偶开头的花费数即可。 代码: #include<bits/stdc++.h> using namespace std; #define ll long long int t,n,x; int main()
原创
发布博客 2021.09.26 ·
252 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

D. The Strongest Build(bfs+优先队列)

题目链接 题意:有n个数组,需要在每个数组中选取一个下标,然后将这些选取的下标的数求和,但是有m个下标序列是被禁止的,在不与这些序列相同的前提下,输出一个求和后数字最大的下标序列。 思路:用map嵌套vector对下标序列进行标记,然后用bfs进行广搜,每次改变最大序列的一个下标,然后压到优先队列中,以数的总和作为优先队列的第一值,然后每次结束后拿出的vector如果在map中没有出现过,则该序列的答案一定是最大值。 代码: #include<bits/stdc++.h> using
原创
发布博客 2021.09.24 ·
232 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

P2597 [ZJOI2012]灾难(topsort+LCA)

题目链接 题意:给一张图代表食物链,图中没有环,,如果x捕食y,那么有一条有向边,由x指向y,如果某个物种的捕食对象全灭绝了,那么该物种就会灭绝,定义了一个名词“灾难值”,每个物种的灾难值为它灭绝后,会导致多少物种灭绝。输出所有1-n物种的灾难值。 思路:如果一个物种有多个捕食对象,那么该物种的所有捕食对象都灭绝了才会使得该物种灭绝,可以知道一个物种捕食对象都灭绝的条件为它所有捕食对象的最近公共祖先灭绝以及能够使得最近公共祖先灭绝的其他物种灭绝,于是可以根据这个条件重新建图,即为将一个物种挂到它所有捕食
原创
发布博客 2021.09.20 ·
182 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

AtCoder Beginner Contest 218 F Blocked Roads(并查集+搜索)

题意:给出n个点和m条边,1-m条边会依次不可通过,求出每个边不可通过时,1-n的路径最小值。 思路:如果依次求最短路,时间复杂度为m*m*logn,显然是不可以的,于是我想到可以将不受限制时的最短路求出来,那么该路径最长为n个边组成,也就是n-1条边,我们可以将这些边标记起来,然后如果删除的边不是其中的,则直接输出不受限制的答案,否则在某条变不能通过的情况下重新跑一次bfs,时间复杂度为n*m。因为最短路一定在最小生成树中,于是我采用了先生成最小生成树,再标点最短路的方法。 代码: #includ
原创
发布博客 2021.09.12 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

P3761 [TJOI2017]城市

题目链接 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作。这个地区一共有n座城市,n-1条高速公路,保证了任意两运城市之间都可以通过高速公路相互可达,但是通过一条高速公路需要收取一定的交通费用。小明对这个地区深入研究后,觉得这个地区的交通费用太贵。 小明想彻底改造这个地区,但是由于上司给他的资源有限,因而小明现在只能对一条高速公路进行改造,改造的方式就是去掉一条高速公路,并且重新修建一条一样的高速公路(即交通费用一样),使得这个地区的两个城市之间的最大交通费用最小(即使得交通费用最...
原创
发布博客 2021.09.08 ·
156 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

牛客小白月赛37 I 加减

题目链接 思路:枚举l,二分一个r,判断区间内全等于一个值是否满足修改次数小于等于k,因为区间是排序过的,所以只需拿出中位数,然后判断其他数到修改为中位数需要的修改次数是否小于等于k。 代码: #include<bits/stdc++.h> using namespace std; #define ll long long ll a[100010]; ll sum[100010]; ll check(int l,int r){ int mid=(l+r)>>1;
原创
发布博客 2021.09.03 ·
762 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

E. Carrots for Rabbits(贪心+优先队列)

题目链接 题意:给定n个物品,每个物品有一个体积,可以将一个物品拆开成很多份,最后需要一共k份,答案为每个物品的体积的平方总和,输出答案的最小值。 思路:我的思路本来为将最大的物体从优先队列里拿出来,然后拆成均等的两份,然后再放回优先队列,交一发wa了,然后发现物品有时候直接拆成三份或更多份会更优,比如10拆成三份为3,3,4,但是如果按照我的方法为2,3,5。看题解发现大佬的做法是先算出不拆的答案,然后将之前不拆的答案和每个物品拆成两份的答案做差,然后每次拿出最大的减去,然后再计算拆多一份的答案压入队
原创
发布博客 2021.09.01 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

UVA - 1423 Guess(拓扑排序)

题目链接 思路:根据sum[j]-sum[i]>0,可以知道j的值比i高,也就是可以连一条j到i的有向边,sum[j]-sum[i]<0,则反过来建边,由此跑拓扑序,排在前面的值一定大于或等于后面的,可以按照入队的顺序给值。 代码: #include<bits/stdc++.h> using namespace std; #define ll long long struct tt{ int x,to; }; tt e[20010]; int t,n; char p[
原创
发布博客 2021.08.17 ·
145 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

E - Good Triple(思维求贡献)

题目链接 题意:给一个只包含0和1的字符串S,问在字符串中有多少个区间[L,R]包含S[l]==s[l+k]==s[l+2*k],且L<=l,l+2*k<=R。 思路:因为只包含0和1两种字符,可以知道不构成题目条件的串的长度不会大于9,也就是说只需要暴力求解即可,枚举以L为起点,得到满足条件的最小R。答案加上strlen(s)-R+1即可。 #include<bits/stdc++.h> using namespace std; #define ll long long c
原创
发布博客 2021.08.15 ·
171 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

B - Two chandeliers(扩展中国剩余定理+二分)

题意:有两个灯泡,灯泡都为变色灯,分别有n和m种颜色,每个颜色用ai和bi表示(ai互不相同,bi互不相同),灯每天按照序列顺序更换一次颜色,问多少天之后一共出现过k天两个灯的颜色互不相同。 思路:先将每个颜色出现在ai和bi中出现的位置存起来,然后根据扩展中国剩余定理,求相同的颜色第一次相同的位置pos%n==x&&pos%m==y,x和y分别表示该颜色在ai和bi中出现的位置,然后每个颜色下次相同的位置即为pos+lcm(n,m),通过这个可以求出某个位置之前该颜色出现的次数,二分答案
原创
发布博客 2021.08.13 ·
137 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AcWing 3800. 奇数还是偶数(思维)

题目链接 给定一个整数nn,它可以被表示为一个k位的b进制数,如下所示: n=a1⋅(b^k−1)+a2⋅(b^k−2)+…+ak−1⋅b+ak 举例说明,如果b=17,k=3,a=[11,15,7],那么n=11⋅17^2+15⋅17+7=3179+255+7=3441。 思路: 1.如果b是偶数,那么a[1]到a[k-1]都是乘以偶数,答案都为偶数,所以只受最后一个a[k]的奇偶数的影响。 2.如果b是奇数,那么a[1]到a[k-1]都是乘以奇数,答案不会收到b的影响,仍为a[...
原创
发布博客 2021.08.11 ·
92 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

1073. 树的中心(树形dp)

题目链接 给定一棵树,树中包含nn个结点(编号1~n)和n−1 条无向边,每条边都有一个权值。 请你在树中找到一个点,使得该点到树中其他结点的最远距离最近。 思路:既然要找到一个点距离最远的点的距离最近,那么如果以任意点为根节点去dfs,那么某个点距离最远的点一定会被其下面最远的点更新,这个可以通过树形dp直接能到达的最深的深度即可,但是它同时也会被其父节点能到达的最远距离更新,于是我们每个点需要维护一个最大值和次小值和该点的最大值是哪个儿子节点更新的,然后再跑一次dfs,即可得到某个节点的父亲...
原创
发布博客 2021.08.11 ·
142 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

P5536 【XR-3】核心城市(树的直径)

题目链接 X 国有n座城市,n − 1 条长度为1的道路,每条道路连接两座城市,且任意两座城市都能通过若干条道路相互到达,显然,城市和道路形成了一棵树。 X 国国王决定将k座城市钦定为 X 国的核心城市,这k座城市需满足以下两个条件: 这k座城市可以通过道路,在不经过其他城市的情况下两两相互到达。 定义某个非核心城市与这k座核心城市的距离为,这座城市与k座核心城市的距离的最小值。那么所有非核心城市中,与核心城市的距离最大的城市,其与核心城市的距离最小。你需要求出这个最小值...
原创
发布博客 2021.08.10 ·
198 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

P1395 会议(树的重心)

题目链接 有一个村庄居住着n个村民,有n-1 条路径使得这n个村民的家联通,每条路径的长度都为1。现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要把会议地点设置在哪个村民的家中,并且这个距离总和最小是多少?若有多个节点都满足条件,则选择节点编号最小的那个点。 题意:找到树的重心,然后求所有点到树的重心的距离和。 思路:树形dp根据重心的性质找到重心,然后再跑dfs求距离和。 #include<bits/stdc++.h> us...
原创
发布博客 2021.08.09 ·
347 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

P3398 仓鼠找sugar(LCA)

题目链接 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d)。他们都会走最短路径。现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友? 小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧! 题意:给出一棵树,给四个点a,b,c,d,问a-b的路径和c-d的路径有没有重合。 思路:若两个路径有重合那么一定有LCA(a,b)在c-d路径上或
原创
发布博客 2021.08.09 ·
318 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

[USACO19DEC]Milk Visits S(LCA)

题目链接 Farmer John 计划建造N个农场,用N-1 条道路连接,构成一棵树(也就是说,所有农场之间都互相可以到达,并且没有环)。每个农场有一头奶牛,品种为更赛牛或荷斯坦牛之一。 Farmer John 的M个朋友经常前来拜访他。在朋友i 拜访之时,Farmer John 会与他的朋友沿着从农场 Ai​到农场 Bi​之间的唯一路径行走(可能有 Ai​=Bi​)。除此之外,他们还可以品尝他们经过的路径上任意一头奶牛的牛奶。由于 Farmer John 的朋友们大多数也是农场主,他们...
原创
发布博客 2021.08.08 ·
309 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

AcWing 3797. 最大化最短路(图论)

题目链接 题意:在k个特殊点之间选两个点,在之间连一条边,使得1-n的最短路最大。每条边的路的长度都为1。 思路:从起点和终点出发分别跑一次bfs,求出dist1数组和distn数组,可以知道在a,b两点之间连一条边,最短路可能会不变,也有可能变成dist1[a]+distn[b]+1或者distn[a]+dist1[b]+1,若发生改变,那么最短路的最大值就是min(dist1[a]+distn[b]+1,distn[a]+dist1[b]+1),假设dist1[a]+distn[b]+1小于等于di
原创
发布博客 2021.08.08 ·
98 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

3789. 隐藏字符串(dp)

题目链接 题意: 给定一个由小写字母构成的字符串s。 我们称字符串t隐藏于字符串s中,如果它满足: 存在一个字符串ss的子序列,与其一一对应。 该子序列的各个元素的下标可以构成一个等差序列。 例如,字符串aab就隐藏于字符串aaabb中,因为aaabb的第1,3,5 个元素刚好可以构成aab,而这恰好是一个公差为2的等差数列。 字符串tt可能隐藏于字符串s中多次,这取决于共有多少个s的不同子序列满足与字符串t一一对应,且各个元素下标可以构成一个等...
原创
发布博客 2021.08.01 ·
301 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

序列最大收益(dp)

题意: 给定一个长度为m的整数序列a1,a2,…,am。 序列中每个元素的值ai均满足1≤ai≤n。 当一个值为i的元素和一个值为j的元素相邻时,可以产生的收益为wi,j。 现在,我们可以从序列中删除最多k个元素,删除一些元素后,原本不相邻的元素可能会变得相邻。 序列的收益和为所有相邻元素对产生的收益之和,例如一个长度为3的整数序列1,3,2的收益和为w1,3+w3,2。 请问,通过利用删除操作,能够得到的序列的最大收益和是多少? 思路:设状态为dp[i...
原创
发布博客 2021.07.29 ·
159 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

3583. 整数分组 (双指针+dp)

链接 题意: 给定n个整数a1,a2,…,an。 现在,请你从中挑选一些数,并将选出的数进行分组。 要求: 选出的数最多划分为k组(至少1组)。 同一组内,任意两数之差的绝对值不超过5。 所选出的数尽可能多。 请问,最多可以选出多少个数进行分组? 代码: #include<bits/stdc++.h> using namespace std; int w[5010]; int f[5010][5010]; int main(){ int n,m; ...
原创
发布博客 2021.07.27 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多