自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷P1512 伊甸园日历游戏

一开始,我发现有“必胜策略”,就知道是博弈论,然后看了两种操作(月份+1和天数+1),于是想到用记忆化搜索找出所有的可能性 ,但不知道怎么判断当前是否为先手必胜/必败态,使用了TJ方法后 ,才知道只要记录每个时间的状态,然后搜索即可。

2025-07-24 22:05:17 209

原创 状压Dp和记忆化搜索

例题: ABC C-Mixture。例题: P1433 吃奶酪。

2025-07-23 23:40:21 182

原创 题解:CF1690G Count the Trains

同理,一节车厢会不会成为车头取决于上一节车头的速度,也就是前面车厢的状态不会改变。当车厢 k 操作时,首先向后遍历车头 x;我们可以发现能用set做,时间复杂度为O(nlogn)然后比较新车厢和这节车厢前的第一个车头y。

2025-07-18 22:39:08 143

原创 题解:CF1866D Digital Wallet

求最大值,可以考虑dp,结果发现每次考虑时,只需考虑一个 n 行 k 列的矩阵,在这之间选数,所以。同时创建x和y两个数组;

2025-07-18 22:36:27 186

原创 题解:CF1617C Paprika and Permutation

先排序,对于已经符合要求的 a[i] 可以直接扔了,然后一个一个的去判断,如果当前的数为 y,那么他只能变成自己本身(比赛时这玩意没看出来,只有 30,太行了)或者 ≤ (y/2) )的数。那不就是贪心吗 ,于是我们只要判断 ≥(x/2)i 即可,如果不行的话,就输出 -1,否则累加我们的小答案。

2025-07-18 22:31:29 193

原创 题解:CF1829H Don‘t Blame Me

2) 这里的方法找是二进制中有多少个 1,不停的与比当前数少 1 的数进行按位与,这样当目前的数变成 0 时,二进制位 1 的个数也就统计出来了。1) 由于题目给出的 k 表示二进制位有 k 个 1,那我们就要在 0-63 中找到所有二进制位中有 k 个 1 的数,并将方案数累加。在本题,我们可以先设dpi,j为选到第 i 个数时,按位与结果为 j 的方案数。

2025-07-17 23:00:38 145

原创 2021市赛复赛 初中组

a[n],定义f(l,r)表示a[l]、a[l+1]、a[l+2]、…、a[r]中的次大值,你需要求出对于所有的1<=i<j<=n,f(i,j)的和。给定n个整数a[i]和一个整数m,对于所有1<=i<=n和1<=j<=n,求出a[i]+a[j],然后将所有求得的n^2个a[i]+a[j]的数值从大到小排序,你需要求出排序后前m个数的和。给定n个物品和一个整数s,第i个物品的体积是a[i],定义f(l,r)表示在第l个物品到第r个物品中选出若干个物品的方案数,使得这些物品的体积之和为s。

2025-07-17 22:47:13 226

原创 c++之 KMP 讲解

S[next[j]]:则说明j+1位置的最长公共前后缀不能在next[j]位置顺延,则需要继续往前找。那么如何继续往前找?KMP算法对朴素匹配算法进行了改进,利用匹配失败时失败之前的已知部分时匹配的这个有效信息,保持主串的 i 指针不回溯,通过。),在每一个字符位置处,以该字符为结尾的子串的最大相等前缀和后缀的长度,我们将这个长度数组。的方式,其思想为依次枚举主串的每一个字符作为匹配模式串的起始字符,然后将两字符串的字符。next[next[j]],再比较next[next[j]]+1是否与j+1相同。

2025-07-17 22:34:04 307

原创 代码部落 20250713 CSP-S复赛 模拟赛

密码 666888(所有CSP-J/S比赛密码)

2025-07-13 22:06:21 216

原创 代码部落 20250713 CSP-J复赛 模拟赛

