自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Happig的博客

我不够强大,但我足够努力

  • 博客(580)
  • 资源 (7)
  • 收藏
  • 关注

原创 倍增问题总结

倍增当我们在进行递推时,如果状态空间很大,线性递推会超时,那么就选择成倍的增长方式,以递推状态空间中 2 的整数幂次作为代表值。根据任何整数都能表示为若干个 2 的幂次的和这一性质,使用之前求出的代表值拼出所需的值,这就是倍增。所以倍增要求递推的问题的状态空间关于 2 的幂次具有可划分性。题目分析树上倍增(LCA)传送门解题思路设数组 f[i][j]f[i][j]f[i][j] 代表节点 iii 的 2j2^j2j 辈祖先,若超出根节点范围用 0 代替。显然对于 jjj , f[i][j]=f

2021-08-24 19:55:39 785

原创 二分答案问题总结

二分答案对于给定的求解问题,该问题具有单调性。也就是说在所有可行域中,对于题目要求条件的判定在某个数的一侧一定是可行的,而另一侧是不可行的。于是我们可以把求解最优值的问题,转化为对值域的二分找到临界数的问题。常见的二分写法://整数域二分while (l <= r) { mid = (l + r) >> 1; if (check(mid)) { ans = mid; l = mid + 1; }else r = mid - 1;}while (l < r)

2021-08-07 11:58:50 219

原创 贪心问题总结

经典问题排队接水问题问题描述nnn 个人在一个水龙头前排队接水,假如每个人接水的时间为 TiT_iTi​,找出一个排队顺序,使得 nnn 个人的等待时间之和最少。思路每个人的等待时间为前面人的接水时间之和,排队越靠前被计算次数越多,因此越小的排在前面显然是最优的。选择不相交区间问题描述数轴上有 nnn 个开区间 (li,ri)(l_i, r_i)(li​,ri​),从中选出尽量多的区间,使得选出的这些区间两两没有交点。思路若区间相互包含,即区间 xxx 完全包含 yyy。那么选择 xxx

2021-07-31 19:50:07 279

原创 数位DP入门总结

