自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 河南萌新联赛2024第(四)场:河南理工大学

题解:由于题目给了两秒,所以可以跑一个1e8的欧拉筛,然后将筛出来的数放到vector当中,由于“有0则0”的规则,筛出来的数只能是2和奇数,奇数二进制最后一位必定为1,所以要使区间按位为0,左区间必定为2,一共有sum-2个答案,其他答案均为0,看代码。状态转移方程:f[i][j] = (f[i - 1][j] + f[i][j - 1]) % mod;题解:可以用排列组合,也可以用dp,dp[i][j]表示j个人分给i组有多少种方案。题解:题意就是说查找这一个集合当中的最近公共祖先,直接套板子就好。

2024-08-08 16:39:10 191

原创 暑期集训第四周周报

所谓倍增,就是按22的倍数来增大,也就是跳 1,2,4,8,16,32……32,16,8,4,2,1来跳,如果大的跳不过去,再把它调小。拿 55 为例,从小向大跳,5≠1+2+4,所以我们还要回溯一步,然后才能得出5=1+45=1+4;这也可以拿二进制为例,5(101)5(101),从高位向低位填很简单,如果填了这位之后比原数大了,那我就不填,这个过程是很好操作的。想要实现这个算法,首先我们要记录各个点的深度和他们2i级的的祖先,用数组deep表示每个节点的深度,fa[i][j]表示节点i的2j级祖先。

2024-08-06 10:38:17 871

原创 河南萌新联赛2024第(三)场:河南大学

思路:二分问题,首先枚举x,现在已知一个数x,如果我们让B>C,那么A*x+B*y+C*z的答案就是单调上升的函数,然后我们就只需要找到这个函数往下平移V格后,最接近x轴的值,所以直接二分就能出答案。思路:由于l只减小,不增加,所以每次操作都需要把后面的数操作完,也就是找重复字母字段有多少个,其中遇到0需要直接跳过,很简单的题,不知道为什么过的这么少。因为吃掉这个更小的史莱姆后其体积就会变成这个小史莱姆的体积,所以小史莱姆能吃多少,那么它就能吃多少,在此基础上还能吃掉小史莱姆。

2024-08-06 10:38:01 187

原创 2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛

题解:通过分析题目数据可得,由于每一轮中每一个数只能选择一次,那么最后s数组中的每一个数都可以通过二进制,二进制的每一位表示对应上一个数组中对应位是否选择,所以可以直接判断N的二进制位得出答案。题解:首先本题所选的区间,只需要连续且满足两个条件即可,并且我们发现,区间越长越好,所以我们可以通过枚举确定左区间,然后二分找出最小右区间,就可以直接得出答案。题解:非常简单的一个题,只需要用set维护一下每次剪开的那些点,查询时直接二分查找最后一个+小于等于该店的数以及第一个大于的数,两点相减就是最后的答案。

2024-08-06 09:36:35 214

原创 2024 暑假友谊赛 3

emmnnnn,这场赛时过了四题,都比较简单,赛后补一题,剩下三题有两题没学完,都放周报了,学完了写。

2024-08-03 15:45:33 120

原创 武汉工程大学2020GPLT选拔赛(重现赛)(重现赛)

题解:通过举多个样例我们可以发现,凡是偶数并且前n项和大于m都存在答案,那么现在已知的所有满足该条件的数都存在满足题意的答案,于是便可以通过对答案的每一项除二,构造出最高项的答案(也就是右移m),最后强调int类型二进制最高位只有32位,而答案有64位(哭惨了,只拿到20分)详见代码。题解:手写栈,模拟一下过程,对所有的查询排一个序,我卡过去的,即使开了输入输出流也过不了,最后改成scanf才过的。题解:相当于枚举第i个物品放在哪个球里,一个简单的dfs就可以解决,要注意剪枝,回溯。

2024-07-29 21:58:53 136

原创 暑期集训周报三

解法3:在线做法,利用克鲁斯卡尔重构树的性质,(这里不过多展开讲解,有兴趣可以自行了解),对缩完点后的图 进行重构,在重构树上,每次从询问结点所在的叶子结点往上跳,找到满足条件的结点后,查询该结点所在子树包含的叶 子结点中权值第 大的叶子结点实际上就是查询区间第 大采用主席树维护,进行克鲁斯卡尔重构复杂度为O (nlogn),每次向上查找满足条件的结点采用二分或者倍增的方法复杂度为O ( logn),主席树每次查询的复杂度为 O( logn) 总 的复杂度为O((q+n)logn )

2024-07-28 19:18:28 701

原创 SMU Summer 2024 Contest Round 7