原本我想用01背包做,但因为有免费玩的条件在,所以应直接用线性dp。思路:首先进行可行性判断: 当c[q]>m时,直接输出-1即可。

2025-07-13 21:32:31 183

原创 代码部落 20250629 CSP-J复赛 模拟赛

优化上述逻辑,能否根据aj+1=ai=x 这个数值直接判断前⾯ 1~j能否删除,从⽽减少内层for循环 考虑维护⼀个 vis数组, vis[x]=1表示数值 x前⾯的数都能被删除,当 a[i]=x如果vis[x]=1 ,即可得出f[i]=1 如果 f[i-1]=1,可得出vis[x]=1;签到题,如果a[i]<=a[i+1] a[i]=a[i+1],反之,直接输出No。注:开 long long!开 long long!开 long long!来删除范围内的所有数,从而使得dp[i]=1。

2025-06-30 20:49:37 402 3

原创 代码部落 20250629 CSP-S复赛 模拟赛

因此,真正对答案有贡献的部分应当是第⼀个 + / - 号之前的连续⼀段的异或和(即第⼀段的连续异或和)。直接 for 循环枚举第⼀段连续异或的运算最⼤到哪个位置,记录S=A1^A2^…对于某个⽣成的公式,只要出现了⾄少⼀个 + 或者 - ,那就⼀定可以通过把 + 变成 - ,把 - 变成 + 来获得另⼀ 个公式。并且将这两个公式的结果相加后,第⼀个 + / - 后⾯的所有内容将会被。那么这时可能有人想到,在前往b的路上,小S会不会先到了一个。的点,然后在到达0-n以内的点?实际上是不会的,只要从。

2025-06-29 22:48:06 449

原创 ABC 404

2.代码(循环做法),有俩种解法:搜索,循环。N=M&每个点读数为2。

2025-05-05 20:20:44 264

原创 U152623 跳棋

我们在看一下样例,可以发现dp[i][j]随着j的增加,是成单调上升趋势的,那么我们就可以用bfs来实现向前和向后移动的操作,接下来就要思考向前和向后的实现方式了。状态转移方程:f[i+j+1][j+1]=min(f[i+j+1][j+1],f[i][j]+a[i+j+1]);状态转移方程:f[i-j][j]=min(f[i-j][j],f[i][j]+a[i-j]);i+j+1—>前进后位置 j+1—> 新步数 a[i+j+1]—> 代价。最后 用ans 计算f[n][i—n]的最小值,即可。

2025-02-15 22:00:42 243

原创 25.2.15 T4 bfs+高精度

第二种: 一个合法的数的后缀必定是合法的,因此就可以bfs了,往合法的数的最高位加0或1, 而只有最高位是1的数才有可能是答案,不难证明任何时候队列中以0开头的数字数量小于等于以1开头的数字数量,并且每次进入合法节点最多只会生成一个不合法数字,对于队列里的每个数,记录3个东西,十进制下的hash值,十进制长度len,二进制后len位,同时维护当前10^len的二进制。于是按位BFS,保留前导零,每次往前添加一个00或者11,把合法的留下,不合法跳过,直到找到第n个不含前导零的合法数为止即可。

2025-02-15 15:54:59 146

原创 2024年8月月赛 丙组 T4调和级数

i为区间左端点的除数。

2024-09-09 22:54:44 37

原创 代码部落 24.8.27 解除咒语

【代码】代码部落 24.8.27 解除咒语。

2024-08-27 21:29:51 285

原创 一本通 1633:【例 3】Sumdiv

接着考虑优化,不难看出对于每一个多项式,都是一个。那这种情况下,我们可以得出。如果直接暴力求的话,还是会超时。,那么这里我们只需要求出。

2024-08-22 20:07:17 413

原创 AtCoder Beginner Contest 365 T4 -- T5

https://atcoder.jp/contests/abc365/tasks/abc365_d 1) 分析:

2024-08-10 22:03:02 143

