自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 收藏
  • 关注

原创 Python语法基础

2、ord()函数是chr()函数(对于8位的ASCII字符串)的配对函数,它以一个字符串(Unicode字符)作为参数,()用一个范围在range(256)内的(就是0~255)整数作参数,2.如果需要更大的需求可以用decimal。

2024-01-14 10:13:07 413

原创 STL笔记

2、带空格的输入 getline(cin,str,delm) delm为输入截至条件,不加的话默认到回车结束。四、str.insert() str.substr()二、string str 的最后一位的访问和删除。1、不带空格的输入 直接cin>>str;三、string find()一、string 输入字符串。

2022-11-29 21:17:23 174

原创 约数之和,约束个数

给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。

2022-10-01 19:00:06 513

原创 AtCoder Beginner Contest 354

模拟。

2024-05-21 21:39:37 157

原创 AtCoder Beginner Contest 353

题意:检查是否有比第一个数大的数。

2024-05-13 20:14:20 284

原创 火柴排队(映射排序)

我的想法是:可以快速找到a中第小的数,b中第1小的数,每次可以同时操作,a中第小的数和b中第1小的数,并把它们关系表示出来。比如:下边的例子,可以直接找到a,b中第1,2,3,4小的值,并把它们映射c[2]=2,c[1]=0,c[0]=3,c[3]=1)表示a中第1小的数,在a数组中的第2个位置,b中第1小的数,在b数组中的第2个位置,表示a中第2小的数,在a数组中的第1个位置,b中第2小的数,在b数组中的第0个位置,实现上述想法,需要离散化,即用a的相对位置(a序列不变)去给b排序。

2024-04-10 20:45:51 243

原创 Educational Codeforces Round 161

存在一个 a,b 与c 不同的字符即可。

2024-02-01 11:26:42 375

原创 AtCoder Beginner Contest 337

每两个数都连着一条边,存入字典,依次输出,用前一个数来确定后一个数是什么。统计每一行每一列的前缀和,依次枚举长度为k的数组,且该数组里边没有x。分别给ABC赋值,有小的出现在大的后边就不符合题意。A B C必须都连着放,且必须按照ABC的顺序。建一个横纵坐标都从1开始的二维数组。

2024-01-25 20:03:26 427

原创 Codeforces Round 920 (Div. 3)

如果可以交换,那么两两交换每次可以改变两个位置,一定比操作一次,只改变一个位置好。找出所有cnt_1=1需要换成0,cnt_0=0需要换成1的个数。对于两个排序好的序列,两个序列中最大的差值一定是取双方序列的两端。排序之后,贪心的每次选a最小和b最大,或者a最大或者b最小。即a最小和b最大,或者a最大或者b。不能交换时,再进行添加和删除。

2024-01-18 13:17:23 370

原创 AtCoder Beginner Contest 336

题意:先打印L,再打印n个o,再打印ng。

2024-01-15 11:14:39 397

原创 字符串乘方(求字符串中子串有几个)

题意:最小字串的最大个数。

2024-01-02 14:36:10 356

原创 平方矩阵()

【代码】平方矩阵。

2023-12-23 16:36:28 749

原创 python文件操作

绝对路径:相对路径: 三、写文件

2023-11-09 15:13:23 88

原创 火柴排队.

所以我们可以存一下a,b序列的下标和数值,进行一下按值排序,就可以得到a,b的相对位置,此时可以增加一个数组c,c的下标存a数组的下标,c数组的值存b数组的下标,因为c数组下标是有序的,那么我们只要想到怎么使c数组的数值排序,使得数值也变成有序的就可以得到答案。那么,可以求 a相对于b,把a排成和b大小关系一一对应的序列,即a序列的第一小和b序列的第一小在同一位置上,这样的交换次数是最少的。分析:使得(ai-bi)^2的和最小,即a^2-2ab+b^2的和最小,那么使得2ab最大,就可以使得整体最小。

2023-10-28 11:06:23 281

原创 轻拍牛头(约数)

