自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round 1013 (Div. 3)-F

思路:dp[i][j][1]表示第i-1层点到(i,j)的路线方案(只存从下面的点转移过来的贡献),dp[i][j][2]表示从本层点和上一层点(即i-1层)到(i,j)的路线方案,为什么要单独维护一个从下面的点转移过来的方案呢?

2025-03-28 16:49:15 328

原创 Codeforces Round 1009 (Div. 3)-G

转移:枚举的区间长度<3明显不用考虑,长度==3则只能构成一个三角形,答案就是三个点权值的乘积,len>3,考虑枚举的俩个端点,是否要构成一个三角形,如果不构成,则答案可以从dp[i][k]+dp[k+1][j]转移过来(k是区间i-j中的某个点),构成的话,则是可以从dp[i+1][k-1]+dp[k+1][j]+a[i]*a[k]*a[j]转移过来,(因为不能有共享边),然后注意一下边界情况即可。思路:考虑区间dp[i][j],处理完i-j区间的划分最大值。题类似,只不过这次划分的三角形不能有共享边。

2025-03-16 12:09:14 171

原创 AtCoder Beginner Contest 395 E

思路:最短路+dp,定义dis[i][0/1]表示走到i为止,用了翻转操作(0/1)次的最少代价(为啥总是取值0/1呢,因为翻转了偶数次就相当于翻回去了),如果当前状态是走到当前点翻转了奇数次,那么我当前点就只能走相邻的编号为1的边(当然这个编号是我自己定义的,0表示原边,1表示反边,也就是建了一个无向图,然后用编号区分),转移的话就是对+1操作取min(可以看下面代码),特殊的是对自己这个点来说,我能在原地用翻转操作,这样就是对+x取min,然后状态要取反。

2025-03-04 22:54:19 201

原创 ACM-BufferedWriter---格式化输出浮点数

在 Java 中,本身不提供格式化功能,但可以结合或进行格式化浮点数输出。

2025-03-03 19:35:28 224

原创 十四届蓝桥杯JAVA-b组-合并石子

内心ps:蓝桥云课的代码区挺难用的,哎,这题挺板的思路很明显,写了20min就过了。

2025-03-02 22:03:22 331

原创 钉子和小球

每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且除了最左端和最右端的格子外每个格子都正对着最下面一排钉子的间隙。让一个直径略小于d的小球中心正对着最上面的钉子在板上自由滚落,小球每碰到一个钉子都可能落向左边或右边(概率各1/2),且球的中心还会正对着下一颗将要碰上的钉子。思路:升级版的数字三角形,从上往下转移,至于钉子的状态,用01数组表示,如果下面没有钉子就直接加上该概率,否则分母要乘个系数2,分子和分母分别累计即可。现在的问题是计算拔掉某些钉子后,小球落在编号为m的格子中的概率pm。

2025-02-23 17:26:36 162

原创 [SCOI2009]粉刷匠

一开始我是觉得对每行的连续段做一次01背包,但是忽略了能错误粉刷的情况,于是很自然的想知道每行粉刷若干次的最优值,引出另一个问题,用ycl[i][j]表示当前行的前i个,刷j次的最优粉刷情况,转移就是考虑最后一次刷了多远即可,最后一次的贡献是该次粉刷包含的01元素个数取最大值。windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。每个格子最多只能被粉刷一次。一个格子如果未被粉刷或者被粉刷错颜色,就算错误粉刷。接下来有N行,每行一个长度为M的字符串,'0'表示红色,'1'表示蓝色。

2025-02-19 17:55:47 235

原创 [NOIP2001]统计单词个数

该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份( 1 < k ≤ 40 ),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。先处理出i-j区间的最多单词数(一开始我想用区间dp求,但是没考虑左端的合法字符串下标超过了区间右端j,导致转移不合法,然后只过了75%,敲响警钟!),倒着转移,这样能保证每个开头只用了一次,然后再定义a[i][j],仅考虑前i个字符划分成j份的最大单词数(缝合的板子题)单词在给出的一个不超过6个单词的字典中。

2025-02-15 20:13:54 394

原创 [NOIP2014]飞扬的小鸟

设我现在正在更新第k层,然后我有一个mx[i][j],表示第k-1层的合法高度(即不在管道内的高度)%x[k-1]的值为i,第j个元素的高度是啥,然后as[i][j]维护一个前缀最小值(这个值不是高度,是跟当前层无关但是需要用来转移的那部分,就是要算前面的高度,跳到我枚举的这个位置加上点击数的相对最小值,列个式子把跟当前枚举的位置无关的部分提出来就是了),这样我用个二分(在mx[i][j]里面二分)就能找到相应的,小于我当前枚举的位置的高度下标s,然后用as[i][s]更新。小鸟高度为m时,无法再上升。

2025-02-11 21:18:49 281

原创 小A的回文串