原创 代码部落 第四届CSP模拟赛复赛-入门组 24.7.28

的题,先用桶统计每个数的个数,然后用cnt,记录 有多少种数,每当有数字退出,并且这个数字退出后就不存在了,那么 cnt--;每当有数字加⼊,并且这个数字之前没有出现过,那么cnt++很明显,这是一个类似。1) 解法1: 二分。,那么剩下就是计算是否有某个区间。(距 AC 一步之遥),那么便可将区间长度固定,当区间长度<最小答案,无解。

2024-07-28 21:27:35 244

原创 c++ next_permutation

全排列。

2024-07-21 09:34:29 235

原创 代码部落 24.7.14.CSP模拟赛复赛-入门组

大换购。

2024-07-14 20:32:54 418

原创 csp备考第二周 T1 史莱姆碰撞

(1)原思路:通过对样例的分析,可知两个坐标之间的差必然是偶数,否则两个史莱姆必然不会相撞,然后直接大模拟4种情况(

2024-06-22 17:04:20 54

原创 一中 #SXC00002. eat

其实十分好办,只需要求出每个点之间的最短路,这道题一眼就看的出来 是。然后枚举n,找到一个距离三个点最近的即可。,结果n的范围可以使用。,但唯一有不同的是有。

2024-06-16 15:03:54 76

原创 CSP2021-J-3-网络连接

判断字符串是否合法已经解决,那么怎么加入并查找一个地址呢?其实十分简单 只需要用一个。然后再判断 a,b,c,d,e 的范围是否合法。举个例子:输入1.2.3.4:5 读取结果为。,读取结果为 a=1,b=2,c=3,d=4,e=5。主要问题为:判断这个地址是否合法。其实,我们已经解决了这个问题。,你会发现跟原来的字符不匹配,因为 a 原来是。的字符串,并返回读取结果。,跟原来字符串相同,则合法。这个方式去保存,得到。这个方式去保存,得到。这样,就完美的解决了。

2024-06-16 13:45:23 326

原创 信友队第六届图灵杯(初级组)T3 上传数据

并校验是否合法并将将最后一次合法的判定所构造的解作为答案。的,可以使用优先队列优化成。

2024-06-15 16:46:41 343

原创 一本通 1248Dungeon Master(思路问题)

来移动,只能在哪个点的下面传上去(这里就发生了不对)模拟,每一层各分各的(其实我们只需要记录当前的点是否。),剩下的就是bfs的移动了,注:这里的上下与在2维时不同。

2024-06-11 22:13:22 182

原创 dfs回溯超时 (一本通 1215 迷宫)

因为我们的目的是找到终点,所以不需要像上面那样穷尽所有的方案,我们只要找到了,那么就停止搜索了。比如我们一条路走不通了,那么我们回去,并且在回去的路上,我们用土把这些走过的地方填上,以后就不走这儿了(这条路找不到终点那我以后还走这儿干嘛?比如我们一条路走不通了,那么我们回去,而且在我们回去之后,我们以后还是可以经过这条路的,因为我们已经在回溯的过程中还原了标记数组,形象来说就是我们抹除了我们走过这里的记忆,所以以后有可能还会来这儿。但是我们要知道这种写法对应的题目要求一般是这样的:“这种对应的题目一般是。

2024-06-10 16:14:21 319

原创 Atcoder 6月17日

【代码】Atcoder 6月17日。

2023-06-18 10:54:20 117 1

原创 2023年5月27日sxyz C1

现在有 n 只怪,第 i 只怪你需要用 ui 个道具杀死他,如果杀死了有 wi 点经验,没杀死有 li 点经验。第一行输入一个正整数 t 代表数据组数(1≤t≤1000)。接下来 t 组数据每组数据输入一个回文字符串 s(1≤|s|≤50)。接下来 n 行每行三个数 li,wi,ui(0≤li,wi≤1e6,0≤ui≤1000)。第一行输入两个正整数 n,x(1≤n,x≤1000)。给你一个括号序列,问你最长合法子串的长度和数量。0 1(没有合法子串,直接输出0,1)

2023-05-27 17:15:56 95 1

原创 2023年5月20日sxyz C1班

每次操作如下: 将当前的数加上或者减去某个值 v,需要满足的条件是 v≥x,且当前的数在 [L,R]的范围内。令 c(L,R)表示 L 到 R 中所有格子不同颜色的数量,你需要输出两个数 x,y 使得 y-x-c(x,y)最大。接下来 t 组数据每组第一行输入一个正整数 n(1≤n≤1e5)所有的 n 之和不 超过 1e5。接下来 t 组数据每组数据第一行输入 L,R,x(-1e9≤L,R,x≤1e9)第二行输入一个长度为 n 的数组 a(1≤a[i]≤100)塔顶下标为 n。(1≤t≤1e4)。

2023-05-21 22:57:32 107

原创 23年5月13日 sxyz C2班模拟赛-动态规划&模拟

更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些。走向马棚,因为他们非常疲劳,小明不想让他的马做过多的移动。个办法:将马按照顺序放在马棚中,后面的马放的马棚的序号不会大于前面的马。输出一个整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值。所谓最大子倒三角形,就是与大三角形相似的倒三角形,即子三角形的每行。此题的三角形面积为三角形包含的空位的个数,样例中的三角形面积。层的倒三角形,有些格子是障碍,有些是空的。于是,他把每件物品规定了一个重要度,分为。元)的前提下,使每件物品的价格与重要度的。

2023-05-20 16:36:20 95 1

原创 栈 及其运用

我们可以发现,当某个数字出栈了,说明比它小的数字要么已经出栈了,要么还在栈里,不能是入栈前状态,并且在栈中的顺序是从大到小的(从栈顶往栈底看),比如出5,那么1,2,3,4要么已经在5之前出了,要么还在栈中(假如1,3,4在栈中,从栈顶往栈底看依次为4,3,1),不能是入栈前的状态。第二类操作为集装箱的出库操作。小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,长度最多不超过1000000个,数字大小不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了)。

