自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码笔记本

个人博客www.yyycode.cn

  • 博客(50)
  • 收藏
  • 关注

原创 2020ccpc威海部分题解

2020ccpc威海 A Golden Spirit(思维)2020ccpc威海B Labyrinth(思维+bfs扣关键点最短路)2020ccpc威海C Rencontre(树上各块中任意两点距离之和)2020ccpc威海D题 ABC Conjecture(规律+pollard_rho大数质因数分解模板)2020ccpc威海 H Message Bomb(思维+模拟)2020ccpc 威海 Clock Master(多个数的lcm+分组背包)...

2020-10-29 23:33:20 969

原创 2020ccpc威海C Rencontre(树上各块中任意两点距离之和)

参考博客:https://blog.csdn.net/qq_45458915/article/details/109294160分割内容参考自学长博客题目大意:给出一棵带权树,规定,解释一下就是当确定三个点 u1 , u2 , u3 后,需要找到一个点 v 到三个点的距离之和最小,现在给出 u1 , u2 , u3 的可行取值,问 f 函数的期望是多少题目分析:考虑转换模型,对于给定的 u1 , u2 和 u3 来说,不难猜出点 v 是唯一存在的(不会证明),相应的这个最短的距离之和也是唯一确.

2020-10-29 23:31:07 1109

原创 2020ccpc威海B Labyrinth(思维+bfs扣关键点最短路)

Due to the challenging problems, some of the contestants decide to escape from this contest. However, to prevent this from happening, the EVIL problem setters made a labyrinth at the stadium's exit. The labyrinth is made of ann×mgrid, on which lie the en..

2020-10-29 15:55:59 548

转载 2020ccpc威海 A Golden Spirit(思维)

如此清晰的思路参考了:https://blog.csdn.net/Cosmic_Tree/article/details/109297424题意一座桥,桥两侧各有 n 个人,每个人都想去桥对面休息 x 分钟后再返回(必须休息够 x 分钟才能被背回去),问你满足所有人的愿望,最少需要多少分钟(你背一个老人过一次桥需要 t 分钟)思路最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置

2020-10-29 10:34:37 356

原创 2020ccpc威海 H Message Bomb(思维+模拟)