思路:跟处理环的问题类似,把字符串复制一遍到后面(至于为什么能想到这里,因为题目里面有提示,前缀连续放到后面,一般的思路是暴力枚举每个字符串然后跑一次马拉车求最大回文子串),然后跑区间dp,dp[i][j]==true表示i-j是回文串,否则不是,统计答案就只用看j-i+1小于等于原始字符串长度的区间。转移:if(s[i]==s[j]) dp[i][j]|=dp[i+1][j-1]。

2025-01-26 23:08:59 208

原创 E. MEXimize the Score--组合数+dp

思路:先考虑单个序列的最大值怎么求,然后考虑算贡献。

2025-01-26 19:31:28 208

原创 D. QED‘s Favorite Permutation---Codeforces Round 979 (Div. 2) JAVA TreeSet + 线段树

题意:给一个长度为n的排列p和字符串s(字符串仅包含'L'或者'R'),s[i]='L'代表排列中下标为i的元素可以和下标为i-1的元素交换,'R'则表示i可以和i+1交换,给q个询问,每次询问给个下标x,如果s[x]==‘L’则把s[x]变成'R'否则变成'L',问此时,能不能通过字符串代表的若干次交换操作,使得排列是升序的。内心os:写一晚上写似我了,大结构和分讨题。

2025-01-25 22:35:19 416

原创 动态规划-石子合并

思路:很明显的区间dp,dp[i][j]/dm[i][j]表示合并区间i-j的最大值/最小值。但是有个问题是这些石子是按环形摆放的,所以需要有个办法枚举到所有的合并情况,那就是把数组复制一遍到后面,然后跑区间dp,这样就可以不重不漏的转移所有环上可能的合并情况。最后对每一种合法的情况取max/min即可(就是考虑,从环上哪个数字开始读,一直读到循环为止)。将n堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。

2025-01-25 00:02:04 304

原创 [NOIP2007]矩阵取数游戏

题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;2.每次取走的各个元素只能是该元素所在行的行首或行尾;3.每次取数都有一个得分值,为每行取数的得分之和,,其中i表示第i次取数(从1开始编号);4.游戏结束总得分为m次取数得分之和。帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。示例1。

2025-01-23 23:27:43 459

原创 区间dp-wyh的问题

思路:dp[i][j]0/1]区间i-j里面的灯都关完,最后停留在i/j的最小花费。敲响警钟:数组非必要不要定义在循环里面!(真的很耗时间,头都t麻了)

2025-01-22 21:30:53 224

原创 合并回文子串

思路:区间dp,dp[i][j][k][s]表示仅考虑a字符串的i-j区间,b字符串的k-s区间的构成回文串的合法性。(注意:不能首首转移,不然这样就不能保证字符串顺序,java开四维的Int数组真的比boolean数组慢很多,用Int数组会爆时间)

2025-01-20 22:37:23 138

原创 动态规划-队伍配置

队伍配置里,可供玩家选择的作战人物被称作“从者”,玩家可以对每个“从者”可以装备至多1件的“概念礼装”,玩家具有一个cost上限值。转移:先预处理出选0个礼装的dp值,然后再枚举选了几个礼装(这分开来转移我是真没想到),实现的细节看注释。现在给出玩家仓库的每个从者和每件概念礼装的ATK值和cost值,问在满足定义的条件下,队伍可以凑出的。思路:dp[i][j][k]花费i,恰好选j个从者,恰好k个礼装的最大atk值。5、 选择的从者和概念礼装的cost值之和不能超过玩家的cost上限值。

2025-01-18 23:41:13 262

原创 动态规划-失衡天平

思路:dp[i][j]表示考虑前i个物品,且左边天平武器重量比右边多j,能获得最大武器总重量。转移:枚举第i个武器是放在左边还是放在右边,或者不放在天平上。

2025-01-17 20:43:29 148

原创 牛客入门动态规划-购物

