自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ModestCoder_的博客

一个modest的coder

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

原创 友链友链友链

排名不分先后丫orz潜力股zyporz数据结构大师zycorz神仙fxkorz神仙学长wrtorz杭二仙女hsyorz衢二神仙xzyorz义乌神仙bztorz义乌神仙zjq

2019-08-21 07:30:52 747

原创 模板整理

因为自己还得再写一遍,大部分模板得先鸽鸽鸽注:算法名称上搞了对应模板的传送门数论1、逆元2、线性筛3、miller_rabin素数判定4、exgcd#include <bits/stdc++.h>using namespace std;int x, y;void exgcd(int a, int b){ if (!b){ x = 1, y = 0; retu...

2019-07-21 16:50:23 269

原创 如何简便改文件名

在出OI题的时候,有时候想要方便地把输入输出文件的文件名都改掉,类似于将a1.in,a2.in,…,a50.in都改成b1.in,b2.in,…将这个代码放在要改名字的输入输出文件的同目录下,base_name写上原文件名,new_name写上新文件名,num_files写上文件个数。然后在文件所在文件夹进入终端,运行类似于。我用gpt写了一个python代码。这个需要你拥有python环境。

2024-08-02 23:23:26 422

原创 dpkg: 处理归档 /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb (--unpack)时出错: 正试图覆盖

ros开发者。起因是我重装了ubuntu系统后,重新配置的ros环境可能比较混乱,一个项目catkin_make无法成功,打算装colcon,但是出现如下错误。应该是装colcon的时候某个包跟catkin重了。

2024-06-05 16:18:05 281

原创 【Unity2D像素风格小游戏】期末考考完,和搭档一个月从零开始的Unity速成作品!

自学unity的过程是很艰难的,前期现在B站肝了一个14小时的新手教学,后来跟了一个魂斗罗的项目,在正式制作过程中,我们碰到了数不清的问题。unity是一个很大型的软件,也是我目前所接触到的最大的软件(跟unity差不多的,SolidWorks也是一个很大且难度很高的软件,我因为之前上课学了一点点,但真的很难学),我们到现在为止肯定仍然只是掌握了皮毛,但也是非同凡响了。我写了很多代码,但是没有写注释的习惯,虽然我自认写的代码结构非常清晰,变量简便易懂,逻辑并不晦涩,但是仍然不利于合作。

2023-07-13 22:10:11 741 1

原创 【题解】LuoGu9352:[JOI 2023 Final] Cat Exercise

首先,发现这道题目研究的是每个猫爬架的高度,而非每个猫爬架的序号。所以可以这样建树:如果有一条边两端的点为。的节点为根建树,猫位于根上。为若以u为根建树,走向v这棵子树最终会停留在。可以写出一种另类的树形dp。然后研究一下猫会怎么走。由题意,假如先以高度为。从小到大枚举猫爬架,

2023-07-12 14:49:43 352

原创 【题解】CF1746F:Kazaee

星战那道题目,需要动态增删有向边,动态维护是否每个点的出度为1,但是那道题目有一个操作是对一个点,删除所有终点为该点的有向边,使得维护每个点出度的复杂度大大提高。那道题目转而维护每个点的入度,因为删除所有终点为该点的有向边可以用O(1)更改该点的入度。只不过星战是每个数出现次数为1,本题是区间内不同的数出现次数为k的倍数。如果这个区间所有的不同数出现次数都为k倍数,那么不管怎么随机,区间和一定为k的倍数。哈希了之后,如果区间和不是k的倍数,那么这个区间一定有某个数出现次数不是k的倍数。

2023-06-29 23:24:12 223

原创 【题解】LuoGu8642:[蓝桥杯 2016 国 AC] 路径之谜

做一个从起点(1,1)到终点(n,n)的dfs,做的时候时刻更新两排靶子的数字,看起来时间复杂度很高,其实因为靶子的缘故,有很多很多路径是不可能实现的。所以就一个小小的剪枝就可以了。