数位DP数位DP的问题一般是统计一个范围内满足数位存在某些约束的数的个数,例如数位中含有连续的两位是131313、数位和被某个数整除、该数本身被某个数整除、二进制1的个数大于等于0的个数等等。数位DP一般使用记忆化搜索(因为记忆化搜索比较简单),核心思想是:从高位向低位枚举第pospospos位,当前的状态为 statusstatusstatus,枚举这一位放置的数字,那么状态转移就是d(pos,status)=∑d(pos−1,status′)d(pos,status) = \sum{d(pos-1

2021-03-30 16:49:24 261

原创 树形DP入门总结

常规树形DP洛谷P1352 没有上司的舞会题目大意有一棵树,每个节点都有权值,选点规则是若一个点的父节点被选择后那么该节点就不能被选择,求出选点的最大权值总和。(实际上就是最大独立集的带权情况)解题思路每个节点只能有两种状态,选或不选,父子节点的选择会依据树的结构特点互相制约,那么设d[u][0/1]d[u][0/1]d[u][0/1]代表节点uuu不选/选得到的最大权值和,那么有:若节点uuu被选那么其子节点vvv一定不会被选,即d[u][1]=wu+∑d[v][0]d[u][1] = w_

2021-03-02 09:14:49 222

原创 Codeforces 1741G. Kirill and Company(BFS/位运算/分组背包)

上述问题可以用分组背包解决,分组背包实际上解决的问题就是若干组物品,每组最多选出一个,使得不超过背包容量时价值之和最大。个人按位来表示,对于每个有车的人,求出有多少种二进制集合表示的方案,他可以带每种方案的人回家。没车,当枚举到状态(左边为最低位)“1110” 代表如果带前三个人搭车回家,能否将三个人都送回家,如下图所示。个人没有车,其他人都有车,没车的人可以搭顺风车回家,通过搭车安排使得。对于每个有车的人,求出有多少种二进制集合表示的方案后,问题变成了,个人中无法搭车走回家的人最少,求出这个最少的人数。

2022-10-25 14:53:53 470 1

原创 Codeforces1741 F. Multi-Colored Segments(离散化/multiset/差分)

采用的方法是将所有线段按颜色划分集合,对于每个集合考虑差分进行区间加法,这时每个点表示的是该点被多少不同颜色的线段覆盖,因为同色线段相交的部分是无用的,在差分前要先将进行。但是题目要求不同颜色才有效,考虑在查询时将所有和当前线段同颜色的都删掉,那么直接查询就可以了,当然删除的复杂度太大是不可取的。对于每个线段,需要求出距离它最近的一个和它不同颜色的线段,并输出其距离。,这时在X轴的负半轴出现了刚好对称的线段集,和上面思路一样再计算一遍即可。,则代表该区间至少被两种颜色的线段覆盖,答案必定为0。

2022-10-17 19:48:26 509

原创 Codeforces1729 G. Cut Substrings(线性DP)

它左侧和右侧可能存在多个和它相交的子串,为了尽可能的减少替换次数,但是只能覆盖其中一侧而无法兼顾左右,这一点容易证明。考虑去覆盖它以及它右侧和它相交的所有子串,那么需要在区间。答案应该从整个字符串的最后一个交错段中找,为了方便可以添加一个终点,终点从最后一个交错段转移而来,因此最终需要将这种方式得到的答案减一。因为状态转移是按交错段进行的,正常来说应该对整个字符串的第一个交错段全部初始化为。中的任何一个子串时,这段连续多个交错的子串可以全部被覆盖,下文将简称这段交错子串为交错段。,以及有多少种替换方案。

2022-10-12 20:11:12 484

原创 洛谷 P1108 低价购买(LIS统计方案数)

传送门题目大意求出最长下降子序列的长度以及有多少种不同的最长下降子序列(这里不同指的是某个位置的数不同即可认为不同)解题思路观察数据范围,只需要 O(n2)O(n^2)O(n2) 的做法,但是更快的做法好像没有。如果没有最长下降子序列种类的限制,可以设 d[i],f[i]d[i],f[i]d[i],f[i] 分别代表以位置 iii 结尾的最长下降子序列的长度和在这个长度下的个数,那么显然需要先求出 d[i]d[i]d[i],然后扫一遍更新 f[i]f[i]f[i]:f[i]=max(∑j=1i

2021-11-24 09:25:28 153

原创 洛谷 P1020 [NOIP1999 普及组] 导弹拦截(LIS+Dilworth定理)

传送门题目大意给定一个序列,求出最长不升子序列的长度以及原序列最少分为多少个不升的子序列。解题思路Dilworth定理在有穷偏序集中,任何反链最大元素数目等于任何将集合到链的划分中链的最小数目。偏序集的两个定理定理一:令(X,≤X,\leqX,≤)是一个有限偏序集,并令 rrr 是其最大链的大小。则 XXX 可以被划分成 rrr 个但不能再少的反链。其对偶定理称为 Dilworth 定理。定理二:令($X, \leq $)是一个有限偏序集,并令 mmm 是反链的最大的大小。则 XXX 可

2021-11-23 10:11:08 335

原创 LOJ - 10235. 「一本通 6.6 练习 6」序列统计(组合数学+Lucas定理)

题目大意给定三个正整数 N,L,RN, L, RN,L,R,统计长度在 111 到 NNN 之间,元素大小都在 LLL 到 RRR 之间的单调不降序列的数量。输出答案对 1e6+31e6 + 31e6+3 取模的结果。解题思路假设是从 nnn 个数中选出 mmm 个数,套用经典的计数模型:若组成单调递增序列,当我们选择了第一个数的时候,后面有 n−1n - 1n−1 种选择,选择第二个数的时候,后面有 n−2n - 2n−2 种选择…这样最终的方案数目是 n∗(n−1)∗...∗(n−m+1..

2021-11-22 21:05:55 709

原创 2019 CCPC 哈尔滨 I. Interesting Permutation(思维+组合计数)

传送门题目大意给出一个 nnn 的排列 aia_iai​,定义三个序列:fi=max{a1,a2,...,ai}f_i = max\{a_1, a_2, ... , a_i\}fi​=max{a1​,a2​,...,ai​}gi=min{a1,a2,...,ai}g_i = min\{a_1, a_2, ... , a_i\}gi​=min{a1​,a2​,...,ai​}hi=fi−gih_i = f_i - g_ihi​=fi​−gi​现在给定 nnn 求有多少种排列满足给定的 hhh

2021-11-22 11:13:15 342

原创 洛谷 P1950 长方形(单调栈)

传送门题目大意给出一个 n∗m(1≤n,m≤1000)n*m(1 \leq n, m \leq 1000)n∗m(1≤n,m≤1000) 的矩阵,矩阵元素可以为 ‘.’, ‘*’。求出所有的仅有 ... 包含的矩形的个数。解题思路这题应该由两个部分构成,一是如何统计矩形,二是如何不重不漏且在时间复杂度内统计矩形。统计矩形若没有 ‘*’ 的限制在矩阵内找有多少个矩形,实际上就是这道题的一个简化版:P2241 统计方形。考虑矩形的性质,可以由如下角度入手去统计:固定矩形的左上角和右下角,可以

2021-08-11 19:57:04 231

原创 AT4142 [ARC098B] Xor Sum 2(尺取)

传送门题目大意给出一个序列 aaa,求出有多少个区间 [l,r][l,r][l,r],满足 al⊕al+1⊕...⊕ar=∑i=lraia_l \oplus a_{l + 1} \oplus ... \oplus a_r = \sum_{i = l}^r a_ial​⊕al+1​⊕...⊕ar​=∑i=lr​ai​。解题思路首先异或和与运算都是一样的,即 a⊕b≤a+b, a&b≤a+ba \oplus b \leq a + b, ~a \& b \leq a + ba⊕

2021-08-05 16:32:59 109

原创 Codeforces1555 E. Boring Segments(尺取+线段树)

传送门题目大意给定 nnn 区间,每个区间都有一个权值。给定一个数 mmm,选择若干个区间能覆盖区间 [1,m][1,m][1,m] 且一定是连通的区间集(这个连通指的是存在每个区间都存在另外一个区间和它有交集),且最大权值和最小权值相差最小。输出最大最小值的差值。解题思路首先考虑如何使最大最小值的差值最小,因为区间什么顺序都无所谓,所以干脆按照权值从小到大排序。考虑当前的区间 iii,若能在它的右边尽可能靠左的位置确定一个两两有交集且覆盖 [1,m][1,m][1,m] 的区间集合,那么就不会考

2021-08-03 16:43:36 118

原创 Codeforces1555 D. Say No to Palindromes(思维)

传送门题目大意一个字符串被定义为美丽的当且仅当该区间内不存在任何长度大于等于 2 的回文子串。给定一个仅有前三种字母构成的字符串和若干次询问,每次询问该区间的一个子串如果要修改为美丽的字符串最少需要修改几个字符。解题思路一个字符串不能有长度大于等于 2 的回文子串,表示对于任意的 si−1≠si,si−2≠sis_{i - 1} \neq s_i,s_{i - 2} \neq s_isi−1​​=si​,si−2​​=si​,又因为只有三种字符,所以 si−3=sis_{i - 3} = s_

2021-08-03 16:12:09 197

原创 洛谷 P1631 序列合并(优先队列+归并)

传送门题目大意给出两个序列 a,ba, ba,b,将所有的 ai+bia_i + b_iai​+bi​ 求出后然后排序,只需要输出其中的前 nnn 个。解题思路这题的思路很巧,是利用归并的思想。将 a,ba,ba,b 均排好序之后,我们在取的时候发现是有技巧的取的,如果 ai+bia_i + b_iai​+bi​ 能取就肯定不会取 ai+1+bia_{i+1}+ b_iai+1​+bi​ 或者 ai+bi+1a_i + b_{i +1}ai​+bi+1​。我么可以将其中的每 nnn 个数看做 n

2021-07-19 17:18:38 186

原创 求不超过long long范围的所有组合数(分类讨论+杨辉三角打表)

题目大意给定 q(1≤q≤106)q(1 \leq q \leq 10^6)q(1≤q≤106),每次输入两个数 n,m(1≤n≤263−1,0≤m≤m)n,m(1 \leq n \leq 2^{63} - 1, 0 \leq m \leq m)n,m(1≤n≤263−1,0≤m≤m),若Cnm≤263−1C_n^m \leq 2^{63} - 1Cnm​≤263−1 输出 CnmC_n^mCnm​,否则输出0。解题思路在杨辉三角预处理组合数时,到第70项以后开始就出现了大于 263−12^{63}-

2021-07-19 11:56:36 160

原创 第 k 个组合(组合数和杨辉三角)

题目大意从 nnn 个整数 1,2,3,4,...,n1,2,3,4,...,n1,2,3,4,...,n 中取出 mmm 个不同的整数,其取法总数称为组合数 CnmC_n^mCnm​。这 CnmC_n^mCnm​ 种方案按字典序从小到大排列,输出第 kkk 个组合。数据范围:1≤m≤n≤1000,k≤4e91 \leq m \leq n \leq 1000, k \leq 4e91≤m≤n≤1000,k≤4e9解题思路组合数可能特别大,无法通过一个个求排列那样求。假设有 5 个数,从中取 3 个

2021-07-19 10:40:04 448

原创 第十二届蓝桥杯国赛 C++ 大学B组 题解

目录A. 带宽 B. 纯质数 C. 完全日期 D. 最小权值 E. 大写 F. 123 G. 异或变换 H. 二进制问题 I. 翻转括号序列 J. 异或三角 前言因为自己的大意马虎和迷之自信,还有一些其他原因。去年拿国一,又训练了一年反而退步到了国二。总之还是个人原因,不管为人还是处事,一定要谦虚谨慎,不断进取,自我反省。A. 带宽答案200/8 = 25B. 纯质数答案1903代码先欧拉筛出所有质数,然后对每个数按位判断,注意素数标记数组要把 111 和 00

2021-07-07 16:09:12 4675 13

原创 洛谷 P1249 最大乘积(贪心/01背包)

传送门题目大意给出一个正整数 nnn ,将 nnn 分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。解题思路方法一按背包的思路来考虑,有1−n1-n1−n这些数,每个数选或不选,背包的容量是nnn。最终价值是相乘求得,可以使用对数运算将乘法变为加法,且最终要求的是背包容量恰好为 nnn 的情况,并打印解。#include <bits/stdc++.h>using namespace std;#define ENDL "\n"typedef long long l

2021-07-05 09:15:53 210

原创 Codeforces Round #729 (Div. 2) C. Strange Function(找规律+容斥定理)

传送门题目大意定义 f(i)f(i)f(i) 为 iii 的最小不整除正整数,求∑i=1nf(i),n≤1016\sum_{i = 1}^nf(i), n \leq 10^{16}∑i=1n​f(i),n≤1016。解题思路比赛时打表看出来了规律,但是分析规律的时候脑袋不好使了没写出来,GG~首先不难想到,对于奇数来说,最小不整除正数一定是 222,然后考虑偶数,这时可以按222的次幂个数来分,对于只有一个质因子 222 的数可以得出 fff 要么是 333 要么是 444;若质因子是222^2

2021-07-04 19:27:07 423

原创 HDU - 6709 Fishing Master(贪心)

传送门题目大意有一个池塘里面有nnn条鱼,每条鱼煮熟的时间最少为tit_iti​(可以多煮一会但不能少),现在钓每条鱼的时间均为kkk。只有一口锅,也就是说鱼只能一条一条的煮,且只能一条一条的钓,在煮鱼的同时可以钓鱼,问煮完所有鱼最少花费的时间是多少?解题思路首先因为每条鱼都必须钓出来,因此总的钓鱼的时间是固定的k∗nk * nk∗n。能节约的时间其实也就是在钓鱼的时候顺带煮鱼,又因为第一条鱼必须先钓出来才能煮,因此必须在k∗(n−1)k*(n - 1)k∗(n−1)的时间内充分利用时间去煮鱼。

2021-05-24 15:32:00 185

原创 2021 ICPC 银川打铜记

前言2020 ICPC我们队之所以没有把名额用在20年的上海、南京、济南,是希望能多训练一段时间直接冲更好的成绩,上半年的第一站是昆明,本以为能在昆明就打到成绩,结果一塌糊涂,被出的第二题类LIS的构造卡住思路五小时没出,心态崩掉只签了一题结束游戏。赛后三人自闭了好久才走出阴影,在教练和学长的调解下重新安排训练,打Codeforces练思维加上刷洛谷题单奠基础,昆明结束后全员进入特训模式,前段时间是真的累,五一的五天假期没有出去玩而是天天训练…5.14在刚刚经历了昆明的滑铁卢后,我们这支学校唯一的大三

2021-05-20 10:40:16 984 3

原创 洛谷 P3743 kotori的设备(二分答案)

传送门题目大意给出n(1≤n≤1e5)n(1 \leq n \leq 1e5)n(1≤n≤1e5)个设备,每个设备有一个初始电量b(1≤a≤1e5)b(1 \leq a \leq 1e5)b(1≤a≤1e5)和耗电速率a(1≤a≤1e5)a ( 1 \leq a \leq 1e5)a(1≤a≤1e5),现在有一个充电速率为p(1≤p≤1e5)p(1 \leq p \leq 1e5)p(1≤p≤1e5)的充电器,当有设备电量降为0时视为结束,充电速率的意思是每秒可以给接通的设备充能ppp个单位,充能是连

2021-05-08 17:29:35 244

原创 B - Mr.Maxwell and attractions(贪心+优先队列)

传送门题目大意有两种活动a,ba,ba,b,数量分别是n,m(1≤n,m≤1e5)n,m(1 \leq n,m \leq 1e5)n,m(1≤n,m≤1e5),每天只能在上午或者下午选择一种活动进行,每种活动可以重复选择但被选择一次后权值就会变为原来的60%60\%60%,特别地bbb类活动在下午被选择时只能得到其权值的80%80\%80%。现在有TTT天,其中限制最少选择k(1≤k≤T≤1e5)k(1 \leq k \leq T \leq 1e5)k(1≤k≤T≤1e5)天下午,问最终能得到的最大权

2021-05-08 16:40:27 123

原创 洛谷 P1990 覆盖墙壁(DP/递推)

传送门题目大意给出一个2∗n(1≤n≤1e6)2*n(1 \leq n \leq 1e6)2∗n(1≤n≤1e6)的墙壁,规定只能用两种可以任意旋转的砖头覆盖,砖头的形状如下:求使用这两种砖头覆盖墙壁的方案数对100001000010000取模的结果。解题思路这种题目主要是推出递推式,虽然是二维的,但是定义状态时仍可以定义f[i]f[i]f[i]表示填充满前面的2∗i2*i2∗i个格子的方案数,假设当前要填第iii列,那么可以尝试一些放置方法,然后从前面已经得出的答案中递推求出:假设竖着放

2021-05-05 12:02:18 693 3

原创 Codeforces 1517D. Explorer Space(思维+DP)

传送门题目大意给出一个n∗m(1≤n,m≤500)n*m(1 \leq n, m \leq 500)n∗m(1≤n,m≤500)的棋盘,任意一个点和周围的四个点都有一条无向带权边,现在需要求出所有点向外走k(1≤k≤20)k(1 \leq k \leq 20)k(1≤k≤20)步然后回来的最小路径权值和,每个点以及每条边都可以经过多次。解题思路首先四联通的棋盘上,任何一个闭合回路的路径长度一定都是偶数。也就是说如果kkk为奇数那么所有的点一定无解,否则所有的点一定有解。一个结论:从某点走kkk步

2021-05-04 10:39:56 278

原创 Codeforces 1519D. Maximum Sum of Products(思维+暴力枚举)

传送门题目大意给出两个长度为n(1≤n≤5000)n(1 \leq n \leq 5000)n(1≤n≤5000)的序列a,ba, ba,b,可以最多一次对序列aaa的某段子数组执行翻转操作,求出如何翻转使得∑i=1nai∗bi\sum_{i = 1}^n a_i*b_i∑i=1n​ai​∗bi​最大。解题思路对于本题的数据范围来看O(n2)O(n^2)O(n2)的算法即可,考虑一段子数组翻转后,一定存在某个对称轴,使得关于对称轴对称的数交换位置,想到这里,我们可以枚举对称轴,向两边扩散求出所有的

2021-05-01 15:01:17 211

原创 Codeforces 1516D. Cut(质因数分解 + 链表 + 倍增)

传送门题目大意给出一个长度为n(1≤n≤1e5)n(1 \leq n \leq 1e5)n(1≤n≤1e5)的序列ai(1≤ai≤1e5)a_i (1 \leq a_i \leq 1e5)ai​(1≤ai​≤1e5)。给出q(1≤q≤1e5)q(1 \leq q \leq 1e5)q(1≤q≤1e5)次询问,每次询问给出区间的左右端点l,rl,rl,r,问这个区间最少被分为多少个子数组,使得每个子数组中每个数的乘积都恰好等于他们的lcmlcmlcm。解题思路第一个需要解决的问题是,给定一个区间如何

2021-04-26 11:12:01 306

原创 Codeforces 1516C. Baby Ehab Partitions Again(背包+思维)

传送门题目大意给出nnn个数的序列,若这个序列能被分成两部分且这两部分的和相等,称这个序列是不好的。最少删除几个数使得这个序列不是不好的。解题思路不难想到,若一个序列能分为两部分和相同的,那么所有数的和sumsumsum一定是偶数,然后如何判断初始的序列能否分成两部分呢?背包,每个物品选或者不选,判断最后能否凑成sum2\frac{sum}{2}2sum​。若能凑成,需要判断删除几个数,直觉判断删除一个数就可以(这部分无法证明,题解也没说如何证明),但这个数不能随便删,考虑序列是否有奇数:

2021-04-26 10:34:09 278 1

原创 2021 蓝桥杯省赛第一场 C++ 大学 B 组

解题思路1MB=210KB=220B1MB = 2^{10} KB = 2^{20}B1MB=210KB=220B,1B=8 bit1B = 8~bit1B=8 bit,实际上就是求256MB256MB256MB有多少个32 bit32~bit32 bit。答案:67108864#include <bits/stdc++.h>using namespace std;#define ENDL "\n"typedef long long ll;.

2021-04-18 22:33:08 18857 28

原创 Codeforces 1511 E. Colorings and Dominoes(DP)

传送门题目大意给出一个棋盘,黑格代表∗*∗,白格代表ooo,其中白格可以被染成红色或者蓝色。对于横着的连续的两个红格

2021-04-16 16:27:44 228 1

原创 Codeforces 1511D. Min Cost String(构造)

传送门题目描述给出一个字符串sss,若其两个位置i,j(i<j<n)i, j(i < j < n)i,j(i<j<n)满足ai=aj  &&  ai+1=aj+1a_i = a_j ~~\&\&~~ a_{i+1} = a_{j+1}ai​=aj​  &&  ai+1​=aj+1​那么会对该字符串的价值加一,给定n,kn,kn,k,仅适用

2021-04-13 22:11:00 360

原创 2021字节跳动研发春招第五场笔试第三题

题目大意给出nnn个五元组pi={ai,bi,ci,di,ei}p_i = \{a_i,b_i,c_i,d_i,e_i\}pi​={ai​,bi​,ci​,di​,ei​},要从中选出2个五元组i,ji, ji,j,最终的得分为min{max(ai,aj),max(bi,bj),max(ci,cj),max(di,dj),max(ei,ej)}min\{max(a_i, a_j), max(b_i, b_j),max(c_i, c_j),max(d_i, d_j), max(e_i, e_j)\}min{

2021-04-13 20:50:57 526

原创 Codeforces 1513 D. GCD and MST(链表 + MST)

传送门题目大意给出一个长度为n(1≤n≤2e5)n ( 1 \leq n \leq 2e5)n(1≤n≤2e5)的序列aaa,初始时每相邻两个数中间都含有一条权值为ppp的边,对于一段区间[i,j][i,j][i,j],若其满足gcd({ak∣i≤k≤j})=min{ak∣i≤k≤j}gcd(\{a_k | i \leq k \leq j\}) = min\{a_k | i \leq k \leq j\}gcd({ak​∣i≤k≤j})=min{ak​∣i≤k≤j},那么i,ji,ji,j之间有一条权

2021-04-12 21:30:24 188

原创 2021年“图森未来杯”全国程序设计邀请赛 D. Divide(阶乘质因数分解)

传送门题目大意给出两段区间[l1,r1],[l2,r2][l_1, r_1] ,[l_2, r_2][l1​,r1​],[l2​,r2​],设d1=∏i=l1r1,d2=∏i=l2r2d_1 = \prod_{i = l_1}^{r_1}, d_2 = \prod_{i = l_2}^{r_2}d1​=∏i=l1​r1​​,d2​=∏i=l2​r2​​,问是否d1∣d2d_1 | d_2d1​∣d2​,即前者整除后者。解题思路这题拿到思路后一直想着对每个数质因数分解的方法去求,但是无奈要么TLET

2021-04-11 21:55:56 320

原创 Codeforces 1487E. Cheap Dinner(DP + multiset)

传送门题目大意给出四个大小为ni(1≤ni≤150000)n_i(1 \leq n_i \leq 150000)ni​(1≤ni​≤150000)序列,给出三种制约关系,即1  21~~21  2、2  32~~32  3和3  43~~43  4两两数组之间都有mi(0≤mi≤200000)m_i(0 \leq m_i \leq 200000)mi​(0≤mi​≤200000)对数

2021-04-09 18:41:47 139

原创 Codeforces 1494D Dogeforces(构造+并查集)

传送门题目大意给出一棵带权树,其中所有父节点的权值一定严格大于子节点。给出了所有叶子节点的权值以及两两叶子之间的 最近公共祖先 LCALCALCA 的权值,试着还原这棵树。解题思路树的构造问题大都从特殊到一般、从叶子结点开始构造。对于两个叶子结点,显然第一次操作时只需要新建一个节点,然后将他们连接起来;对于两棵分别连好了两个叶子节点的子树,如下图所示,若 1  41~~41  4 的 LCALCALCA 的权值大于了两个父节点5,65,65,6,那么我们新

2021-04-08 16:01:36 166 1

原创 Codeforces gym102423 - J One of Each(贪心 + 栈)

传送门题目大意给出nnn个数,仅包含[1,k][1,k][1,k]中的数,且至少含有kkk个不同的数。找到一个长度为kkk的子序列是kkk的一个排列且字典序最小。解题思路这个题算是比较难想的贪心了,而且要用栈维护。一开始用尺取发现维护不了,贪心的话自己又陷入了如下几个误区:如果从后向前贪心,显然是可以的,但是对于已经选过的数,无法得知前缀中待选的数是否能全部出现,即使bitsetbitsetbitset维护也要爆内存。如果用双端队列从前向后维护,没出现的就入队,如果出现了重复的数要遍历队列,

2021-04-08 10:59:06 156

stopwords.txt

作中文分词时的停用词,几个资源整合而来,较为全面

2021-12-12

数据结构实验——赫夫曼树相关

本人本科期间学习数据结构写的实验,内容如下 1、输入一段报文,例如: CAST CAST SAT AT A TASA 统计字符集合 { C, A, S, T },以及各个字符出现的频度(次数) W={ 2, 7, 4, 5 }。 2、建赫夫曼树,并输出各个字符的赫夫曼编码 3、输入编码01100……,能准确翻译成报文 4、要求有菜单。

2020-05-13

数据结构实验——二叉树相关操作

本人本科期间数据结构二叉树的实验 1、建立二叉树的存储结构 2、先序、中序、后序遍历二叉树(要求任选某一种用非递归算法完成) 3、查询二叉树中某个结点 4、统计二叉树中叶子结点的个数 5、求二叉树的深度 6、要求有菜单

2020-05-13

数据结构实验——字符串相关操作

本人本科学习期间数据结构的第三个实验 1、实现串赋值、串比较、求串长、串联接、求子串以及串匹配(KMP算法) 2、能利用上述实现的基本操作完成置换Replace (&S, T, V)以及从串中删除一段子串StrDelete(&S,pos,len)的操作

2020-05-13

数据结构实验——表达式求值

实现了前缀表达式求值,可执行功能为加减乘除和括号,数据类型是计算机双精度浮点数,支持多位整数和多位小数。实现思路是根据运算符的优先级,边输入边计算

2020-04-06

数据结构实验——链表实现XXX管理系统

数据结构的实验:实验题目是**管理系统。要求用带头结点的单链表实现具有插入、删除、显示、修改、保存至文件以及读入文件等功能的**管理系统。加至少3个结构成员,其中必须包含一个字符类或字符数组类,并使用排序等功能

2020-04-06

Base conversion.cpp

在完成课后作业过程中,无法辨认计算的进制转换是否正确,于是想写个程序去完成,既能节省时间,也能对一下答案。该简单代码支持2-16进制浮点数相互转换,最多精确到小数点后308位

2020-02-19

空空如也

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

TA关注的人

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