分析:暴力写需要n^2的时间复杂度,此时想一下预处理每个数的倍数,约数和倍数是有关系的,把每个数的倍数都加上1.题意:求ai在n个数中,ai可以整除的数有多少个,不包括ai自己。

2023-08-15 10:42:12 157

原创 欧拉函数和最大公约数

由于发现两个数都除以p之后,得到的数的最大公约数是1,那么我们可以想到欧拉函数,此时就可以先处理欧拉函数和欧拉函数的前缀和,然后枚举1~n的所有质数,每次求1~n/p(下取整)中与n/p(下取整)互质的个数,由于(1,2),(2,1)属于两个那么还需要乘以2,(1,1)(1,1)属于1个,最后还得减去1.反证法:如果得到的两个数的最大公约数不是1,那么把此时的最大公约数乘以上边的最大公约数,得到的一定比上述的最大公约数大,那么上述的最大公约数就不是最大那两个数的最大公约数,所以结论错误。

2023-08-15 10:00:38 327

原创 circuit

介绍一下Floyd的一条性质:当枚举到某一个中转点k时,D[i][j]表示从节点i到节点j的最短路径,其中该路径经过的中间节点(也就是路径上除了起点i和终点j之外的节点)的编号都严格小于或等于k。思路:当枚举到k时, 枚举一条边 (k, i),将此时的 dis[i][k] 拼接上,由 w(k, i) + dis[i][k] 更新最小环即可。那么这样我们就可以边求Floyd,边求最小环的数量,保证不重不漏的计算到每一个环。数据范围较小,为稠密图,所以考虑Floyd。题意:给m条边,求最小环的权值和数量。

2023-07-31 15:12:13 76

原创 欧拉函数

当i是质数时,1~i-1都与i互质。

2023-07-24 16:03:29 138

原创 博弈论--sg函数

如何求sg函数值--------对于每个可能的移动,将后续状态的SG函数值进行收集,并计算它们的mex(最小排斥值)。如果是多个棋子,就每个棋子的所有sg函数值相互异或得到的值如果是0,就先手必败,否则先手必胜。求sg值时候,是用mex求的,那么如果一个点为0,那么先手走下一步时候,那个点一定是非0,那么后手就会再把局面走向0,所以先手总是从0的地方去移动棋子,所以先手必败。即先手的sg值为0,则先手必败,否则先手必胜。如果是一个棋子的话,就是该棋子所在的点的sg值,是否为0,如果为0就必败,否则必胜。

2023-07-19 11:12:31 220

原创 最短路计数

分析:模板题,但要保证求的顺序是拓扑序,如果遇到的点的距离大于当前被更新点的距离就覆盖这个点之前的数据(比如如果先通过3-->2-->4,后来发现了另一条路3-->4),因为之前的数据不是最短路,如果准备走到的点已经有的距离是当前点的距离加1(假如原本已经有了1->3->4->6,d[6]=3,现在又发现了一条路1->3->5-6, 因为d[6]=3,现在是从5号点准备走到6号点,且d[5]+1=d[6],那么就直接更新cnt[6]=cnt[5]+cnt[6]),那么就说明这条路经也是最短路。

2023-07-14 11:25:08 67

原创 线段树模板

由于pushdown有延时性,所以每次在query或者modify时应该先pushdown操作一下。pushdown操作的定义为,给该区间的子区间,每个区间加上一些东西。区间修改,区间查询(pushdown操作)线段数的查询和修改都是logn的。

2023-07-14 10:10:19 61

原创 Row Major(思维题)

分析:如果一个数x不是n的因子,即n不能整除x,那么构造一个字串,由‘a’到'a'+x-1,然后这样的子串要n/x个,再加上n%x个字符,这些字符,从‘a'开始往后依次增加,那么长度为n的字符串构成的网格,一定不会有相邻的格子字符相同。题意:给你一个n,构造一个长度为n的字符串,字符串可以变为RxC的网格,每个网格相邻的字符都不一样。

2023-07-13 11:03:15 176