由于求组合数的时候最后要除一下,需要使用逆元,由于 mod 是一个质数,a × b^{mod-2} mod 10^9。思路:每次输入时,将该区间中每一个数的价值加一,每个区间,只需要输出价值最小的点,然后不断递推即可。总的方案数就是C(n,1)+C(n,2)+ . . . . +C(n,n) =当同余定理用于减法的时候尽量在减完之后再加上模数,防止出现负数。因为算组合数时,数据非常大,所以要用到。然后不符合的方案数为C(n,a)+C(n,b);来计算组合数的大小;

2024-07-28 19:16:47 179

原创 SMU Summer 2024 Contest Round 8

首先,如果我们把<=k改成=k,那么就变成了长度为M的数组中选择N个数相加为k的方案数,这里是做了一点更改,也就是最后再做一个前缀和与滚动数组。本题的做法就是先找到每个元素起作用的区间[l,r],然后计算对应的值。所以0,9,同时存在的情况有(10^n-(2*9^n-8^n))%mod,最后注意一下负数取余就行。题解:我们可以设置一个二维数组dp[N][10],dp[i][j]代表前i个操作产生结果为j的结果总数。因此,第11个元素最多起作用n+1次,第22个元素n/2+1次,...,第N个元素2次。

2024-07-28 18:08:46 240

原创 暑假集训周报2