小贪心:下面枚举第二维的时候直接枚举到min(i*m,n)即可,因为我如果这一天已经买到了n个糖果,后面的时间我就可以不用买糖果浪费钱了,所以只需要枚举到n那么多(本人一开始直接用i*m爆了,n^4扛不住。简单题意:n天中每天m个糖,可以选择吃和不吃,但是要求每天起码要吃上一个糖果,每天买的糖果数量为0-m,问到第n天吃糖果的最小花费。思路:先预处理每天买若干个(即0-m)糖的最优解,然后,再对某天为止,买了多少个糖,进行转移。(记得用滚动优化不然容易爆空间)

2025-01-16 22:10:01 162

原创 [NOIP2008]传球游戏

思路:dp[i][j]表示为走j步到第i个点的方案数,转移显然只能考虑左右俩边的点(小细节,下标从0开始更好找点)。

2025-01-15 23:10:50 178

原创 JAVA BigInteger

【代码】JAVA BigInteger。

2025-01-09 20:49:53 100

原创 JAVA BigDecimal 运用

【代码】JAVA BigDecimal 运用。

2025-01-09 20:44:53 179

原创 JAVA TreeSet 遍历指定元素

solve:用subSet方法得到一个子视图并进行遍历。示例代码:(自定义数据可以自己在类里面定义一个比较器)

2025-01-08 23:44:50 167

原创 JAVA实现C++ next_permutation底层代码

贪心:如果该序列本来就是降序的,即字典序最大,那就是无解了,如果不是降序的,那么必然存在一个下标 i ,i 后面存在一个下标 j ,使得 j 下标元素大于 i 下标元素,如果我们将其交换,就能得到一个字典序比较大的,但是我们要返回的是当前序列的下一个,即操作的次数要尽可能多的好,我们可以从后往前找到一个符合要求的i,然后找到后面第一个符合要求的j,然后交换,最后,对 i+1 及其后面的元素进行一个升序处理,这样就能保证字典序比之前的序列要大,而且使得后面能操作的次数尽可能的多(即不重不漏)。

2024-12-07 12:45:39 128

原创 AtCoder Beginner Contest 360 F

线段树+扫描线+java

2024-11-29 23:21:38 202 1

原创 Codeforces Round 966 (Div. 3)H(线段树上二分)

线段树上二分+思维

2024-08-18 17:19:04 284 1

原创 L1-064 估值一亿的核心代码

PTA大模拟

2024-04-18 20:16:27 308 1

原创 P2617 Dynamic Rankings

2.查询的时候,把我们需要的(或者说容纳了询问区间所有值的线段树)--即构成这颗,查询区间权值总和线段树,的根存起来,求第k小的时候再来计算这颗权值总和线段树的左子树的和,然后判断是否进入这颗权值总和线段树的左子树或者右子树。ps:这里还有个离散化,离线处理所有操作,把涉及到的权值全部放进数组里,然后用二分返回离散化后的值。1.用树套树实现log修改。

2024-01-17 13:21:13 580

原创 动态求逆序对--树状数组套线段树

思路很容易想,麻烦的就是要实现一下动态开点线段树的修改操作,由于传统的主席树是依赖于前一个版本,所以如果想修改的话时间复杂度肯定会爆炸,于是我们想到了树状数组这个东西,把我们要修改的线段树的个数降低到了log级别,而每次修改也是log,所以时间复杂度上是过的去的,怕卡常的话可以加个快读快写,然后注意开一下Long long。所谓树状数组套线段树,就是把朴素版的树状数组里的一个个元素换成一颗颗独立的线段树,大体的操作没有变,就是在修改值的时候用到了动态开点线段树的修改。

2024-01-12 12:45:02 605 1

原创 可持久化线段树--高级打字机

【代码】可持久化线段树--高级打字机。

2023-11-04 10:03:15 68 1

原创 可持久化线段树--第k小数

【代码】可持久化线段树--第k小数。

2023-11-02 15:50:32 86 1

原创 P3313 [SDOI2014] 旅行

优化:动态开点,不需要的子节点我们不开分支而只开需要的分支,数据拉满的话,也就只用开N*logN的空间,因为如果有N颗线段树,每颗线段树的点不会超过一个。暴力思路,对于每一个集合我们都开一颗线段树,然后处理询问的时候直接在相应的线段树里找要询问的区间进行处理即可,但是这样空间会爆。

2023-10-30 16:58:08 71 1

原创 P3976 [TJOI2015] 旅游

int l, r;int maxx;int mmin;int lazy;int lmax;int rmax;int val[N];int n;int tot;tot++;xds temp;r_1 = l_1;

2023-10-25 22:39:27 73 1

原创 P4092 [HEOI2016/TJOI2016] 树

思路:离线做法,并查集(弱弱我一开始想到了用并查集,但是不知道怎么在线处理,后来看了题解之后恍然大悟捏)

2023-10-22 14:59:56 82 1

原创 P4408 [NOI2003] 逃学的小孩

思路:找出树上的直径端点,然后枚举树上的其他点,答案取最大值。(弱弱我一开始找直径中点,然后dfs求除直径外距离中点的最长链统计答案,不知道为什么错了捏)

2023-10-20 12:41:00 94 1

原创 洛谷--[SDOI2013] 直径

思路:类似于找俩端有毛的扫把的主干,然后把俩边同样长度的树枝找出来即可,注意要处理直径中点有分支的情况,直径中点有一个分支且没有其他的分支,答案为直径的一半,否则答案是0。

2023-10-18 12:58:38 66 1

原创 New Year Tree

【代码】New Year Tree。

2023-10-16 17:13:16 73 1

原创 重链剖分模板

重链剖分模板

2023-10-11 09:38:59 219 1

空空如也

空空如也

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

TA关注的人

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