2023-01-13 19:36:14 278

原创 【题解】LuoGu8816:[CSP-J 2022] 上升点列

本来我们是顺序选取物品,那么如果现在物品之间需要满足一种拓扑关系,或者是说想要选取物品b,必须先选取物品a这样的关系呢。这是一个树形dp,想要选课a,必须要选课b,将选课关系建成一棵树,做树形dp就是这道题目的做法。这道题物品之间只需要满足坐标不降,关联两个物品就需要欧几里得距离的重量,价值就是点数。这道题可以把课看成物品,课本身算作重量,一门课的重量就是“1”,物品的价值在这边就是课的得分,背包问题中是由。每个点就是一个物品,用的附加点的数量就是重量,能不能理解?都有背包问题的影子,都可以算作我提出的。

2023-01-12 11:19:21 740

原创 【题解】LuoGu8815:[CSP-J 2022] 逻辑表达式

这道题目看起来是大模拟,用大模拟也可以做,但是有更好的方法去做。在考前我想到了很多可能考的东西,唯独没有想到考模拟。我经历的,模拟最早可以到2017年提高组的第二题,《时间复杂度》,也是话题量特别大,很多人花了很多时间在这道题目上面。普及组的第三题向来是有东西的。2017年普及组第三题就比较难,我当时也是只拿了50分。2018年普及组第三题更是直接考了很难的dp,比2022年的第四题可要难上不少啊。,我们可以给输入分一个层次,想到先算括号,那么对于同级的形如。这是我一开始的想法,就是顺着题目的思路往下做。

2023-01-12 10:49:45 589 1

原创 【题解】LuoGu8814:[CSP-J 2022] 解密

decode解密在上个世纪充分运用在谍报里面。我高中的时候看过一本麦家写的《解密》,推荐给大家。普及组第二题还是数学题,虽然我不敢说这是考向,但是数学思维还是非常重要的。下面是我手写的题解。

2023-01-11 11:24:05 336

原创 【题解】LuoGu8813: [CSP-J 2022] 乘方

17年18年提高组的第一题都是赚足了眼球,满是话题。18年第一题是一道贪心,甚至是13年提高组的原题,但就是很多人花了很多时间才解决。就算解决了,也用了很多奇怪的算法和做法,这在考场上面就十分不值得。现在提高组变成了四道题目,那么提高组的第一题的定位肯定没有六道题的时候的第一题简单了。在CSP2022之前牛客的模拟赛第一题都是雷打不动的字符串简单模拟,非常的敷衍和苍白。虽然普及组的第一题肯定是来送分的,但是我们不能轻视这一题。你可能会说我在钻牛角尖,但是这道题目用了快速幂和不用快速幂是两个不同的思路。

2023-01-11 10:54:19 598

原创 王安石改革新论

王安石改革新论陈思王不契于时代的改变终会被淘汰,不论是落后于时代,抑或是超前于时代。任何高贵的原则终会沦为世俗的玩具。王安石乃千古哲人,不管是在文学上为“唐宋八大家”之一,还是政治上开展了历史上引人瞩目的“熙宁变法”,今人都能从其身上体察到他绝伦的智慧与超凡的才能,纵然变法最后走向虚无,成果湮灭无存,今人从其身上,从王安石身处的那个时代上头,还能把握、总结出社会的运行规则与时间无形的大道。王安石在宋神宗熙宁元年以宋神宗的大力支持走向台前推行新法,其政策的中心思想是“理财”。早在宋仁宗的嘉祐五年,王

2021-07-25 19:09:37 386 2

原创 【学习笔记】一类比较问题