原创 迷宫探险(bfs+堆优化)

分析:用堆优化的bfs写,每次把通过出队的点去更新其他点,出队的点被标记,表示从这个点已经走过去了,以后不能再走,这样为什么是最优的,因为每次被更新的点加进去之后,出对之后一定是最小的,所以要标记出队的点,而不是每次入队的点,都要标记。题意:从1,1走到n,m,途中有.\*\#三种符号,#表示不能走过去.表示可以走过去,但需要消耗1体力,*表示弹射,从这个点走过去不消耗体力,且可以四个方向弹射x的距离。

2023-07-13 09:32:05 177

原创 道路与航线(SPFA+双端队列优化)

分析:因为有负边权存在,所以这道题应该用spfa,但是会卡掉传统的queue,可以加一个deque优化,对于每次加边,判断是加到队头还是队尾,如果当前被更新过的边小于还未出队的队头的边就加到队头,否则加到队尾。题意:给了若干条道路,道路是双向边,航线是单向边,给了一些政策,如果从a到b有一条航线,那么一定不能通过一些道路和一些航线,从b到a。还需要注意的是,那些政策的原因原本一些可以走的路,不能再走了。

2023-07-11 17:03:01 221

原创 通信线路(二分+双端队列bfs)

根据反证法:假如左边存在一个y,满足一条路径上的边大于y的条数小于等于k,那么x就不是最小值了,最小值应该是y,不符合上述题意,所以假设错误。设这条路径上的边大于x的边的个数是否小于等于k,求边的个数可以设大于x的边权为1,否则为0,最后用d[n]

2023-07-11 15:21:30 73

原创 电路维修(双端队列bfs)

因为dijstra+堆优化和这道题bfs+双端队列是一样的,双端队列每次边权为0的边加到头部,边权为1的边加到尾部,因为dijstra加对优化是正确的,那么bfs+双端队列也是正确的,题意:从左上角走到右下角,且只能走斜线,斜线可以旋转,旋转斜线那么走过这条线,那么距离就加1,求最小的距离。分析:有一个性质,因为起点是偶数点(0,0),那么它只能走到偶数点,奇数点一定走不到。这道题为什么可以用双端队列可以做呢。

2023-07-11 10:54:28 248

原创 E2. Rudolf and Snowflakes (hard version)

根据上述条件,我们可以发现如果可以构成一个雪花,那么该雪花中点的个数是1+k+k^2+k^3+...+k^p,根据数据范围,如果我们写两重循环,第一重是k,k的范围是2~1e6,第二重是p,因为2^62大于1e18,所以p的范围是p

2023-07-10 09:59:05 240

原创 设置云服务器和配置docker

