自定义博客皮肤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的博客

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

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

原创 洛谷P1725 琪露诺(单调队列+dp)

传送门设d[i]d[i]d[i]表示跳到位置iii的最小值,那么不难想到状态转移方程为:d[i]=max{d[i−j]}+a[i],i−r≤j≤i−ld[i]=max\{d[i-j]\}+a[i],i-r\leq j \leq i-ld[i]=max{d[i−j]}+a[i],i−r≤j≤i−l本题可以写填表法,但是显然刷表法(由当前状态更新未来状态)更好。因为区间[i−r,i−l][i-r,i-l][i−r,i−l]长度是固定的,那么我们可以使用单调队列O(1)O(1)O(1)取得最值,这时来了一

2020-07-31 19:13:05 255

原创 洛谷P1714 切蛋糕(单调队列经典问题)

传送门一开始很容易想到尺取,但是好像又不太一样,尺取解决的一般是区间和接近某个数或者区间内讨论数的种类个数,而本题实际上是解决最大不定长连续子段和然后不难想到最大连续和的经典问题,然后不难想到前缀和的O(n2)O(n^2)O(n2)算法,显然会TLETLETLE,那么参考最大连续和的前缀和优化:假设以第jjj个数为终点的最大子序列和的起点是iii,于是结果为sum[j]−sum[i−1]sum[j] - sum[i-1]sum[j]−sum[i−1]。因为我们要维护最大前缀和,sum[i−1]sum

2020-07-31 13:25:52 374

原创 2020牛客暑期多校第五场 I - Hard Math Problem(思维)

题目链接真的太菜了,画了两个小时也没做出来,心态崩了…注意到如果使HHH尽可能的多,那么就可以考虑使用HHH围住EEE和GGG,为了保证每个HHH周围合法,那么就让E,GE,GE,G处在所有的(主)对角线#include <bits/stdc++.h>using namespace std;int main() { ios_base::sync_with_stdio(false),cin.tie(0), cout.tie(0); // cout <<

2020-07-30 21:32:18 171

原创 2020牛客暑期多校第五场 E - Bogo Sort(思维/LCM)

题目链接比赛时写了Java大数但是没想到不需要取模,orz…给定数组ppp对一个nnn个数的排列做下列置换操作:void shuffle(int a[], int n) { int b[n]; for (int i = 0; i < n; i++) { b[i] = a[i] } for (int i = 0; i < n; i++) { a[i] = b[p[i]]; }}手动模拟两个例子,我们会发现实际上能

2020-07-30 21:13:25 200

原创 2020牛客暑期多校第五场 D - Drop Voicing(LIS)

传送门将序列想象成环状,将指针看做指向序列尾部的数,那么第二种操作实际上就是可以不断地移动指针:而第一种操作实际上就是指针逆时针相邻的第一个数和指针指向数交换位置,那么可以将一个数不断移动直到升序。例如245136245136245136,指针不断移动到333,然后移动一次111即可变成124536124536124536,然后再移动一次333即可完成因此实际上就是看某个环展开的LISLISLIS,答案就是min{n−LIS}min\{n-LIS\}min{n−LIS}#include <

2020-07-30 20:35:53 104

原创 UVA - 1642 Magical GCD(区间gcd性质)