本文介绍3类比较问题1、逆序对问题:一列数7 3 2 1 6 8 4 5,每次操作可以任选两个相邻的数交换,问最少几次操作使得数列升序?答案等于数列逆序对数定义逆序对:一列数{a}中对于i<j,ai>aji<j,a_i>a_ji<j,ai​>aj​,称(ai,aj)(a_i,a_j)(ai​,aj​)为一个逆序对简要证明:假如我现在是一个人工智能,我的目标使得操作数最小。每次操作肯定是做收益最高的。每次操作我都可以令数列的逆序对数-1因为一列数不是有

2021-02-23 22:12:03 297 3

原创 【学习笔记】逐位确定

有一类的题目,可以高位贪心。我们要求的答案需要高位最优

2020-12-04 18:32:17 185

原创 【题解】自己口胡的一道题目

因为从现在到联赛之间我都没法写代码了,我只能用手机看我的博客,看到一道题目,想到强化。这道题目

2020-12-04 16:08:15 233

原创 NOIp2020游记

Day 0离退役还有一天,昨天我们班的篮球赛还输了,我说我们班少了两个主力把冠军让给隔壁班,他们胜之不武,而且我们两个班本来就是一家人,这没什么的,王者要有王者的风度。我就这么跟同学们说,但是我却还是最愤怒的一个人。今天欧阳老师继续讲论语,他与欧阳修同宗。他是一个很受中国儒家思想的一个人。他在课前讲到了他十年前的一个学生,能在期中考考五门满分,物理国集rk2,但是因为清北学校之间的问题他没能进入国家队,这真的是我们学校历史以来最优秀的几个人之一了。欧阳老师说这位学长在清华读了八年,把博士读出了,结果老师

2020-12-04 13:11:47 1217

原创 【学习笔记】课题研究:并查集的维护

这个是我以前的一个总结并查集是用来维护连通性的,维护连通性的同时,我们还可以维护连通块里面其他的信息最普遍的用法是kruskal求最小生成树。这个是按照边长度排序,然后维护连通性然后是这道题求∑所有路径中边长max−min\sum 所有路径中边长max-min∑所有路径中边长max−min就先按照边长排序,然后边长满足递增或递减性,另外维护连通块元素的个数用来求方案数再来一道题题目转化成了序列,我就化归成上一道题目的链的形式水箱我们需要在连通块内维护高度,dp值这道题目把维护连通块信

2020-12-04 12:08:35 271

原创 【题解】LOJ3254:「JOI 2020 Final」集邮比赛 3

原题传送门发现n<=200n<=200n<=200,那么我们就可以想一个O(n3)O(n^3)O(n3)的dp发现每次肯定是向左/右推进可以令dp[i][j][k][0/1]dp[i][j][k][0/1]dp[i][j][k][0/1]表示向起点左边推进了iii个,右边推进了jjj个,总共收集到了kkk个邮票,现在在起点左/右边直接转移Code:#include <bits/stdc++.h>#define maxn 210#define LL long lo

2020-12-04 11:28:34 357

