自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [蓝桥杯2020初赛] 回文日期

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年2 月2日。因为如果将这个日期按“yyyymmdd” 的格式写成一个8 位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。 有人表示20200202 是“千年一遇” 的特殊日子。对此小明很不认同,因为不到2 年之后就是下一个回文日期:20211202 即2021 年12 月2 日。 也有人表示20200202 并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约100 年后就能遇到下一

2022-04-07 15:03:19 623

原创 递归小练习2

外星密码 题目描述 有了防护伞,并不能完全避免 2012 的灾难。地球防卫小队决定去求助外星种族的帮 助。经过很长时间的努力,小队终于收到了外星生命的回信。但是外星人发过来的却是一 串密码。只有解开密码,才能知道外星人给的准确回复。解开密码的第一道工序就是解压 缩密码,外星人对于连续的若干个相同的子串“X”会压缩为“[DX]”的形式(D 是一个整 数且 1≤D≤99),比如说字符串“CBCBCBCB”就压缩为“[4CB]”或者“[2[2CB]]”,类 似于后面这种压缩之后再压缩的称为二重压缩。如果是“[2[

2022-01-16 18:54:08 158

原创 递归小练习1

覆盖墙壁 题目描述 你有一个长为N宽为2的墙壁,给你两种砖头:一个长2宽1,另一个是L型覆盖3个单元的砖头。如下图: 0 0 0 00 砖头可以旋转,两种砖头可以无限制提供。你的任务是计算用这两种来覆盖N2的墙壁的覆盖方法。例如一个23的墙可以有5种覆盖方法,如下: 012 002 011 001 011 012 112 022 011 001 注意可以使用两种砖头混合起来覆盖,如2*4的墙可以这样覆盖: 0112 0012 给定N,要求计算2N的墙壁的覆盖方法。由于结果很大,所以只要求输出最后4位。例

2022-01-16 18:46:34 145

原创 leetcode 87.扰乱字符串

简单的dp思路 题意: 给两个字符串s , t,每次操纵可以把t串分割成两个字符串并且翻转,也可以选择不反转,再从其中一个子串中选择一个继续进行操作,问你可以将t串转换成s串吗 思路: 区间dp的思路,不同的是需要再用一维来表示s的开头,dp[i][j][l]表示长度为l的开头分别为i,j 的s串和t串可以转换成相同的串吗 细节: 在每一个操作中需要讨论两种情况,翻转和不翻转 // 枚举区间长度 2~n for (int len = 2; len <= n; len++)

2021-05-31 17:20:36 109

原创 第十一届山东省大学生程序设计竞赛总结

昨天那场比赛,我此生难忘,我的ACM生涯中,在训练了一年半的情况下,第一次打比赛,打铁了,作为一个大二的队伍,能打出这样的成绩确实让我很难过,但是我们还是有实力的,我们还是找到自己的不足,去努力做的更好 因为G题是一道签到题,我们队伍没做出来,非常影响我们的心态,我们没有做好最冷静的处理,得确是有点慌了,lwh的鼻子上出了汗,wbc一直在憨笑,前三个小时一个题都没有做出来,后来三个多小时时,我找到了H题我的bug,一发A掉了,鼓舞了我们的士气,然后在读D题的题意,一直没看懂outline 的意思是什么,所

2021-05-10 15:41:53 440 1

原创 训练报告 省赛前瞻

这五天的训练真很累,这几天的题的难度基本上来说,非水题能出0.6道左右,我现在我也看不出来我们到底是什么水平,因为只看校内的队伍并没有什么好比较的,感觉同级的队伍差的不太多,我们队相对来说容错率不太高,有可能出题的数据结构和动态规划,但是基本上考到了的题难度也很难去A,尽量争取在比赛时能尽量快的去找到自己能出的题并且一遍就要考虑清楚代码,水题没想清楚直接叫也会WA两三次,能跟榜就尽量先跟一下,前一个小时尽量跟榜把水题都做了然后再开始考虑其他题,模拟和博弈也有可能成为关键题,队伍现在策略还可以,能码的让魏百川

2021-05-05 20:12:41 75

原创 Naptime 环dp

for(int i=1;i<=n;i++)F[i][0][0]=0;F[1][1][1]=0; for(int i=2;i<=n;i++) for(int j=1;j<=m;j++) { F[i][j][0]=max(F[i-1][j][0],F[i-1][j][1]); F[i][j][1]=max(F[i-1][j-1][0]+0,F[i-1][j-1][1]+a[i]); } ans=max(F[n][m][1],F[n...

2021-04-26 16:41:56 49

原创 4-25总结报告

这周打了几次比赛,星期六这场是最差劲的,没处理好做题的顺序,还因为读错题被卡了。前面两次比赛还算比较顺利,然后我个人这周也做了额外的大概十道dp题,现在去做的dp题整体思路已经很熟练了,就是每个题结合到的知识点还是很多样化,所以还是需要刷题量,还训练的不够 ...

2021-04-25 20:03:07 49

原创 麦香牛块

#include <iostream> #define maxx 65025 using namespace std; int dp[maxx]; int a[12]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; dp[0]=1; for(int i=1;i<=n;i++) for(int j=a[i];j<=maxx;j++.

2021-04-25 19:55:34 124

原创 不降数

这题简单的推完之后可能会想到这样一个简单的公式 for(int i=2;i<=n;i++){ for(int j=1;j<=9;j++){ for(int k=1;k<=j;k++){ dp[i][j]=(dp[i][j]+dp[i-1][k])%mod; ans=dp[i][j]; } } } 但是其中k那

2021-04-25 09:50:53 119

原创 货币系统

#include <iostream> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int t,n,m; int f[25005],a[105]; int main() { cin>>t; while(t--){ cin>>n; memset(f,-63,sizeof f); .

2021-04-25 09:22:08 56

原创 硬币购物

#include<bits/stdc++.h> using namespace std; int T,n,c[5],d[5],s; long long ans,f[100010]; void pack_pre() { f[0]=1; for(int i=1;i<=4;i++) for(int j=c[i];j<=100001;j++) f[j]+=f[j-c[i]]; } void dfs(int now,int sum,int flag) //no.

2021-04-19 17:24:08 56

原创 飞扬的小鸟

for(int i=1;i<=t;i++) cin>>x>>l[x]>>r[x]; for(int i=1;i<=n;i++){ for(int j=1+x[i];j<=m+x[i];j++) dp[i][j]=min(dp[i-1][j-x[i]]+1,dp[i][j-x[i]]+1); for(int j=1;j<=m-y[i];j++) dp[i][j]=mi...

2021-04-16 11:27:21 76

原创 P3448 [POI2006]MIS-Teddies(线性dp)

题意: 这题给你四种熊,类型是A1 A2 B1 B2,分别n1,n2,n3,n4个,如果三个连续的熊序号带A,B或者序号都带1,2那么这个序列就不可用问你可用的序列有多少种 思路: 用dp的思路先去思考,每次向序列中添加新的熊 能让可用序列增加多少种,假如添加第 i 只熊的时候添加的是A1,先考虑: 假如每种原先的序列的每一个插空都可以添加A1,那么新序列有ans=ans*i(原来有i-1个熊,就有i个空) 这些序列中的所有不可用序列有多少种? 令f[i][j][k][l][x][y]f[...

2021-04-11 17:16:47 104

原创 Cities(区间dp)

题意: 给出一个长度为 n 的数组,一次操作可以选择一段连续且值都相同的区间,然后使其变成其他值,问最少需要多少次操作,才能使得数组的值全相等。数组中每个数最多出现 15 次。 思路: 首先分析,可以直接将n个数压缩成m个不同的数的数组,m个数如果全部不同那么需要m-1 次操作,其实这题的最少多少次操作我们需要把他转化成最多减少多少次操作,能想到这点就好做了,dp[i][j]表示i到j的区间内最多减少多少次操作。状态转移方程就如下: 枚举K 的位置就可以得到答案了 ,ans= m-1-dp[1].

2021-04-10 20:40:36 177 1

原创 Hdu6570

这题我一看就是要用dp来做的 用dp[i][j]来表示,奇数位上是 i ,偶数位上 j 的最长序列。 a[i]这个数作为X,j从1到c遍历,如果dp[j][X]是奇数那么dp[j][X]+1 如果dp[X][j]是偶数,那么dp[X][j]+1 那么最后答案就是最大的dp for(int i=1;i<=n;i++) { cin>>a[i]; for(int j=1;j<=c;j++){ if(a[i]!=j){

2021-04-10 19:51:06 96

原创 征途(斜率优化dp)

一开始先把式子写出来 后面的值是固定值所以我们只要最小化前面的式子就可以了 用dp[i][j]来表示前j段路程分成i天走要用的最小天数,很容易可以看出来状态转移方程 这题要求的复杂度显然没那么简单,然后想到用斜率优化来做,我们就可以把状太转移方程调整一下形式 for(int p=2;p<=m;p++){ h=1,t=0; for(int i=1;i<=n;i++) { while(h<t&&...

2021-04-08 17:57:46 103

原创 管道取珠

∑ai^2这个可以理解成两个取珠同时进行,然后能相同的取珠结果有多少种 这个点还是挺巧妙的 然后就可以设状态方程 dp[i][j][i1][j1]表示第一个取A i个取B j个 同时第二个取A i1个取B j1个 这里的i+j=i1+j1 所以也是三维的复杂度 主要代码: f[0][0][0]=1; for (int i=0;i<=n;i++,cur^=1) for (int j=0;j<=m;j++) for (int k=0...

2021-04-07 18:46:21 131

原创 Approximating a Constant Range

题意:n个数字的序列,让你找出最长的-连续的一串最大值和最小值不超过1的序列 由于这道题目我们要找出的序列的情况不复杂并且要求连续的序列,所以我首先想到的dp 用dp[i][0]表示最后一个数的下标是i,并且序列中的数全是a[i]和a[i]-1,dp[i][1]相对应的表示序列中全是a[i]和a[i]+1,这样的话状态转移方程也出来了。 if(a[j]==a[j-1]){ dp[i][1]=dp[i-1][1]+1; dp[i][0]=dp[i-1]

2021-03-24 08:37:39 99

原创 开学一总结

刚开学几天,我零零散散的做了几个图论题和俩dp题,着手练了一些省赛难度的图论和dp,也没做多少,空闲时间挺多但是刚开学也有点不在状态,之后要多刷些题了。

2021-03-06 23:00:16 68

原创 第三周第一次总结

做题: 这几天做了十几道dp的题,有五道状压dp,其他就是其他各种类型的dp,总体来说比上两个星期练得时候思路出的快了,而且读完题理解了之后能感觉到自己能不能做出来。再给自己一个星期的时间练练dp,再做一个星期应该就到瓶颈了,想提高就不太容易了。 ...

2021-02-03 20:45:53 80

原创 第二周第二次总结

这是做了十个状压dp的题,状压的题很有意思,每道题都很有特点,想清楚了会感到是着实开阔了思维,我下个周还想再做一个阶段的状压dp,我想这种思维再学的明白点,这是程序员的宝贵思想。学完这里的状压dp我就开始多刷点dp题,综合的再多做些了。 ...

2021-01-31 08:39:11 75

原创 第二周第一次

这三天做了正好十道树形dp的题,对于树形dp的题来说,只要你能看出来这个题是要用树形dp来做,然后你又能把题目模拟的很好,然后又对于树这个数据结构很熟悉,能灵活运用树的一些结论,结合在dp里再做就比较容易了。总体来看这里没有很难的题目 ...

2021-01-27 20:03:39 58

原创 第一周第二次

第一天做了俩背包动态规划,还行,基本上能整体做出来,后面两天做了五个我觉得难度较高的区间动态规划,这里应该要停几天了,感觉做起来不是很容易,还是理解的不太好,还要在练几个题目提高一下 ...

2021-01-23 20:32:43 104

原创 P1156 垃圾陷阱

题意:这是一道比较明显的的背包动态规划,你被困在一个深度为D的洞中,你有初始生命值10,在某些时间会掉落一些垃圾,每个垃圾都有各自的掉落时间和提供的生命值和高度,你可以选择吃它增加生命值或者把它叠起来增加梯子高度,叠的垃圾高度如果超过D并且在那时你还有生命值的话你就活下来了,如果你能活下来就输出你的出洞时间,如果不能就输出你能活多长时间。 思路:这一看是很明显的背包,只是怎么从这三个变量(时间,生命值,高度)选择哪个是物品重量哪个是物品价值。由于每个物品都有固定的掉落时间,我们首先要先给他们掉落时间排序.

2021-01-21 17:06:28 159

原创 2021-01-20

昨天一共就做了两道线性动态规划,有点综合性题目的感觉,每一步都想了很长时间才明白,难题真的都是要一步一步的推导出来的。 然后,今天也是两个题... 这里搞的题确实比较难,但是确实这几道动态规划真的都是好题,期待提单后面的背包题目。 ...

2021-01-20 19:49:47 60

原创 大二上学期ACM训练总结

这一个学期过去了,几乎每天的训练真的让我学会了坚持,坚持下来真的很不容易,但是每天的做题和思考也让我一直很充实,一个星期一个星期的训练总结,也让我切实的感觉到了自己的收获。在对算法有了深刻理解后,在很多的大学课程当中也能感觉到的确轻松许多,在努力中收获了许多东西。 要是说还有什么不足, 首先在宿舍里学习训练做题效率有时候不太高,因为对于ACM之外的其他人来说在宿舍里就是一般不会学习来的,想维持一个一个安静的状态也不太可能,并且有时候感觉不太有压力,自己一直在学习,其他人与自己...

2020-12-22 23:28:27 259 1

原创 2020-12-20

以上就是我本周做的10个题(有一个之前做了),这周做题的确不如前几周专心,花时间了,因为快考试了还是要提前准备准备的 都是后缀数组的题,我这些题做的时候都用的倍增算法来实现的后缀数组,倍增算法的时间复杂度比较容易分析。每次基数排序的时间复杂度为O(n),排序的次数决定于最长公共子串的长度,最坏情况下,排序次数为logn次,时间复杂度低的倍增算法就是好用,写起来也比DC3简洁一点,比DC3要少很多行,后缀数组在字符串问题中有广泛的应用。我还是要多练习练习这个算法,学会能争取在不同类型的题目中灵活的运用...

2020-12-20 22:26:16 98

原创 12-06——:)

这周周五之前一直还在练习字典树和ACAM的一些比较简单的题,主要还是再巩固训练一下算法思想,然后周六周天学习并练习了用后缀数组做字符串相关的题目,理解的还是比较快的,也练习了一些题目,后面两个星期打算一直练习字符串的综合题目了,主要是后缀数组,竞赛中应该很有用 ...

2020-12-06 22:37:59 98

原创 后缀数组解决经典问题

1.求最长回文子串 思路:穷举每一位,然后计算以这个字符为中心的最长回文子串。这里要分两种情况,1.回文子串的长度为奇数,2.长度为偶数。两种情况都可以转化为求一个后缀和一个反过来写的后缀的最长公共前缀。具体是将整个字符串反过来写在原字符串后面,中间用一个特殊的字符隔开。这样就成了求这个新的字符串的某两个后缀的最长公共前缀。然后在查找最长公共前缀lcp的时候利用到了RMQ,我们知道对于两个后缀j和k,设rank[j]<rank[k],则易知后缀j,k的LCP长度等于height[rank[j]...

2020-12-05 21:48:14 113

原创 11.29——:|

这周做了字符串的题,kmp,字典树,ac自动机,上面这是几道字典树的题,这几个题都是比较模板的题,我其实也就算是字符串算法入门,做的这几个题都是我一看就有思路的题,没思路的题我也没去尝试 这几道是kmp的简单模板题,kmp数据结构都学过,所以这几个算法就没怎么学就能明白,所以这周没进行很多思考,做的题都很水- - ...

2020-11-29 22:08:08 120

原创 11.22 ——:|

这周又在做dp,,做的有点舒服,和上个星期比起来就更熟练点了,我也尝试不跳了,就一个个的看,除非很不喜欢的题我才不会做,这些题也不太难了,就思路上都没啥太大问题了,还是需要有很多不同的优化细节,就这最后一个星期了,下个星期主要开始学学字符串的算法,现在晚上有了小窗帘,戴上耳机,拉上窗帘,就从八九点开始,两个多小时效率也还不错,周六周天的时间长一些可以多学学东西,看看相关的博客,有了舒服的学习模式就能的更好做下去了。 ...

2020-11-22 22:09:38 80

原创 Educational Codeforces Round 98 (Rated for Div. 2)

B.这题还是很简单的,动一点脑子就行了啊,,,就去找n-1个相等的数x,这个数要满足的条件:1.(n-1)*x大于等于总和sum,2、x>max ,这是很明显的两个条件,而且也只有这两个条件,想清楚了就好了。 cin>>t; while(t--){ sum=0; Max=0; ans=0; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; sum+=a[i];

2020-11-20 21:29:02 87

原创 11.15 ——:(

这周没做很多题,现在我的实力还不是很容易刷的动,昨天星期六没做题,今天一晚上又补了两道题都顺利过了很舒服,UVA的题不给评测,早知道不做了(我感觉我应该可以ac),但是那俩题看了就有思路就忍不住做了,还是数位dp的题比较难,区间dp最简单了,背包问题思路也容易想到,我做的题目中最主流就这三种题型。 数位dp真的是思想要对数位的状态化简很明白,这里面三个数位的题,能想到数位dp很简单,因为数据大的离谱,很明显是数位dp,但是在运用数位dp之前,你应该怎么优化状态,怎么预处理数据,这东西是真的难,...

2020-11-15 22:57:10 94

原创 11.8——: |

前四天我学了线段树做了几个小模板题,都找的简单的做的,本来就模板很长了,如果代码再有点错误可真受不了,找不到错直接重写可能比找bug要快点。不过确实我的写代码能力还是需要加强,一个题只是写代码加找错到能运行都可能得用一个多小时,确实不太稳 ...

2020-11-08 22:33:46 85

原创 11.1—— :) +

上面是一些最小生成树的问题,也有最大树和次小树,现在我还是习惯用kruskal算法和并查集,有题超时用prim优化就行了 这些最大流的模板题,我还是刚学的。我几乎都用的dinic算法做的这几个题,最大流的模板都挺长的,我就用熟练这一个dinic算法吧 今天又敲了几个二分图匹配的简单题,本来不想做了,因为可以用最大流直接做,但是我这个星期也不想进行下一个知识点了 这星期真的转变了侧重点了,不太喜欢刷题,太模板的题不想做,难题做起来太费劲,所以我做的这些题我个人感觉还都是有一点点难度的...

2020-11-01 22:43:08 303

原创 Educational Codeforces Round 97

C 题意 :给你n个菜的ti,每个菜都可以在任意时间T上,每个时间都只能用一次,每个菜都会产生一个不满意值|T-ti|,让你求最小的总不满意值 很明显可以用dp做,不过我比赛时把他想的太简单了,我只想去每个菜直接去找离他最近的时间,用过的时间就跳过,这样是肯定不对的 正确思路应该是去用dp【i】【j】表示前i个菜用前j个时间,每次比较新的菜用新的时间是否可以更快 #include<bits/stdc++.h> using namespace std; int c,n,i,t,a[222

2020-10-28 19:48:00 224

原创 最短路问题

#include<iostream> using namespace std; const int inf=1e6; const int num=10005; struct edge{ int u,v,c; edge(int a,int b,int c){ u=a; v=b; c=c; } }; vector<edge> e[num]; int n,m; int pre[num]; using namespace std; int spfa(int s){ .

2020-10-24 23:07:14 243

原创 单源最短路问题

Bellman-ford算法 用edge储存每条路径,d【N】数组表示到源点的最短路长度,将源点的d设置为0,其他的d都设为inf,这样n次操作中每次就只有和源点有关系的d会更新,值得一提的是,这个算法很容易记录路径 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; int n,m; int cnt; int pre[100

2020-10-22 10:27:40 202

原创 HDU 1599+3631(floyd)

hdu1599 题意:n个地方,m条无向路,每条路都要花费一定值,问你一个花费最小的回路并且此回路至少经过两个地点,求此最小花费 刚看到这题,呆呆的我就只能想到在floyd中再多加一个一维数组表示把他当作起点和终点最短路的经过地点是多少个,在进行动态规划时,每个回路都进行累加,最后将经过地点大于等于三个的找最小值,实际上这个思路太过于复杂了,题目中没有要求要搞清楚最小路的路径具体是什么样,所以更好的做法是在每个k中再进行另一次遍历,以这个k作为起点终点并且有i,j作为经过点,那么他求出的最小值一定是经过

2020-10-21 22:39:11 90

空空如也

空空如也

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

TA关注的人

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