2023-05-20 11:23:35 144 1

原创 组合数学-题目

监狱有 n 个房间,每个房间关押一个犯人,有 m 种宗教,每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。给你两个整数A,C,求A对C的逆元(最小正整数解),即A×B≡1(mod C),求B。输入只有一行两个整数,分别代表宗教数 m 和房间数 n。一行两个整数 n​ 和 m​。(m≤n≤1000​)答案对 100,003 取模。一行,包含 n,a,b,c。输出一行一个整数代表答案。输入三个整数m,n,p。样例输入输出 1 解释。一行,包含 n, m。

2023-05-20 11:03:24 136 1

原创 分组背包+二维费用背包-笔记+题目

一个旅行者有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。一个旅行者有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。第2..N+1行:每行三个整数Wi,Ci,Pi,前两个整数分别表示每个物品的重量,价值,第三个整数若为0,则说明此物品可以购买无数件,若为其他数字,则为此物品可购买的最多件数 (0≤Pi≤20)。,jk,则所求的总和为:。

2023-05-20 10:33:27 270 1

原创 多重背包+完全背包-笔记+题目

接下来n行,每行3个数,v、w、s,分别表示第I种奖品的价格、价值(价格与价值是不同的概念)和购买的数量(买0件到s件均可),其中v

2023-05-20 09:52:54 112 1

原创 01背包 -题目

一个旅行者有一个最多能用m公斤的背包,现在有n件物品,它们的重量分别是W1, W2, ..., Wn,它们的价值分别为C1, C2, ..., Cn。若每种物品只有一件,求旅行者能获得的最大总价值。第一行:两个整数,M(背包容量,M

2023-05-19 16:08:08 150

空空如也

空空如也

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

TA关注的人

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