题目大意:有n个人,m个组,接下来会进行q次操作:1.第x个人 加入 第y个组2.第x个人 退出 第y个组3.第x个人 对 第y个组内 所有的人(x除外)发送一条信息最后输出每个人都收到了多少条信息考场上这道题队友直接set差分秒了...然而我并没懂。事后补题给了另外一种二分的想法。Guang巨给了虚点的想法(真好,又有新的东西要补了quq思路:开出map和vector维护每个人进每个组的时间和每个组发消息的时间。然后统计的时候放在这个人退出组的时候统计(如果结束了还

2020-10-29 10:30:34 439

原创 2020ccpc 威海 Clock Master(多个数的lcm+分组背包)

题目大意:给出一个数字 n ,要求分解成:a[ 0 ] + a[ 1 ] + ... + a[ m ] = n,( m 没有约束 ),使得 lcm( a[ 0 ] , a[ 1 ] , ... a[ m ] ) 最大,输出这个最大值的对数思路:将n分解成m个数之后,问题就变成了如何求m个数的lcm。有一种做法是用gcd(a,b)*lcm(a,b)==a*b。但是将m个数进行质因数分解更为普遍。即那么m个数,每一个数都可以这样分解。那么m个数的lcm就是每个质因子的最大cnti对应的乘积.

2020-10-27 21:28:14 341

原创 2020ccpc威海D题 ABC Conjecture(规律+pollard_rho大数质因数分解模板)

思路1:打表可得如果有两个以及以上的相同质因数,即可yes;/*来自:李双智学长模板*/#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<cstdio>#include<map>#include<stdlib.h>#include<time.h>#define times 20us.

2020-10-27 20:19:04 781

原创 Shurikens(思维+倒序栈模拟)

https://codeforces.com/contest/1413/problem/D思路:正着去找的时候要先找到下面的-号再来确定上面的+的加号的内容而且连续的“-”的时候上面的要最小,有点类似栈。尝试倒着思考。从后往前,当前stack为空的时候或者当前栈顶元素>要入栈的元素的时候,该操作是合法的,那么入栈。否则不合法。当遇到+的时候,意味着有一个元素要踢掉了,把踢掉的这个元素记录下来。然后取出栈顶元素。最后统一输出。这样做的合法性:倒序的时候就思考我们已经放好了所有足够

2020-10-26 00:09:04 493 1

原创 hdu 4417(区间内小于等于k的数字有多少)[主席树+二分)

Super Mariohdu 4417题目描述:给定一个整数序列,有n个数。有m个询问,询问区间[L,R]内小于k的整数有多少个。输入:第一行是整数T,表示测试用例个数。对每个测试,第一行是整数n,m。下一行是n个整数a1, a2, …, an,后面有m行,每行有3个整数L、R、k。输出:对每个测试用例,输出m行,每行是一个询问的答案。数据范围:1 ≤ n, m ≤ 105, 0 ≤ ai ≤10^5, 1 ≤ L ≤ R ≤ n,1 ≤ ai, k ≤10^9思路:主席树+二分。对于给定的H,.

2020-10-24 00:23:36 392

原创 P3834 【模板】可持久化线段树 2(主席树)[模板]

主席树学习链接:https://blog.csdn.net/weixin_43914593/article/details/108861279#comments_13569118静态区间第k小板子:#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set&

2020-10-24 00:16:41 187

原创 Codeforces Round #677 (Div. 3)[A-G]题解

A. Boring Apartments(思维)B. Yet Another Bookshelf(思维)C. Dominant Piranha(思维)D. Districts Connection(思维+构造)E. Two Round Dances(思维+圆排列组合数学)F. Zero Remainder Sum(思维+四维dp)G. Reducing Delivery Cost(思维+最短路)...

2020-10-21 17:43:30 295

原创 E. Two Round Dances(思维+圆排列组合数学)

https://codeforces.com/contest/1433/problem/E其实这题直接在oeis输入最后一个数字就可以结束了思路:

2020-10-21 17:41:17 914

原创 G. Reducing Delivery Cost(思维+最短路)

https://codeforces.com/contest/1433/problem/G思路:开始看到了路线免费,以为是出了分层最短路板子,看了看发现只让一条路免费。开始直接考虑暴力,枚举每条边,然后每个点进行dijkstra,最后取最小。复杂度O(n^2klogm);考虑一下对每个点其实可以先预处理,提前处理好每个点的对应的最短路。O(n^2logm)考虑免费的边的贡献。对每一个ki来说,边(a,b)有三种情况。1.开始不在其最短路路径上,免费后也不在其最短路路径上。2.开始

2020-10-21 17:02:14 728

原创 A. Boring Apartments(思维)

https://codeforces.com/contest/1433/problem/A思路:每个数字对应的总贡献是固定的是10,然后判一下当前数字的长度对应贡献。

2020-10-21 17:01:33 367

原创 B. Yet Another Bookshelf(思维)

https://codeforces.com/contest/1433/problem/B思路:统计每个1与其最近1之间有多少个0,有就累加。

2020-10-21 17:01:11 435

原创 C. Dominant Piranha(思维)

https://codeforces.com/contest/1433/problem/C思路:直接找每个1到最近的1之间有多少个0,累计起来就是最小的。

2020-10-21 17:00:44 2065 5

原创 D. Districts Connection(思维+构造)

https://codeforces.com/contest/1433/problem/D思路:构造的形状类似树,所以直接把1个帮派通过树连接成一个和它不同编号的多叉树。然后找到第二层的任意一个结点,再把根节点对应的帮派连成一个多叉树。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map&g

2020-10-21 16:15:03 583 1

原创 F. Zero Remainder Sum(思维+四维dp)

https://codeforces.com/contest/1433/problem/F思路:感觉这道题锻炼dp挺好的。定义:dp[i][j][l][r] : 在第i行第j位,选了l个数字,且此时模数为r的最大和然后一般情况是第j个数字从j-1的对应转移过来,类似背包。但是这题这么做的话对于模数r的转移对应的要求的是(x%k+a[i][j]%k)%k=r的这个x。方便一点的话转化成顺推。即考虑第j+1个数字选还是不选。对于第i行,第j + 1个数字1、选择第j + 1个数字 dp[i

2020-10-21 16:12:37 1474 6

原创 单链表的就地反转

想法:动态的分配以及这些手写链表之类的确实写得很少,毕竟用到都是STL,当然这个课还是要认真学的。尤其链表还特别套娃..就地反转的思路:平时写题目空间都是随手开..一下子给你限制空间不让你多开很难受。反转的图示借用一下别人的图。第一步:先找到头结点L;处理出头节点的下一个结点的到达:ToNode p=L->Next;新开一个结构体指针r,设该指针为nullptr.然后断开头节点和p的链接,即L->next=nullptr;【这部分这么处理是因为最后我要把头结点的N

2020-10-21 13:47:04 624

原创 Codeforces Round #676 (Div. 2)(A-D)

A. XORwice(思维+位运算)B. Putting Bricks in the Wall(思维+构造)C. Palindromifier(思维+构造)D. Hexagons(思维+变形矩阵)

2020-10-19 23:37:22 215

原创 D. Hexagons(思维+变形矩阵)

https://codeforces.com/contest/1421/problem/D思路:比如要从(0,0)走到(1,2)可以有c1,c1,c3的方式,也可以有c1,c2的方式,也可以有c2,c2,c6的方式。但不至于出现c2,c2,c2,c6,c5这样的方式,因为多走了很多无谓的路。考虑c1,c1,c3和c1,c2的代价大小,可以发现是c1+c3和c2的关系(其实是矢量的相加考虑c1,c2和,c2,c2,c6的代价大小,可以发现是c2+c6和c1的关系 (其实是矢量的相加也.

2020-10-19 23:35:49 739

原创 C. Palindromifier(思维+构造)

https://codeforces.com/contest/1421/problem/C思路:看到30次的时候以为有特殊的方法构造,但是看到每次的长度都会是变的,没能觉得什么算法能O(n)解决下来吧(毕竟我才疏学浅最开始的时候构造wa1了。因为没看到不能用取到第一个数。如果能用就可以比较方便的2次就能回转了。但是这时候可以发现其实只要几次就能转变的端倪了。通过abcdef这个串去构造模拟,如果这个串可以,那么其他串必然能推广出来。在wa1的基础上尝试修改,最后发现三次就可以成功变成回文串。

2020-10-19 23:19:39 662 1

原创 B. Putting Bricks in the Wall(思维+构造)

https://codeforces.com/contest/1421/problem/B思路:考虑到最多只能转换2个。那么最有效的就是考虑起点的周围两个和终点的周围两个。可能情况有:1 1 0 01 1 0 11 1 1 0......但是所有情况都能通过最多2个转变让其无法到达。统计一下两边0的个数。#include<iostream>#include<vector>#include<queue>#include&l..

2020-10-19 23:14:02 426

原创 A. XORwice(思维+位运算)

https://codeforces.com/contest/1421/problem/A思路:二进制下考虑A和B。对A和B同一位如果是 1 0 ,那么x对应位不管取啥那一位最后加起来结果还是1如果是 0 1,那么x对应位不管取啥那一位最后加起来结果还是1如果是 0 0,那么x只要取0对应这位加来就是0如果是 1 1,那么x只要取1对应这位加起来就是0那么也就是说1 0-->1;0 1--->1;0 0--->0;1 1--->0;那么最终的结果就是a^b

2020-10-19 23:11:28 328

原创 Educational Codeforces Round 96 (Rated for Div. 2)[A-E]题解

.

2020-10-12 21:52:15 273

原创 C. Numbers on Whiteboard(思维+规律)

https://codeforces.com/contest/1430/problem/C思路:本来以为最后变的值只会是原来的n/2+1或者n/2之类的。推了几个例子发现每次都有办法构造到2.怎么构造呢?从后两个开始取,取完之后把这个新数再和前一个去取。模拟的过程用优先队列可以很方便的完成。简单考虑一下正确性:由于最小的是1,想让最后的数最小,那么后面应该融合成一个相对来说小的数和1进行结合。比如后面是2 3 4 5 6 7 8 9,很多时候是 2 9 配对,3 8配对,最后取到平均,但

2020-10-11 22:56:16 691

原创 B. Barrel(思维+贪心)

https://codeforces.com/contest/1430/problem/B思路:从大到小sort后每次拿次大的桶倒完到最大的桶,这样最大桶的水是最多的,次大桶变成了空桶,这样减出来差是最大的。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include&lt

2020-10-11 22:42:18 161 1

原创 A. Number of Apartments(思维+枚举)

https://codeforces.com/contest/1430/problem/A开始想的时候算错复杂度,以为是n^2的,加T组会TLE。实际上3的倍数在1000以为最多只有1000/3个,5的倍数在1000以为最多只有1000/5个,7的倍数在1000以内最多只有1000/7个。那么剩下的n判断是不是能在3x+5y+7z==n就行。稍微一个优化是3x+5y==n-7z,判7z存不存在。#include<iostream>#include<vector>

2020-10-11 22:39:58 377

原创 E. String Reversal(思维+逆序对)详解

https://codeforces.com/contest/1430/problem/E题意:交换相邻的字母使得字符串翻转的最小次数。最近碰到了几道逆序对的题,有个比较明显的特征是交换相邻的数。思路:首先并不需要真的移动过去,题目要的只是求次数。然后考虑一个问题:出现了相同的字母,在交换的时候,目标串的这个字母应该取原串中哪个字母呢?例子:原串:abac目标串:caba.考虑c从pos:4换到pos:1,后面的aba的相对顺序不变,这时候更优的是拿当前最近的这个a,而不

2020-10-11 22:31:40 1251 4

原创 P1833 樱花(混合背包+二进制优化板子)

https://www.luogu.com.cn/problem/P1833思路:首先比较容易想到是取和不取的背包问题,其次发现里面有完全背包和多重背包。所以朴素的做法就是当前物品是多重背包时候,用多重背包的解法,当前背包是完全背包时候,用完全背包的解法。这样会T两个点。当然你开O2可以过,但是没必要。#include<iostream>#include<vector>#include<queue>#include<cstring>#in

2020-10-08 16:52:07 166

原创 P1020 导弹拦截(O(nlogn)求上升子序列+Dilworth定理)

https://www.luogu.com.cn/problem/P1020O(nlogn)的总体思路:单调栈+贪心+二分替换值字太多辣懒得打:(引用Bianca_模拟的过程:“a 数组存所有的导弹 x数组存当前拦截的导弹的高度len 记录当前最多能拦截多少导弹(实际是最长不升子序列即x数组的长度) 同时是最后的答案下面是过程模拟环节:样例:389 207 155 300 299 170 158 65外层从 1 到 n 枚举 i 扫一遍序列i = 1 时: x 数组为

2020-10-08 10:44:02 131

原创 P2986 [USACO10MAR]Great Cow Gathering G(带点权树重心/树形dp+换根dp)详解

https://www.luogu.com.cn/problem/P2986先说带点权的树重心做法:https://blog.csdn.net/zstuyyyyccccbbbb/article/details/108558682树的重心的定义以及一些性质。如果这个树有点权和边权怎么办?关于边权:其实和所有边为单位1的重心一模一样。(网上搜了搜没怎么有比较详细的说明的,姑且当性质结论1)关于点权:把”最大的子树节点数最少“改成“最大点权块最小”。感性证明:把这个问题转化成刚在.

2020-10-07 17:38:21 455

原创 ACM Contest and Blackout(非严格次小生成树板子+LCA)

https://vjudge.net/problem/UVA-10600/origin板子题。求非严格次小生成树树有大致有两种。一种是暴力,枚举不在最小生成树的边,然后跑n-1次最小生成树。(O(n^2logn)大致)或者dfs找最小生成树环上的最长边替换掉。借xayata_大佬的图。优化的办法就是在最小生成树中,看成一颗树,然后化成有根树,用倍增的思路融合ST的思路,维护u,v的lca(u,v)的最长边。一个倍增数组记录父亲,一个倍增数组记录(u,lca(u,v))之间的最长边

2020-10-05 20:43:45 174

原创 What Goes Up Must Come Down(思维+逆序对构造LIS山峰)

https://ac.nowcoder.com/acm/contest/7831/F考虑题意:对于每一个数来说,它最终要不左边的数全比它小,要不右边的数全比他小。交换相邻的两个数,其他数字的相对位置不变。那么转换一下思维,最终换的次数就是某个数被其他数交换的次数,然后累加每个数。某个数要和其他数交换的次数,就是逆序对的个数。比如3 3 3 0 13.这个1要换的次数要不是右边的1个3,要不是左边的3个3.中间过来的次数是交给0 的。每次移动相邻两个位置,所以你只需要判断它左边比它..

2020-10-05 20:36:41 530

原创 C. Bargain(数学规律+贡献法枚举优化)详解

https://codeforces.com/contest/1422/problem/C大晚上算错数据范围的我,以为只有50位,直接暴力T5.然后发现是10000位。贡献法优化,从低位往高位去枚举,也就是从后往前枚举。比如说枚举到第i位。考虑第i位前进行连续区间的取。设可以取的整个区间范围为k.可以发现,取1长的有k种,取2长的有k-2,取3长的有k-3...可以得出有k*(k+1)/2;代入长度(i-1)可以得如果在第i位前面去取的话,这个数位的贡献是i*(i-1)*s[i]*pow

2020-10-05 17:02:58 2762 5

原创 B. Nice Matrix(思维+回文矩阵构造+中位数)

https://codeforces.com/contest/1422/problem/B思路:从头开始一个一个去放,发现对应要相等的位置只有对应的四个角落。边界是在边长都为奇数的中间十字。所以n^2循环把对应四个点都求出来,取他们的中位数就好了。因为中位数到这些数的距离和时最小的。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cma

2020-10-05 13:35:05 670 3

原创 点双连通分量(模板)

void tarjan2(LL x){ dfn[x]=low[x]=++times; s.push(x); LL child=0; if(fa[x]==-1&&g[x].size()==0){ dcc[++cnt].push_back(x); return; } for(LL i=0;i<g[x].size();i++){ LL to=g[x][i]; if(!dfn[to]) { fa[to]=x;child++; tarjan2(to.

2020-10-04 18:31:53 191

原创 Knights of the Round Table (补图+点连通分量缩点板子+二分图判定奇环)

http://poj.org/problem?id=2942思路:首先考虑建边,但是会发现直接建边很难处理。那么考虑通过能相邻的图去建立边.建完边后结合题意,题目说要求一些骑士永远不可能去开会。开会的要求有一个>=3的奇环。所以题目问的是哪些骑士是不在任何一个奇环里的。所以考虑把补图上所有的缩点后的点联通分量里面判一下奇环。奇环的判定也就是染色法判定是不是二分图。这个题大概调了5小时。做了之后发现点连通分量的板子是不一样的,因为割点是属于多个连通分量里面的,不能直接按照求强

2020-10-04 18:30:13 181

原创 The Bottom of a Graph(强连通分量缩点)

http://poj.org/problem?id=2553sink中的点v如果能到w点,那么w点也必须能到v点,所以是所有出度为0的连通分量的点。缩点后把所有的出度为0的点放到数组里sort后输出就好啦#include<iostream>#include<vector>#include<queue>#include<stack>#include<cstring>#include<cmath>#include&

2020-10-04 18:19:37 182

原创 Road Construction(Redundant Paths原题)

http://poj.org/problem?id=3352https://blog.csdn.net/zstuyyyyccccbbbb/article/details/108904709(原题链接)#include<iostream>#include<vector>#include<queue>#include<stack>#include<cstring>#include<cmath>#include<m

2020-10-03 10:12:54 108

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除