1.size()函数的返回类型为unsigned,使用vector或queue等时,尤其需要注意用size()函数时,不能和负数比较大小,不然会发生一些很恶心的错误。i < m;cin >> x;if (!q.pop();g.pop();// tt++;else {

2024-07-21 16:28:54 351

原创 2024 暑假友谊赛 2

思路:由题意可知,贪心思维,用j,l两个指针维护翻转的区间,由于反转子序列不连续,我们只需要不断缩小区间范围,将j位置的值与当前区间最小值交换,如此便可以获得最小序列。这次的补题少,还有几个题放另一个文章了。

2024-07-21 15:59:56 213

原创 SMU Summer 2024 Contest Round 4

赛后感言:虽然迟到了一个小时,但是一个小时过了两题,而且第三题思路也很清楚,前两题都是一次过的。

2024-07-19 23:55:56 366

原创 SMU 2024 年夏季比赛第 5 轮

思路:审题很重要,放入连续k个标号为k的小球才会被清除,开两个栈,一个放球,一个记录该位置球两虚出现的数量,当放进栈顶的球不等于上一个球,直接放入,再记录当前点连续出现的个数,然后继续放下一个球,当放进栈顶的球等于上一个球时,在考虑该球连续的连续次数是否已经达到该球的编号,然后再进行下一步的处理。做题之前一定要把所有的题全部看一遍,接连两次都出现了,会做的题在赛时没看过题的情况,不看题说明,一方面没有自信,另一方面说明代码能力不强,还需锻炼;的思路,先拓展花费较小的点(有点像 𝑆𝑃𝐹𝐴 的 𝑆𝐿𝐹 优化)

2024-07-19 17:33:14 406

原创 河南萌新联赛2024第(一)场

我们按位考虑,从最低位开始,显然最低位上是01 01 01循环,也就是两种情况,我们在此基础 上去考虑下一位,只看当前位的话仍然只有01两种情况,但是当我们结合上一位,一个0就是对 应上一位的所有情况,1同理,那么这一位就是0 0 1 1,以此类推,设当前位是第k位,那在当前 位上循环节就是2k+1 (2k个0和2k个1)每一位累加即可。反思:强调,一定要把题看清楚了再写,真的会浪费很多时间,比如B,看到的第一眼还以为是前几天补过的题目,其实不是(可能会有很多环);思路:暴力,不太会算时间复杂度。

2024-07-18 09:45:20 445

原创 暑假集训周报1

二分,三分,二进制枚举,堆栈,优先队列,线段树(没学完,下周总结),拓扑排序,二分图的最大匹配,匈牙利算法,动态规划,Floyd算法 ,dfs算法,还有一些巧妙的数学知识解决实际问题。

2024-07-14 13:59:01 594

原创 SMU Summer 2024 Contest Round 3

反思:打字很慢,速度太慢了,这次整体较上次较好,打字慢导致思维也慢,赛时过4题。

2024-07-13 23:30:25 551

原创 2024 暑假友谊赛 1

思路:简单的动态规划问题,用dp[i][j]表示前i秒中能否凑成j,那么如果dp[i][j]==1,则可以通过dp[i][j]来更新dp[i+1][j]和dp[i+1][j+a[i+1]]=1,最后从总时间的一半向后搜索答案。

2024-07-13 22:06:21 767

原创 SMU Summer 2024 Contest Round 2

反思:赛时过两题,出题很慢,c题二分还不是很熟练,浪费了一点时间,做题顺序的选择比较随意,已经浪费了一个小时之后才开始看过题数多的题,但是好在敢于尝试,打字速度是我的痛啊。

2024-07-13 17:30:11 395

原创 2024 暑假友谊赛-热身1

思路:由于i位置的温度必定与相邻两个位置的其中一个温度具有连续性,一开始考虑到给出的空调点中某些位置是无效的,并且,空调的温度会向两边扩展,每一个点的温度由该点是否有空调,左侧空调和右侧空调影响,所以我们可以从最左端往右,最右端往左更新取最小值(也就题目描述可能复杂一些)我们枚举 j 从 2至 ( n − 1 ) ,那 i和 k 一定是把 1 − ( j − 1 ) ,j − n 这两个区间分最点的点。思路:数学或者三分,一开始用的三分,没解出来,在这里解一下。思路:连续字母区间取最前k大的值就好。

2024-07-13 16:16:24 401

原创 2024 暑假友谊赛-热身2

设从第 i𝑖 个关卡通关的期望为 Ei𝐸𝑖。特别地,𝐸𝑛+1=0,且答案为 E1𝐸1。思路:有,cf的F题,不好过。思路:线段数加dp,不太会。继续推导可以发现答案为。

2024-07-12 21:03:18 250

原创 SMU Summer 2024 Contest Round 1

反思:赛时死磕a题,c题写了十分钟,赛后5分钟就过了,打字速度太慢不敢换题换思路(其实换一个方向考虑,赛时看的题多,赛后也好补题)。补完之后感觉整体都还行,还是太菜了。下次一定要通览一遍,不能偷懒了。

2024-07-11 21:02:17 274

原创 题单收集册2

【代码】题单收集册2。

2024-05-27 10:24:46 120

原创 题单收集册1

lower_bound( begin,end,num,greater<type>() ):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num,greater<type>() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。在从小到大的排序数组中,

2024-05-27 10:19:45 416

原创 字符串专题

常用方法1.带空格符的字符串输入:getline(cin,str)2.换行符的输入:getline(cin,str) ::getchar()(c)3.字符串的翻转:reverse(vc[n-i-1].begin(), vc[n-i-1].end());//生成空字符串//生成"1234456789"的复制品//从0位置开始取三个字符存入,结果为"123"//以前5个作为初值,结果为"01234"//以5个字符‘1’作为初值,结果为"11111"

2024-03-31 13:48:30 509 3

原创 SMU 2024 spring 天梯赛1(补题)

发挥一般,水平也一般,不想再多说了,哑口无言,继续努力。

2024-03-24 17:49:08 245 1

原创 成信校赛题解

首先一到四题签到题没有问题,只是打字比较慢。在比赛中只做出来了前四个签到题,痛心疾首,创建文件出了问题。

2024-03-24 17:29:47 417 1

原创 基本算法总结

【代码】基本算法总结。

2024-03-10 01:20:21 337 1

原创 算法总结2——拓扑排序

将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列,就是拓扑排列。在C++语言中,我们可以使用邻接表来表示有向图。例如,一个项目包括A、B、C、D四个子部分来完成,并且A依赖于B和D,C依赖于D。现在要制定一个计划,写出A、B、C、D的执行顺序。这时,就可以利用到拓扑排序,它就是用来确定事物发生的顺序的。一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动(activity)。在整个工程。

2024-02-25 20:47:06 1572 1

原创 算法总结1——暴力枚举

暴力枚举算法通常采用循环或递归的方式来实现。循环实现通常是嵌套多层循环,逐个枚举每个可能的情况,并在内层循环中对每种情况进行检查;递归实现则是将问题分解为更小的子问题,逐层递归求解,直到找到符合条件的解。简单的枚举一般只适用于解决简单的问题,难以求出或范围特别大,明显超时。对问题的所有可能情况进行逐一尝试,并从中找到所有符合条件的解决方案。1.枚举的范围一般需要连续。2.枚举内容需要已知。题解:三重循环暴力枚举。

2024-02-24 20:35:24 410

原创 出现Runtime Error或Time Limit Exceed怎么办?

由于在在比赛过程中提交答案总是因为这种问题浪费了很多时间,在网上查找和总结后记录了下面的解决方法。

2024-02-22 20:52:47 945 1

原创 SMU 2024年冬季第三轮(第2部分)

思路:多重背包用二进制优化为01背包。多重背包问题通常可转化成01背包问题求解。但若将每种物品的数量拆分成多个1的话,时间复杂度会很高,从而导致TLE。所以,需要利用二进制优化思想。分析:解决问题的实质是找上层节点每个节点分别连向了多少个下 层节点,待解决。思路:单个字符即为一个回文串,将字符总数加起来即为数量最多的回文串。思路:使用map函数对每一层楼出现过的相同字符数进行遍历和计数。题目分析:题目较长,涉及数据相较于其他题较多,待解决。思路:算出正确区间,for循环遍历,判断闰年。

2024-02-18 20:51:51 338

原创 define宏的用法

define的用法有以下三中,定义常数,定义标识符和关键字,定义函数

2024-02-15 20:00:43 327 1

空空如也

空空如也

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

TA关注的人

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