但是root的权限太大,一般做项目不会在root路径下直接操作,会创建一个子用户,一台服务器可以创建多个子用户,就像一个大房间里,建几个小房间。为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(可以参考。(养成好习惯,所有工作都在tmux里进行,防止意外关闭终端后,工作进度丢失)之所以建小房间,是因为当以后想要换服务器商家(比如:阿里云换为腾讯云),迁移时候比较方便。执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。

2023-07-05 17:46:59 480

原创 Strongly Composite(分解质因数+思维)

这里有一个点:两个相同的枚举完,三个不同的枚举完,可能还剩有数(1或者2),他们可以任意加到任意一组满足条件的,从而保证数组所有数相乘等于b数组所有数相乘;题意:给定一个数组a,构造一个数组b,数组b尽可能长,且数组b里全是强合数,并且a数组所有数相乘等于b数组所有数相乘;所以就是,先枚举所有质因数的个数,优先选两个的相同的,再选三个不同的,最后答案就是两者相加。思路:分解所有质因数,两个相同的质因数,构成一个质因数,和一个合数,满足题意。因为题意是尽可能长,那么再用四个,,,n个,就不会太长。

2023-04-29 17:13:23 179 1

原创 Constructive Problem

题意:给出n个数字,先求出x=mex(),mex(定义为在n个数字中,没有出现的最小的数字),然后可以选定一个区间,将该区间全部变为k,只能操作一次,如果操作完之后mex==x+1,那么就输出yes,否则输出no;还有一种情况 0 1 4 4,此时也一定是成立的0 1 2 4,综上所述,当找不到x+1时,只需要判断是否这n个数是否连续且没有重复。时一定是成立的(0 1 2 2 ,mex=3,n=4,其实这句话的意思就是判断是否前n个数是否是从0开始,且没有重复的)

2023-04-20 11:54:06 233

原创 树状数组与线段树的应用

分析:根据输入方式,可以把二维变为一维,可以把样例模拟一下,(把4,5纵向压倒第一层,也就是最下边这一层)每次输入星星时,根据x数组,把该星星之前的星星都加上就行,这样就可以把问题转化为求前缀和,又因为该题需要一边输入星星,一边求·该星星的值,所以不能用朴素的求前缀和问题,朴素前缀和问题时间复杂度时O(n)的,所以需要树状数组来求。图上有的点表示只有这个点的值,比如奇数都只表示自己的点,因为奇数的二进制最后一位都是1,偶数表示若干个点的和,比如8表示5~8的和。

2023-04-18 18:56:31 531

原创 方格取数()

思路:这道题和摘花生一样,从 左上到右下,每次只能往左走或者往右走,不同的是,从左上到右下要走两次,且每次走过,方格数就变为0,所以要特判是否走到了同一个点;这时我们可以优化掉一个纬度,用k表示 i1+j1 和 i2+j2 ,这时只需要枚举k,i1,i2三个常数。根据上述内容,我们可以发现只有当 i1+j1 == i2+j2 时两者才可能走到同一个格子。本题的思路是有两个人一起走,

2023-04-11 16:26:41 38

原创 快速幂求逆元

【代码】快速幂求逆元。

2023-03-25 17:12:36 40

原创 最优贸易(反向建图+spfa)

求从1~i最小的花费,和从i~n最大卖出去的钱,最后枚举每个i,取max(dmax[i]-dmin[i])本题还有一个重点就是,从i~n,可以把图反向建边,然后求n~i的值,这样就只就行一次spfa。

2023-03-24 17:35:11 104

原创 作物杂交(spfa)

分析:最难的是建图,假如a+b可以生成c,那么可以看为无向图,add(a,b,c),add(b,a,c)。题意:给定若干种种子,这些种子可以杂交其他种类的种子,求某个未杂交出来的种子最少需要多少天。用d数组表示用其他种子生成其他类种子的最小天数,那么已经给定的种子就是0。所以可以用spfa来做,用已知点去更新未知点。

2023-03-24 13:13:16 84

原创 spfa模板及应用

如果当前点被n个边更新,那么说明从起点到当前点通过了n+1条边,根据抽屉原理,n个点最多有n-1条边,那么就说明,这条通路有环,又因为求的是最短路,它可以被这样更新,就说明有负环。在spfa原来模板的基础上,加上cnt数组,用来记录每个点更新时用到的点的数量。spfa算法主要是处理有负边的图,没有负边的图用dij来处理。spfa的思想是:用更新过的点来改变距离。

2023-03-23 19:45:35 39

原创 有向图的拓扑排序

【代码】有向图的拓扑排序。

2023-03-23 17:49:28 37

原创 最短距离(dij+虚拟源点)

分析:这道题原本的思路是,把每一个起点都进行一边dij,这样肯定会超时的,那么引入虚拟源点,就是在每一个起点前,再连一个源点,源点到起点的距离为0;

2023-03-23 10:57:42 90

原创 dijkstra(堆优化版)

朴素dij是用邻接矩阵写的,数据范围就小,且时间复杂度高O(n^2)用堆优化后,时间复杂度为O(mlogn),m为边,n为点。

2023-03-22 16:32:48 106

原创 带分数(next_permutation)

题目说1~9必须使用,所以可以用全排列函数,进行枚举每个排列内容。

2023-03-21 19:58:01 40

空空如也

空空如也

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

TA关注的人

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