原创 【题解】LuoGu6869:[COCI2019-2020#5] Putovanje

原题传送门树上差分就是走n−1n-1n−1条路每次从iii走到i+1i+1i+1,所以用树上差分进行路径覆盖对于每条边可以直接买多程票,也可以买几次单程票Code:#include <bits/stdc++.h>#define maxn 200010#define LL long longusing namespace std;LL delta[maxn], odd[maxn], even[maxn], ans;struct Edge{ int to, next;}ed

2020-12-03 21:24:13 323

原创 【学习笔记】差分

差分思想,一言以概之,就是delta[i]=a[i]−a[i−1]delta[i]=a[i]-a[i-1]delta[i]=a[i]−a[i−1]a[i]=∑j=1idelta[j]a[i]=\sum_{j=1}^{i}delta[j]a[i]=∑j=1i​delta[j]然后可以做很多题目

2020-12-03 20:55:37 206 1

原创 【题解】LuoGu1083:借教室

原题传送门不能满足的方案满足二分性二分枚举什么时候无法满足然后O(n)O(n)O(n)用差分算出每天需要的教师数量进行判断Code:#include <bits/stdc++.h>#define maxn 1000010#define LL long longusing namespace std;int n, m;LL a[maxn], b[maxn], d[maxn], s[maxn], t[maxn];inline int read(){ int s = 0, w

2020-12-03 20:17:06 166

原创 【题解】AT2386:[AGC016B] Colorful Hats

@luogu手摸几个样例之后我们可以发现,每个人看到的帽子数之差必然<=1然后我们根据a1...ana_1...a_na1​...an​排序然后a1=ana_1=a_na1​=an​,意思是,每个人看到的帽子个数相同,那么有两种情况,一种是所有人都不相同,那么aia_iai​必须满足ai=n−1a_i=n-1ai​=n−1;或者是帽子情况被分成了几段,每段的个数>1,就是2ai<=n2a_i<=n2ai​<=n。以上两种情况都是yes,否则noa1+1=ana_1+

2020-12-03 19:26:36 164

原创 【题解】LuoGu4654:[CEOI2017]Mousetrap

原题传送门以陷阱为根建树首先是一个很重要的结论,抑或是一个性质假设现在是这样一个状态(命名为STA1),老鼠在一棵子树的根,这棵子树没有任何东西,老鼠所在的点与父亲的边是脏的(为什么会是脏的?因为老鼠刚从上面走下来)然后我们堵住一条边,老鼠会逃往一个它认为更优的地方我们再将一军好,现在,我们把老鼠堵在了某一个地方,老鼠动不了了,我们可以慢慢操作还可以推出更一般的情况,我们先堵住一个旁支,再擦干净一个地方,老鼠由于本能会走过去,然后那地方又脏了现在我们只用了4次操作将老鼠堵在了“起点”

2020-12-03 18:32:23 243

原创 【题解】LuoGu6359: [CEOI2018]Cloud computing

原题传送门用背包做,如果可以直接枚举物品以及核心数量复杂度是4000∗50∗2000=4e84000*50*2000=4e84000∗50∗2000=4e8差不多可以那么我们基本上就知道怎么做了想着怎么把fff的限制去掉可以直接按照fff从大到小排序,那么我们就能保证现在手里面拥有的肯定都可以用来做任务然后就做一个背包Code:#include <bits/stdc++.h>#define maxn 2010#define maxm 200010#define LL lon

2020-12-02 11:23:22 166

原创 【题解】LuoGu6801:[CEOI2020]花式围栏

原题传送门又是非常常见的数矩形用单调栈维护高度,如果每次矩形长高的话就不用管如果变矮,那么就把多出来的那一块割掉算贡献贡献为割掉的矩形里面的一个正方形为左上顶点,在其他地方再取一个合理的正方形作为右下顶点的方案数图比较抽象,可以根据代码理解Code:#include <bits/stdc++.h>#define maxn 100010#define LL long longusing namespace std;const LL qy = 1000000007;stru

2020-12-02 11:03:39 247

原创 【题解】LOJ3252:「JOI 2020 Final」只不过是长的领带

原题传送门有一个很显然的贪心思想,都从小到大排序,然后直接两两配对就行了证明:a<bc<d一种方案,max(a-c,b-d,0)另一种,max(a-d,b-c,0)=max(b-c,0)发现一定是前一种方案更优然后排好序后,每次就是扔掉一个aia_iai​那么配对情况就是a1 a2 a3…ai-1,ai+1,…,an+1b1 b2 b3…bi-1,bi,…,bn对于每个bib_ibi​,求出ai−bi,ai+1−bia_i-b_i,a_{i+1}-b_iai​−b

2020-12-01 16:30:37 331

原创 【题解】LOJ2350:「JOI 2018 Final」月票购买

原题传送门可以很套路地得到一个结论,答案与月票的路径有一段连续的重复路径以s,t,u,vs,t,u,vs,t,u,v为起点跑四次最短路现在我们枚举两个月票最短路上的点x,yx,yx,yans=min(ans,disu[x]+disv[y],disu[y]+disv[x])ans=min(ans,dis_u[x]+dis_v[y],dis_u[y]+dis_v[x])ans=min(ans,disu​[x]+disv​[y],disu​[y]+disv​[x])对于一个xxx,disu[x],dis

2020-12-01 14:10:54 477

原创 【题解】LuoGu7073:表达式

原题传送门我觉得,这道题目主要考察的还是把后缀表达式转成一棵树然后遍历一遍树求出每个节点的值然后暴力改动每个节点的值,往上跑,如果某一个时刻新算的值跟原来一样,那么就不用进行下去,否则继续结果果然只T了一个点,然后我开了O2就过了Code:#include <bits/stdc++.h>#define maxn 1000010using namespace std;struct Edge{ int to, next;}edge[maxn << 1];int n

2020-11-30 21:30:30 167

原创 【题解】LuoGu7074:方格取数

原题传送门普及的题目就直接秒杀了因为题目已经帮我们划好了dp的阶段,就是一列一列的走然后在一列里面可以分为向上走和向下走,那么我需要知道上一个阶段每个地方的最优值,用dp数组记录下来,很套路得转移就行了Code:#include <bits/stdc++.h>#define maxn 1010#define LL long longusing namespace std;const LL inf = 1e12;LL a[maxn][maxn], f[maxn], g[maxn

2020-11-30 19:52:55 241

原创 【题解】LuoGu4657:[CEOI2017]Chase

原题传送门扔磁铁得到的收益有两种情况我在起点,扔一个磁铁,周围的权值是收益,因为周围的那些铁块我肯定不会遇到,而追逐者肯定会遇到我从某一个点走过来,假设上一个点是红点,现在我在绿点,然后我扔了一个磁铁,我获得的收益是周围点的权值和减去红点的权值,因为我是经过了红点的,遇到过红点的铁块,而且追逐者也肯定会遇到所以一条路径上,扔磁铁获得的收益有两种情况而且我们可以发现,假如我从某一个点出发,一定要扔一个磁铁。或者说,我扔第一个磁铁的地方,一定是出发点思考树形dp,遍历到某个点uuu的时候,计算

2020-11-30 09:02:10 190

原创 【题解】LuoGu6521:[CEOI2010 day2] pin

原题传送门暴力枚举哪些位上必须相同,剩下的必须不相同然后用容斥Code:#include <bits/stdc++.h>#define maxn 50010#define LL long longusing namespace std;int n, m, a[maxn][5], vis[maxn];struct data{ LL x; int one, two, three, four;}val[maxn];LL ans, ex[5], base;int num[40

2020-11-29 19:32:07 159

原创 【题解】LuoGu4799:[CEOI2015 Day2]世界冰球锦标赛

原题传送门题目的暗示非常明显,因为n<=40n<=40n<=40,所以我们可以用折半搜索对于状态不能直接开桶,所以排个序线扫Code:#include <bits/stdc++.h>#define maxn 2000010#define LL long longusing namespace std;LL a[maxn], n, m, s, M, ans;int m1, m2;LL q1[maxn], q2[maxn];inline LL read(){

2020-11-29 18:58:42 174

原创 【题解】LuoGu4656:[CEOI2017]Palindromic Partitions

原题传送门贪心的从两边开始扫,一旦可以分割就分割肯定是对的,但是怎么实现呢不会所以我写了个35分的暴力剩下的部分用哈希骗分,用了5个哈希就神奇的过了Code:#pragma GCC optimize("-Ofast")#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h>#define maxn 1000010#define LL long longusing namespace s

2020-11-29 18:57:00 183

原创 【题解】LuoGu7108:移花接木

原题传送门可以一个一个部分分推下来,放到联赛T1也是可以的,用时不会超过40minh=0:h=0:h=0:把根的儿子都砍掉,答案为aaaa=b:a=b:a=b:把第hhh层的所有点的儿子都砍掉,答案为ah+1a^{h+1}ah+1a=1:a=1:a=1:引入接木的概念,每次拿下来的一棵子树就是原树(因为是无限延展的),对于这个部分其实就是非最后一层的点都要接上b−1b-1b−1个最后一层的点都要砍掉儿子然后其实可以先砍掉,再接木上去,并成一步操作答案就是最后一层的叶子个数,bh

2020-11-29 12:28:08 899

原创 【题解】模拟赛11.28 T2 数数

枚举腰xxx再拿出一条xxx作为一个底,只需要知道所有长度yyy满足(x,y)=1(x,y)=1(x,y)=1的边枚举上底aaa,对于一个yyy,如果a<y<a+2x,(a,x,y)=1a<y<a+2x,(a,x,y)=1a<y<a+2x,(a,x,y)=1,也可以贡献先把边排序,离散预处理sum[i][j]sum[i][j]sum[i][j]表示前iii条边,与jjj互质的有几个可以O(2000∗10000∗gcd)O(2000*10000*gcd)O..

2020-11-28 20:58:26 1180 1

原创 【题解】模拟赛11.26 T1

很容易就能得到每跳一步就是从黑到白或白到黑所以如果起点和终点全白或全黑,肯定No如果起点和终点一黑一白,肯定Yes然后我就错掉了,因为我没有注意到有可能起点到不了终点这种情况只会在棋盘较小的情况下出现所以我用宽搜判断了一下Code:#include <bits/stdc++.h>#define maxn 100010using namespace std;int dx[8] = {-2, -2, -1, 1, 2, 2, 1, -1}, dy[8] = {-1, 1, 2..

2020-11-28 20:52:30 157

原创 【题解】模拟赛11.22T1 玩具

以样例为例,我们这样排列数字枚举所有人最多不能超过iii个玩具,就把超过的部分买回来然后我自己至少得拥有i+1i+1i+1个玩具,所以如果不够的话,从下面取可以用线段树维护,所以需要一开始离散化,每次数据结构套离散化真的挺麻烦的Code:#include <bits/stdc++.h>#define maxn 100010#define ls rt << 1#define rs rt << 1 | 1#define LL long longusi..

2020-11-25 21:13:41 162

原创 【题解】模拟赛11.22 T4 星际战争

首先想想暴力做法先以1为起点跑一遍bfsbfsbfs枚举每个除1以外的点作为基地,跑一遍bfsbfsbfs统计答案复杂度为O(n2)O(n^2)O(n2),可以拿到20分的好成绩然后第二部分的bfsbfsbfs可以优化, 当前如果跑到一个已经不可能保护的点,就是路径长大于和1的距离,就不必再继续跑下去了,结果就过了80分然后是一棵树的部分,还是先以1为起点,建树建好考虑对于一个非1的点xxx,可以保护哪些点令dis[x][y]dis[x][y]dis[x][y]表示两点最短距离F(x,..

2020-11-25 11:54:22 210

原创 2020-11-23

对于 202020% 的数据,n≤1000n \leq 1000n≤1000。显然对于这一档部分分我们可以枚举每一个点 xxx,比较一下 111 和 xxx 哪个先到 iii,然后取个 min⁡\minmin 就好了。复杂度 O(n2)O(n^2)O(n2)。其实还可以剪个枝,数据水,可以拿到 80 分。对于树的数据。考虑到一棵树 每一条树上路径的边 都是固定的,所以可以直接找 1→x1 \to x1→x 的中点,如果长度为奇数,找 1→x1 \to x1→x 距离 xxx 为 ⌊distance(1

2020-11-24 19:50:18 256

可莉 逃跑的太阳 动态桌面.apk

可莉 逃跑的太阳 动态桌面.apk

2022-09-25

空空如也

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

TA关注的人

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