传送门单看LRJ的思路不太能完全解决该题,还有一些点必须要想到为什么不同的gcdgcdgcd的值最多只有log(max{a[i]}))log(max\{a[i]\}))log(max{a[i]}))个?考虑gcdgcdgcd的性质,设x=p1a1∗p2a2...,y=p1b1∗p2b2...x=p_1^{a_1}*p_2^{a_2}...,y=p_1^{b_1}*p_2^{b_2}...x=p1a1​​∗p2a2​​...,y=p1b1​​∗p2b2​​...,那么gcd(x,y)=p1min(a1

2020-07-30 09:54:55 233

原创 UVA - 1393 Highways(二维前缀和+dp)

传送门首先一个显而易见的GCD性质是当且仅当gcd(abs(x1−x2),abs(y1−y2))=1gcd(abs(x1-x2),abs(y1-y2))=1gcd(abs(x1−x2),abs(y1−y2))=1时两点连线不经过其他点。我们设数组d[i][j]d[i][j]d[i][j]表示(1,1)(1,1)(1,1)到(i,j)(i,j)(i,j)之间的合法直线个数,如下图所示:根据二维前缀和的知识,得到:d[i][j]=d[i−1][j]+d[i][j−1]−d[i−1][j−1]+(gcd

2020-07-29 22:36:32 153

原创 UVA - 11440 Help Tomisu(欧拉函数)

传送门本题确实是比较难想的,需要一定的数论思维能力:首先因为M≤NM\leq NM≤N,因此N!N!N!是M!M!M!的整数倍,所有质因子都大于MMM等价于和M!M!M!互质。然后根据最大公因数的性质gcd(a,b)=gcd(b,a%b),a>bgcd(a,b)=gcd(b,a\%b),a>bgcd(a,b)=gcd(b,a%b),a>b,大于M!M!M!的数当且仅当模M!M!M!与M!M!M!互质才可以,问题转化为求M!M!M!的ϕ\phiϕ值接下来是欧拉函数比较重要的性质:

2020-07-29 21:53:42 126

原创 最小生成树Boruvka算法

Boruvka复杂度O(ElogV)O(ElogV)O(ElogV)原理根据并查集的思想,一开始所有点看做独立子集,每次遍历边找到两个集合之间连接的最短边,不断扩大集合直到所有点合并为一个集合。由于每次循环迭代时,每棵树都会合并成一棵较大的子树,因此每次循环迭代都会使子树的数量至少减少一半,因此时间复杂度非常稳定图示步骤使用数组bestbestbest记录每个集合的最短邻边的点,如果有多个权值相同的邻边,那么取下标较小的循环主体:遍历所有的边,也就是对所有的连通块找不在集合中的,到达

2020-07-29 18:36:42 3468 2

原创 HDU - 6768 The Oculus(哈希)

传送门看到斐波那契数列,以为是矩阵或者公式那种题,但是本题给出的位数太大,一时间没想到怎么写,赛后题解说是哈希才恍然大悟,看来还是自己对哈希不太熟练(还有一个重要原因是这个复杂度遍历竟然不超时,这是无论如何都想不到的)正解:令修改的那一位为kkk,则要找到这个kkk满足 A×B=C+F(k)A×B = C+F(k)A×B=C+F(k),因为斐波那契数列第几十项以后就爆long  long long~~long~long  long 了,那么

2020-07-26 20:12:44 234

原创 HDU - 6763 Total Eclipse(并查集)

传送门大意:给出一个无向带权图,每个点都有权值,现在可以每次在一个连通块中选择权值最小的点并将所有点减去这个权值,该点变为0,花费为这个最小权值,问将所有点都变为0最小的花费考虑一个简单的图:假设x<y,x<zx<y,x<zx<y,x<z,那么第一次花费xxx,y,zy,zy,z分别变为y−x,z−xy-x,z-xy−x,z−x,然后二者是相互独立的,也就是说和xxx相连的边都会变成独立的连通块,最后总的花费是y+zy+zy+z。这个过程如果写程序的话,每次连

2020-07-26 20:00:26 321 2

原创 HDU - 6755 Fibonacci Sum(斐波那契+二次剩余+二项式定理)

传送门对于斐波那契问题,一般想到的解法是递推或者矩阵快速幂,但是本题数据非常之大,怎么做都超时,临时想了一下斐波那契的公式,觉得这个浮点误差很大没法写,实际上可以写但是要用到很多知识,本题的总结收获不少(唯一难受的是代码优化能做的都做了自己写的还是超时)首先给出斐波那契数列的公式:F(n)=15[(1+52)n−(1−52)n]F(n)=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]F(n)=5​1​[(21

2020-07-25 21:20:38 371

原创 洛谷 P4555 最长双回文串(马拉车)

传送门找两个相连的字符串使得两部分都是回文字符串且总长度最长考虑马拉车算法,关键是如何找最长。我们已经求出了以每个字符为中心的最长回文半径,如何求出连续的两部分?——使用#\##作为分隔符,使用两个数组L,RL,RL,R分别表示每个’#'左边和右边的最长回文串,这样预处理之后似乎就OK了但是这样得到的答案是错误的,因为我们只求出最长的回文串,但是如果答案需要的是这个最长串的一部分呢,和另外一个最长串结合是正确答案。那么我们就分别从前向后或者从后向前再更新for(int i=3;i<=n;i+

2020-07-24 22:52:19 182

原创 HDU - 6759 Leading Robots(单调栈)

传送门Reference:https://blog.csdn.net/qq_44828887/article/details/107499606首先需要明确的三点是:加速度较大者可能当第一位置靠前者可能当第一重复的起点和加速度的机器人不可能当第一明显,加速度是衡量当第一的第一标准,位置是第二标准。按照加速度升序处理,加速度相同按起点升序处理,这样排序之后,依次入栈。每次入栈时需要考虑:如果后面的机器人起点大于栈顶起点(其加速度是肯定大于等于栈顶),那么就需要不断出栈直到不满足为止。如果栈内

2020-07-24 21:39:53 255

原创 POJ - 1988 Cube Stacking(带权并查集)

传送门好久不写带权并查集,TLE和WA了好几发也没想出来这题怎么写。设方块iii的权值为viv_ivi​,其含义为下面有多少个方块,设sis_isi​为其上面的方块数量,初始时si=1s_i=1si​=1,当我们合并两个集合的时候:在FindFindFind时更新了v1v_1v1​,在111集合合并到333集合后,因为222的祖先还没有改变,那么之后用到222时Find(2)Find(2)Find(2)即可路径压缩将222的祖先设置为333,其下正确的方块个数也会更新为v2+=v1v_2+=v_1v

2020-07-24 18:26:30 156

原创 HDU - 4821 String(哈希+滑动窗口)

传送门一开始以为怎么写都会超时,因为要以每个点为起点向后查找M∗LM*LM∗L长度的字符串,以每个字符串为起点长度LLL的子串的哈希可以预处理,但是如果向后滑动的话,所有长度为LLL的哈希值都会改变,需要重新算吗?答案是否定的,实际上我们只需考虑长度[1,L][1,L][1,L]的字符作为起点,然后每次向后滑动LLL的长度即可#include <bits/stdc++.h>#include <unordered_map>using namespace std;#defi

2020-07-24 18:04:13 157

原创 POJ - 2406 Power Strings(KMP/哈希)

传送门本题需要O(n)O(n)O(n)求字符串的最小循环节,有两种方法:哈希根据哈希的性质,如果最小循环节的长度为xxx,那么每xxx长度的字符串的哈希值是相等的,那么我们只需预处理前x,1≤x≤lenx,1 \le x \le lenx,1≤x≤len长度的哈希值以及basebasebase进制的x,1≤x≤lenx,1 \le x \le lenx,1≤x≤len次方,然后根据哈希的如下性质便可以平均lognlognlogn的复杂度计算出最小循环节:hash(x)=hash(2x)−hash(

2020-07-24 17:36:37 164

原创 HDU - 3613 Best Reward(马拉车算法)

传送门题目大意:给出一个字符串,如果分成两部分,若一部分是回文串那么贡献是该子串的贡献否则为0,问如何分可以使贡献最大考虑马拉车,首先得到以每个点为中心的最大回文半径的ppp数组,假设得到的串是这样的:#a#b#b#a#d#a#\#a\#b\#b\#a\#d\#a\##a#b#b#a#d#a#不考虑第一个#\##,显然只有两部分均是回文才能达到最大贡献,如何枚举呢?我的思路是从第三位开始枚举每一个#\##,那第三位为例,前部分分成#a#\#a\##a#,后部分为#b#b#a#d#a#\#b\#b

2020-07-24 16:34:36 196

原创 C++大数BigInt

前言一直在用板子,然后考虑到有些细节还不是很清楚,就整理一下吧。然后没有按板子来写,但是思想基本一致,因为我的板子是每四位合并成一位,也就是将大数看做一个100001000010000进制数构造和输出大数一位位地输入比较慢,因此一般采用字符串输入,然后将字符串转化为大数注意需要从后向前存,运算时从前向后运算,输出时从后向前输出const int maxn=1005;struct BigInt{ int a[maxn]; int len; BigInt(){ len=1

2020-07-24 16:18:54 2740 5

原创 2020牛客暑期多校第四场 D - Dividing Strings(思维/字符串模拟)

题目链接这个题其实挺有意思的,因为一个显然的规律是如果差超过9必须舍弃,因为一位一位地拆开结果最多是999,那么枚举长度的每个因数很容易想到,关键是第二个样例那种101991019910199,前三位和后两位是最优的,通过推理不难发现存在这样的情况拆分的长度差只能为111,且较大值一定为100...00?100...00?100...00?,最小值一定是长度少一的99...999?99...999?99...999?,那么就按这样的思路去枚举即可我自己写的代码又臭又长,debug半天找不到毛病,然后去

2020-07-24 16:06:31 257

原创 2020牛客暑期多校第四场 H - Harder Gcd Problem(思维/构造)

传送门大意:给出若干数,从中选出若干个不互质的整数对,问最多能选出多少对比赛时尝试过筛最小质因子最大质因子或者先考虑只有一个质因子的数之类的瞎搞,没搞出来,实际上这题的关键一步还是比较难想到的正解:首先不难知道n/2n/2n/2以内的数才有效,因为两个不互质的数最小公因数是222,那么我们考虑枚举n/2n/2n/2之内的每一个质数iii,找出范围内其所有的倍数,不难发现实际上只需要对这些倍数配对即可,但是这些倍数的个数可能是奇数也可能是偶数,如果是奇数的话,留哪一个呢?因为最小的质数是222,因此如

2020-07-23 20:25:17 142

原创 2020牛客暑期多校第四场 B - Basic Gcd Problem(质因数分解)

传送门仔细观察这个式子,我们发现如果每次转移到xxx的因数,会多乘一个ccc,为了使答案更大,可以通过每次消掉xxx的一个质因子,那么问题就变成了求xxx的质因数个数,如果我们对每个xxx质因数分解,时间复杂度为O(n∗n)O(n*\sqrt{n})O(n∗n​),这样会超时,那么可以使用Pollard Rho质因数分解,时间复杂度O(n∗n14)O(n*n^{\frac{1}{4}})O(n∗n41​)#include <bits/stdc++.h>#include <unor

2020-07-23 19:50:08 167

原创 2020牛客暑期多校第三场 G Operating on a Graph(并查集+启发式合并)

题目链接显然我们需要保存所有的点集,判断是否需要遍历所有的点就是看它本身是否是祖先节点。如果不是每次遍历该集合的连接点然后合并集合外的元素,合并之后既可以清空启发式合并#include <bits/stdc++.h>#include <unordered_map>using namespace std;#define fi first#define se second#define pb push_back#define ins insert#define Ve

2020-07-21 20:34:49 167

原创 2020牛客暑期多校第三场 F - Fraction Construction Problem(扩欧+最小质因子)

传送门分情况讨论:若gcd(a,b)>1gcd(a,b)>1gcd(a,b)>1,因为最简分数的唯一性,那么我们可以令d=b/gcd(a.b),f=e=1d=b/gcd(a.b),f=e=1d=b/gcd(a.b),f=e=1,那么可以解出c=a/gcd(a,b)+b/gcd(a,b)c=a/gcd(a,b)+b/gcd(a,b)c=a/gcd(a,b)+b/gcd(a,b)若gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1,因为d,f<bd,f<bd,f

2020-07-21 20:11:50 178

原创 2020牛客暑期多校第三场 E - Two Matchings(思维/dp)

题目链接首先这个匹配的含义让我思考了好久,其实这个不关心序列具体的值,而是下标,假设一开始下标是1 2 3 4 5 61~2~3~4~5~61 2 3 4 5 6,那么一个匹配可以是4 3 2 1 6 54~3~2~1~6~54 3 2 1 6 5,这样对于交换的1,41,41,4来说,pp1=1,pp4=

2020-07-21 18:37:30 161

原创 2020牛客暑期多校第三场 C - Operation Love(简单计算几何)

传送门比赛时未知原因一直卡RE,卡了十几发无可奈何,虽然是方法错了,但是给我报RE我也不知道方法对不对…算了这个题还是有必要写一下,加深对叉乘的印象首先线段长度是一定的,那么我们从起点开始依次求出每段线段的长度,记录下长度为10的线段的起点和终点,这两个起点和终点是顺时针还是逆时针得到的无需考虑,只需记住一定是起点指向终点的向量。然后就不难得到大拇指和小拇指的两个点,是在起点的前一个和终点的后一个,这两个点哪个是大拇指的点,可以求出两个线段的长度,那么短的那个就是大拇指最后就是判断大拇指的向量是否在

2020-07-21 17:58:06 152

原创 2020牛客暑期多校第三场 B - Classical String Problem(思维)

传送门挺有意思的一道题,拿来写篇博客吧我们大概模拟一下,假如只考虑将前面部分移动到后面,如nowcodernowcodernowcoder的前四位移动到最后,那么为odernowcodernowcodernowc,那么我们查询第三个位置,实际上就是查询源串的第3+43+43+4个位置;如果是移动后缀呢,比如nowcodernowcodernowcoder的后三位移动到前面dernowcodernowcodernowco,那么查询第四位时,实际上查询的是(4+5)%8−1(4+5)\%8-1(4+5)%

2020-07-21 17:40:43 147 1

原创 智算之道第二场 情报站(并查集)

题目大意现在我方已经查明,敌人通信所使用的加密方式依赖于一个长度为 nn 的数列,只要得知了这个数列中每个数的值,我方便可破解敌方的通信。通过深入敌人内部的内线人员的艰苦奋斗,我方逐渐获得了一些有用的情报,通过这些情报,整个数列正在被不断地破解。先后有mmm条情报被得知,每条情报是以下两种情况之一:情况111:知道了数列中第xxx个数的值情况222:知道了数列中第xxx个数和第yyy个数的和每得知一条情报,我方都试图破解数列中元素的值。作为情报部门核心技术人员的你,请编程实现如下功能:每次得知一条

2020-07-21 16:59:38 226

原创 EOJ Monthly 2020.7

A - 打字机 (思维)显然如果使用第二种构造,aaa和bbb是成对出现的,如果aaa的数目较多就必须再使用第一种构造,因此:aaa的数目和bbb的数目相同且aaa均在bbb的前面;或者只有aaa,就是happyhappyhappybbb的数目大于aaa的数目是deaddeaddead否则为sadsadsad#include <set>#include <map>#include <stack>#include <queue>#inclu

2020-07-19 21:42:15 116

原创 POJ - 1040 Transportation(搜索)

题目链接一开始想写背包,然后发现不太一样,因为人们在中间可以下车。然后写了搜索也就是设dfs(int  cur,int  num,int  sum)dfs(int ~~cur,int ~~num,int ~~sum)dfs(int  cur,int  num,int  sum)为当前第curcurcur站,车上的人数为numnumnum,总价钱为sumsumsum。因为按车一站一站地

2020-07-18 21:47:10 236

原创 POJ - 2083 Fractal(经典递归)

题目链接比较经典的题,但是自己没写出来,有必要反思一下。图案的递归其实比较容易的,关键是如何输出空格,如果把空格当成另外的分块,换行又没办法解决其实这里的处理方法很巧妙,先将最大范围内填充空格,使用fill()fill()fill(),然后设dfs(cur,x,y)dfs(cur,x,y)dfs(cur,x,y)代表当前嵌套层数为curcurcur时,在左上角(x,y)(x,y)(x,y)生成分形图,显然递归边界为cur==1cur==1cur==1,直接填充一个XXX,然后就是找右边,中间,左下,右

2020-07-18 21:26:17 555

原创 牛客 数码(枚举优化+数论思维)

传送门题面给定两个整数lll和rrr,对于所有满足1≤l≤x≤r≤1091 ≤ l ≤ x ≤ r ≤ 10^91≤l≤x≤r≤109 的xxx ,把xxx的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1−91-91−9每个数码出现的次数。分析首先数据范围很大,问题可以转化为求1−(l−1)1-(l-1)1−(l−1)和1−r1-r1−r的因数。肯定不能暴力求每个数的因数。首先1−n1-n1−n的因数最多有2n2\sqrt{n}2n​个,且会沿n\sqrt{n}n​两边对称分

2020-07-16 21:41:22 193

原创 洛谷 P2261 [CQOI2007]余数求和(整除分块)

传送门首先知道这个式子是不能暴力的∑i=1nk mod i\sum_{i=1}^nk~mod~i∑i=1n​k mod i根据取模的定义,我们可以化简:∑i=1nk mod i=∑i=1nk−i∗⌊ki⌋=∑i=1nk−∑i=1ni∗⌊ki⌋\sum_{i=1}^nk~mod~i=\sum_{i=1}^nk-i*⌊\frac{k}{i}⌋=\sum_{i=1}^nk-\sum_{i=1}^ni*⌊\frac{k}{i}⌋∑i=1n​k&nb

2020-07-16 15:13:47 215

原创 整除分块

问题引入求∑i=1n⌊ni⌋,n≤1014\sum_{i=1}^n⌊\frac{n}{i}⌋,n \leq 10^{14}∑i=1n​⌊in​⌋,n≤1014等价定义设f(x)f(x)f(x)为xxx的因子个数,则上述问题等价于∑i=1nf(i)\sum_{i=1}^nf(i)∑i=1n​f(i)又根据因数个数定理,设xxx的质因数分解式为x=P1a1∗P2a2∗...∗Pnanx=P_1^{a_1} *P_2^{a_2}*...*P_n^{a_n}x=P1a1​​∗P2a2​​∗...∗Pnan​

2020-07-16 10:06:15 291

原创 字符串哈希

hash函数设字符集大小为BBB,将所有字符编号为0,1,...,B−10,1,...,B-10,1,...,B−1,则一个串可以看做一个BBB进制数,以BBB进制展开计算一个长mmm的串ttt的hashhashhash值,PPP是一个大质数,减少碰撞次数Hash(t)=∑i=0m−1ti⋅Bm−i+1 mod PHash(t)=\sum_{i=0}^{m-1}{ t_i·B^{m-i+1}~mod~P}Hash(t)=∑i=0m−1​ti​⋅Bm−i+1 mod&nbsp

2020-07-15 23:20:25 287

原创 2020牛客暑期多校第二场 F - Fake Maxpooling(dp/单调队列)

传送门方法一:dp这个做法还是很神奇的。当k>1k>1k>1时,考虑一个k∗kk*kk∗k的子矩阵,我们将最大值假定为右下角的值,那么我们统计答案时,只需要统计矩阵[(k,k),(n,m)][(k,k),(n,m)][(k,k),(n,m)],而k∗kk*kk∗k的子矩阵一定可以由若干个重叠的2∗22*22∗2的矩阵构成,那么我们就只需要每次将左边和上面的最值传递到当前位置,这样最后的答案和最后的矩阵没有关系,只和统计开始的行列有关系#include <set>#in

2020-07-15 21:45:09 220

原创 2020牛客暑期多校第二场 B - Boundary(简单计算几何)

传送门题解这样说:但是我这样写了却过不了,可能是计算角度时浮点数的误差太大了,实际上主流的做法并不是从圆心角下手,而是根据三点共圆,因为必过原点,那么只需枚举另外的两个点,计算出圆心坐标,然后使用mapmapmap统计每次枚举有多少相同的圆心坐标关于三点共圆求圆心,可以参考这里#include <set>#include <map>#include <stack>#include <queue>#include <math.h>

2020-07-15 21:15:15 211

原创 2020牛客暑期多校第二场 C - Cover the Tree(思维/贪心)

传送门实际上这题只要“乱搞”就行,一开始以为大佬们说的乱搞是树链剖分什么的,这些还没开始学。然而其实就是贪心的思考一下,发现只需要叶子节点两两配对,首先从111号节点跑一下dfsdfsdfs按顺序找出叶子节点然后我们以从中间的节点为界限,左边和右边各找一对,如果找第一个和最后一个,第二个和倒数第二个…会发现如下情况不能覆盖所有边:那么我们就左边第一个和右边第一个,左边第二个和右边第二个…当然需要注意的是奇数个叶子节点需要多加一组#include <set>#include <m

2020-07-15 16:37:25 352 1

原创 方阵(gcd+找规律)

题目描述广场上的小朋友们排成了整齐的方阵。具体来说,我们可以把每个小朋友看做是一个点,那么小朋友们就形成了 n×nn\times nn×n 的点阵。方阵中,小朋友AAA和小朋友 BBB 互相可以看见,当且仅当二人之间的连线不经过别的小朋友,且他们之间的距离不超过 kkk (因为太远就看不见了)。我们想知道有多少对小朋友互相可以看见。(A,B)(A,B)(A,B) 与 (B,A)(B,A)(B,A) 算同一对。例如n=2,k=2n=2,k=2n=2,k=2时答案为666(距离为111的有444对,距离为2

2020-07-15 16:03:56 321

原创 Codeforces Round #655 (Div. 2) C. Omkar and Baseball(思维)

传送门前言constructive algorithms——一生之敌首先如果是有序的,那么操作次数为0如果元素是错位的,那么肯定一次就能归位,关键是如果是有的错位有的没错位,比如"1 5 3 4 2"。这种,第一次必须要打乱位置,这个肯定可以操作,比如变成"3 1 4 5 2",然后一次就成功了需要注意的是不要漏掉有一段连续错位的情况,也是操作一次即可#include <set>#include <map>#include <stack>#includ

2020-07-14 19:50:02 119

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关注的人

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