
悟已往之不谏
文章平均质量分 64
闲置25
solego
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 2104. 子数组范围和
2022.03.04题意:给定一个长度为nnn的数组aaa,求其所有连续子数组的(最大值和最小值差)的和,即求∑i=1n∑j=in(max{ai,...,aj}−min{ai,...,aj})\sum_{i=1}^{n}\sum_{j=i}^n( max\{a_i,...,a_j\}-min\{a_i,...,a_j\})∑i=1n∑j=in(max{ai,...,aj}−min{ai,...,aj})题解:暴力两层forforfor循环更新maxmaxmax,minminmin即原创 2022-03-04 13:00:33 · 154 阅读 · 2 评论 -
hdu2136 素因子筛
开始是把本题当作素数筛然后加上判断因子就行了,发现了TLE。只能另寻他路了想了很久发现了可以和素数筛联系到的方法,用素数筛置值即可,由于我们求的是素因子在素数表的位置,那么就可以打表了。我们可以先不管因子与否,先将某素数(假设为a)的所有倍数(大于1)全部置为该素数的位置值,然后循环让接下来的其他素数将他们的倍数置为他们的位置值,这样到最后越大的数也就拥有相应的正确的位置值了...原创 2019-04-18 14:52:57 · 155 阅读 · 0 评论 -
2020牛客多校第四场 H. Harder Gcd Problem
题意: 求nnn以内,gcd(xi,yi)>1gcd(x_i,y_i)>1gcd(xi,yi)>1的数对个数,并输出。其中[1,n][1,n][1,n]中每个数只能被用一次。数据范围: n≤2×105n\leq 2\times 10^5n≤2×105题解:筛出[1,n][1,n][1,n]中每个数的最大质因子,可以知道如果一个prime×2>nprime\times 2>nprime×2>n必然配对数。从大到小遍历每个大于222的质数ppp若以ppp作为原创 2020-07-20 18:21:13 · 261 阅读 · 0 评论 -
Atcoder Beginner Contest 164 D
题意: 给定一个只包含数字字符且不包含000字符的字符串SSS,问有子串组成的十位数是2019的倍数。数据范围:∣S∣≤2000000|S|\leq2000000∣S∣≤2000000题解:代码:...原创 2020-04-27 21:35:43 · 227 阅读 · 0 评论 -
字符串哈希
字符串哈希就是将一个字符串映射成一个P进制的数,然后用前缀记录下来,当你查询某个字符串的哈希值时,只要用前缀相减就可以了。通常P取131或者13331来尽可能减少冲突,同时用unsigned long long值过大自动溢出避免手动取模eg:s[] = "ABACBDAB", h是前缀和,v是字符的值h[1] = v[A], h[2] = h[1] * P + v[B],h[3] = h[...原创 2019-12-08 12:05:54 · 269 阅读 · 0 评论 -
Namomo Test Round 2 C 序列
题意: 给定一个长度为nnn的序列aaa,每次可以选择[l,r][l,r][l,r]的区间将a[l,r]a[l,r]a[l,r]都减111,代价为(r−l+1)2(r-l+1)^2(r−l+1)2,问在将整个序列都变为000的最小操作数下的最小代价和最大代价分别是多少。题解: 先差分序列aaa,最小操作数一定是∑i=1n+1ai−ai−1\sum_{i=1}^{n+1}a_i-a_{i-1}∑i=1n+1ai−ai−1。对于aia_iai,若小于等于ai−1a_{i-1}ai−1,必然可以和a原创 2020-07-07 14:40:50 · 272 阅读 · 0 评论 -
HDU3336 Count the string(kmp)
题意:给一个字符串及其长度,问你该字符串的每个前缀在该字符串中共有多少个题解:kmp的next数组含义:next[i]表示在1~i中前缀和后缀的最大长度。举例:abababs : abababnext : 001234a: 2 + 1ab: 2 + 1aba: 1 + 1abab: 1 + 1ababa: 0 + 1ababab: 0 + 1其中每个...原创 2019-10-22 20:07:32 · 100 阅读 · 0 评论 -
LeetCode 87. 扰乱字符串
题意:给定字符串s1s_1s1和s2s_2s2,问是否可以操作变换s1s_1s1变成s2s_2s2具体操作原创 2022-03-04 17:37:54 · 439 阅读 · 0 评论 -
牛客编程巅峰赛S2第10场 XOR和
题意: 给定nnn,问∑i=1n(i⊕(i−1))\sum_{i=1}^n(i\oplus(i-1))∑i=1n(i⊕(i−1))。数据范围:1≤n≤1091\leq n\leq 10^91≤n≤109题解:考虑一个数xxx和其减111后的x−1x-1x−1对于偶数:x=100100,x−1=100011,x⊕(x−1)=000111x=100100,x-1=100011, x\oplus(x-1)=000111x=100100,x−1=100011,x⊕(x−1)=000111对于奇数:x=原创 2020-12-19 17:14:52 · 114 阅读 · 1 评论 -
Atcoder Beginner Contest 165题解
A:A:A:题解: 给定l,r,kl,r,kl,r,k,问在[l,r][l,r][l,r]内kkk的倍数的个数。即b/k−(a−1)/kb/k-(a-1)/kb/k−(a−1)/k代码:#include<bits/stdc++.h>using namespace std;void solve() { int k; int a, b; cin >> k &g...原创 2020-05-03 02:03:47 · 433 阅读 · 0 评论 -
Codeforces 1370 E
题意: 给定两个010101序列SSS和TTT,可以选择SSS中的子序列sss进行一次顺时针操作,即:ts[1]=s[0],ts[2]=s[1],...,ts[s.size()−1]=s[s.size()−2],ts[0]=ts[s.size()−1]ts[1] = s[0], ts[2]=s[1],...,ts[s.size()-1]=s[s.size()-2], ts[0]=ts[s.size()-1]ts[1]=s[0],ts[2]=s[1],...,ts[s.size()−1]=s[s.size(原创 2020-06-23 16:16:52 · 191 阅读 · 0 评论 -
计数dp
给一个数n(n <= 1000),问将这个n分解成n1,n2,n3...nk的解法有多少(k >= 1 且 n1 >= n2 >= n3 ...>= nk >= 1)由于答案可能过大, 因此答案对1e9+7取模1. 背包问题解决,这里可看作,结果恰好为n的,小于n的正整数有无数个的背包问题f[i][j]表示在1~i中选择,结果恰好是j的方案数...原创 2019-09-20 12:02:41 · 161 阅读 · 0 评论 -
牛客七夕赛 D.拜托了,牛老师
题意: 给定nnn,将nnn分解成kkk个不同因数的乘积,问kkk个数的最小和为多少数据范围:2≤n≤1062\leq n \leq 10^62≤n≤106题解:倒序枚举将xxx分解成iii和xi\frac{x}{i}ix,即每次分解的xxx从nnn以内的最大iii倍数开始,依次递减iii。这样可以保证对于重复的数字分解不会被计入。如n=16n=16n=16①f[2]=2f[2] = 2f[2]=2②f[6]=5,f[3]=3f[6] = 5,f[3] = 3f[6]=5,f[3]=3③f原创 2020-08-25 23:29:20 · 215 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼
题面: 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。“探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他...原创 2020-03-05 22:04:35 · 178 阅读 · 1 评论 -
高精度乘法(仅整数位)
All in code.//实现任意位的大整数相乘,修改N和M即可 #include<stdio.h>#include<string.h>const int N = 10010;const int M = 2 * 10010;char sn1[N], sn2[N];int n1[N], n2[N], res[N];void big_mul(in...原创 2019-07-10 02:29:12 · 185 阅读 · 0 评论 -
HDU6703 权值线段树
题意: 给定一个长度为nnn的排列qqq,即nnn个元素值都属于1∼n1 \sim n1∼n,且nnn个元素互不相同。修改操作:将q[pos]q[pos]q[pos]加上1e71e71e7。查询操作:找到与q[1∼r]q[1 \sim r]q[1∼r]都不相同的且不小于kkk的最小值。题解: 通过分析可得,查询的答案最大为n+1n+1n+1,即我们每次只需要从[k,n+1][k,n+1][k,...原创 2020-03-12 18:14:00 · 181 阅读 · 0 评论 -
拓扑排序
传送门:https://blog.youkuaiyun.com/qq_41713256/article/details/80805338转载 2019-07-24 09:58:09 · 91 阅读 · 0 评论 -
牛客国庆集训派对day5 C.Great Deceiver
题意: 给定nnn和kkk,问在kkk进制和−k-k−k进制下值相同的数xxx的个数,x≤nx\leq nx≤n。数据范围:1≤n≤1015,2≤k≤10001\leq n\leq 10^{15}, 2\leq k\leq 10001≤n≤1015,2≤k≤1000题解: 转换成kkk进制考虑下,发现只有当每个奇数位都为000,即不会产生负数影响时的数才是合法的数,因此考虑转换成kkk进制进行数位dpdpdp,限制奇数位为000即可。代码:#include<iostream>#incl原创 2020-10-05 18:07:29 · 427 阅读 · 1 评论 -
牛客练习赛69 D
题意: 给定nnn个数,从中选择kkk个数(k∈[1,n])(k\in[1,n])(k∈[1,n])个数加上ddd,问选择kkk个数的概率,概率对998244353998244353998244353取模,nnn个数的排序自行选择,使得概率越大越好。数据范围:1≤n≤5000,ai,d≤1091\leq n\leq 5000, a_i,d\leq 10^91≤n≤5000,ai,d≤109题解: 考虑dpdpdp,使得概率越大那么就是按照升序排序f[i][j][0]f[i][j][0]f[i][j原创 2020-09-12 11:39:40 · 185 阅读 · 0 评论 -
LeetCode 798. 得分最高的最小轮调
题意:给定一个长度为nnn的数组aaa,可以移动kkk次,问使得最终得到的数组的ai≤ia_i\leq iai≤i的kkk是多大,如果答案有多个,返回最小的kkk。数据范围:1≤n≤105,0≤ai<n1\leq n\leq 10^5, 0\leq a_i<n1≤n≤105,0≤ai<n题解:考虑可以使得每个元素移动后满足ai≤ia_i\leq iai≤i的kkk的取值区间,对于原数组aaa,每个元素必然要移动到[ai,n)[a_i,n)[ai,n)才能使得ai≤ia_i\原创 2022-03-09 10:07:45 · 424 阅读 · 1 评论 -
欧拉函数及其快速打表
超棒的欧拉函数讲解:https://blog.youkuaiyun.com/ydd97/article/details/47805419下面的大部分都是借鉴这位大佬的,加了点自己的理解。我就比较懒,直接贴代码了。(讲解都在注释中)/*欧拉函数的作用:用于求小于n的与n互质数的个数 欧拉函数的公式: φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…....原创 2019-07-15 12:50:47 · 666 阅读 · 0 评论 -
ABC 157 E(线段树模板)
题意/题解: 给定一个字符串,1.1.1.修改某个字符串中的某个字符,2.2.2.查询字符串某个区间中不同字符的个数。26棵线段树套板子即可。又是一道直接区修问题,还不太熟悉这类的具体修改,其实还可以加个lazylazylazy标记,不过查询并不多直接做就好了,由于每次修改只涉及两个字符所以只需要修这两棵线段树即可。#include<bits/stdc++.h>using na...原创 2020-03-03 23:13:42 · 618 阅读 · 0 评论 -
NC20811 蓝魔法师
题意: 给定一棵nnn个点的树,问有多少种删边方案使得删边后每个连通块大小不大于kkk,两种方案不同当且仅当存在一条边在一个方案中被删除,而在另一个方案中未被删除,答案对998244353998244353998244353取模数据范围:1≤n,k≤20001 \leq n,k \leq 20001≤n,k≤2000题解 :f[root][j]f[root][j]f[root][j]表示以rootrootroot为根,连通块的大小为jjj的方案数。考虑rootrootroot的一个儿子sonsons原创 2020-08-05 15:24:00 · 227 阅读 · 1 评论 -
归并排序
归并排序,简而言之就是将两个内部顺序已经确定的集合进行合并,使得合并后的集合仍然有序那么对于一个无序集合,就需将其递归到最底层从底开始回归上一层,这样不停地将每个集合内部归并而有序。那么对于一个集合的逆序对该如何求呢?比如集合{5,4,3,2,1}逆序对为4+3+2+1 = 10那么对于归并排序的求解过程:第一层:1.1:5 4 31.2:2 1第二层:2.1...原创 2019-12-07 18:04:35 · 138 阅读 · 0 评论 -
2020牛客多校第八场 G.Game SET
题意: 太长了,懒得解释了。题解: 暴力模拟即可,官方题解给定的是有相关证明在21321^3213内一定可以找到解,所以直接暴力冲。但是如果极端情况的话还是可能被卡的可能,毕竟100010001000组,所以感觉还是可能TTT的。就直接模拟前两个444个模块的是否相同,出现了∗*∗该模块的三个直接okokok,如果前两个某个模块不是∗*∗且相同,则第三个模块也必须和他们相同。或者前两者不同,则第三个和前两者也要都不同,总而言之,模拟就完事了。代码:#include<bits/stdc++.h原创 2020-08-04 16:24:51 · 255 阅读 · 0 评论 -
C++14后如何读入一行带空格的一行字符串
前文:在c++11标准及之前,仍可以使用gets读入,但是c++14正式删除了gets这一不安全的读入。由于读入对空格的自动忽略,所以需要其他读入函数来处理带空格的字符串。具体读入方式:一、字符数组A、std::cin.getline(str, size)#include<iostream>int main() { char str[100]; std::cin.getline(str, 100); std::cout << str << "\n";原创 2021-03-03 13:31:26 · 724 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) B Young Explorers
题意: nnn个探险家,每个人有相应的缺乏经验等级,一个人可以去探险当且仅当他的队伍中人数不少于他的缺乏经验等级,现在让你最大化探险组数。题解: 考虑让每个组内人尽可能少,那么他们可以分的组数将会尽可能大。对于缺乏经验等级较低的人,他们可以和缺乏经验等级较高的人组队,这样只会使得缺乏经验等级高的人尽可能组队成功。因此排序后将缺乏经验等级相同的尽可能放一块,如果不能则将其加入多出的人数队列中,他们可以和缺乏经验等级更高的人组队。代码:#include<bits/stdc++.h>using原创 2020-05-17 00:45:35 · 147 阅读 · 0 评论 -
Codeforces Round #597 (Div. 2) A
题意:给你两个数a和b(1 <= a, b <= 1e4),i-a>=0 且i-a为白,则i为白,i-b>=0且i-b为白,则i为白,否则为黑。其中初始化0为白。问你是否有无穷个黑。题解:对这个问题,我们只需要简化:如果并没有无限个黑,必然是存在某个数后,之后的所有数都是白色那么必然有一个长度为b - a + 1的区间,区间中的所有数都是白色...原创 2019-12-22 23:09:40 · 182 阅读 · 1 评论 -
2020牛客多校第十场 E. Game
题解:实际上从左往右先把所有能推到左边的都尽量平分到到这一部分去,即前缀和sumsumsum平分到l,rl,rl,r ,然后将多余的rrr块分给rrr个即可。考虑到第iii块可能比第i−1i-1i−1块小,这时候由于取平均值,故不会更新答案,而当iii块比i−1i-1i−1块大,此时可能会更新答案。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;in原创 2020-08-10 17:26:34 · 316 阅读 · 0 评论 -
hdu2072
作为一名初学者,必须能经得住前人们的成果诱惑。比如本题,开始没理解题意很苦恼,于是去搜博客,发现大多都是使用C++的容器解决的,这个东西当然是很棒的,但是就像以小学生的思维去看待小学题目一样,可能我们只能暴力枚举,而随着不断的学习,之后的定理可以轻松解决这些。所以作为个人的入门语言,事实上是很喜欢C的。这门语言并没有给你很多函数,大部分你都需要自我理解手敲出来,不像java有点类似于仓库一...原创 2019-04-03 20:32:38 · 299 阅读 · 0 评论 -
Educational Codeforces Round 98 (Rated for Div. 2) B. Toy Blocks
题意: 给定nnn个盒子,每个盒子有aia_iai个物品,问你至少需要往这些盒子中添加多少个物品,才能使得无论选择哪一个盒子iii,将aia_iai分给剩余n−1n-1n−1个盒子,剩余n−1n-1n−1个盒子中的物品数都一样。数据范围:2≤n≤105,0≤ai≤1092\leq n\leq 10^5, 0\leq a_i\leq 10^92≤n≤105,0≤ai≤109题解:考虑选择第iii个盒子,剩下n−1n-1n−1个盒子中物品最多的盒子为jjj,分完第iii个盒子后每个盒子物品数量为av原创 2020-11-20 10:30:15 · 454 阅读 · 0 评论 -
UVA11235 RMQ模板
先占坑,日后来补贴个代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 1e5 + 10;int a[N];int val[N], cnt[N], num[N], ...原创 2019-10-12 00:11:35 · 139 阅读 · 0 评论 -
HDU6703 Fishing Master
比赛的时候想的是尽量先炖鱼,果然还是赛后牛逼,反应过来无论怎样总时间内一定有所有的炖鱼时间,所以只需要尽量缩减我们的钓鱼时间即可。一、在炖鱼时间内可以把所有鱼都钓上来,那ans = k + t[1~n]二、不能在炖鱼时间内把所有鱼都钓上来即每次钓一条鱼上来后,鱼都会煮过。如钓鱼时间为2,炖鱼时间为1,钓鱼上来后,炖的鱼煮过了1分钟。而钓鱼时间为2,炖鱼时间为3,钓第一条鱼上来后...原创 2019-08-24 20:12:50 · 280 阅读 · 0 评论 -
ZOJ1610 线段树区间计数
(这题和之前的某道区间建立正好相反,给整懵了。)题意: 给定一个长为800080008000的区间,每次染色一定长度的区间,最后问你每种颜色的区间有多少段。题解: 注意必须建800080008000的树,然后模拟下递归过程(蒟蒻只会这么推)改下查询操作。代码:#include<cstdio>#include<cstring>#include<algori...原创 2020-03-04 19:46:22 · 273 阅读 · 0 评论 -
HDU1698 线段树修改区间(SB行为++)
整段修改刚开始还求前后两值的差,卡了一下发现直接改就行了。题意和题解: 线段树板子区间修改区间查询,由于本题查一整段所以无需查询操作代码://修改区间为同一个值 #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 1e5 ...原创 2020-03-03 15:37:49 · 144 阅读 · 0 评论 -
牛客练习赛69 C
题意: 给定nnn点mmm边,让你确定一个大小为nnn的排列使得∑i=2ndis(ai−1,ai)\sum_{i=2}^n dis(a_{i-1},a_i)∑i=2ndis(ai−1,ai)最大。数据范围:1≤m≤5×105,1≤u,v≤n,1≤w≤1091\leq m\leq 5\times 10^5, 1\leq u,v\leq n, 1\leq w\leq 10^91≤m≤5×105,1≤u,v≤n,1≤w≤109,保证图是联通的题解: 本题考虑一个问题,即要想求图中两点的所有路径中的最大值原创 2020-09-12 09:43:33 · 219 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) C - Count Triangles
题意: 给定A,B,C,DA,B,C,DA,B,C,D,要求三角形三边x∈[A,B],y∈[B,C],z∈[C,D]x\in[A,B],y\in[B,C],z\in[C,D]x∈[A,B],y∈[B,C],z∈[C,D],求三角形的个数。题解:枚举x+yx+yx+y,可以得知其范围在[A+B,B+C][A+B,B+C][A+B,B+C]。对于x+yx+yx+y的组合情况,即枚举xxx最小和最大的情况。xminxminxmin对应ymaxymaxymax,xmin=max(x+y−C,A)xmin=m原创 2020-05-17 11:51:31 · 151 阅读 · 0 评论 -
扩展Lucas定理
本介绍主要借鉴于:打在公屏上的良心题解及crtcrtcrt,故以转载形式发出。题意: 给定n,m,pn,m,pn,m,p,求Cnmmod pC_n^m\mod pCnmmodp,其中1≤m≤n≤1018,2≤p≤1061\leq m\leq n\leq 10^{18},2\leq p\leq 10^61≤m≤n≤1018,2≤p≤106。题解:目标:求Cnmmod pC_n^m\mod pCnmmodp对ppp分解质因数:p=p1α1p2α2p3α3…p=p_1^{\alpha_1}p_2转载 2020-07-08 02:48:45 · 406 阅读 · 1 评论 -
NIM游戏——博弈
这里默认两方均采取最优策略1. 尼姆博弈n堆石子,每堆的数量a1,a2,a3...an,一方取完后石子个数为0则该方获胜,问先手是否必胜if ans = a1^a2^a3^...^an ≠ 0 先手必胜else 先手必输延伸1:在此问基础上添加一个集合,集合内的数字是每次操作可取的石子个数,每次从一堆中取,最后无法取者判输对每堆石子算得其sg函数,sg函数异或后不为0...原创 2019-08-17 16:02:05 · 286 阅读 · 0 评论 -
hdu2061 注意格式
本题是道水题,简单的计算GPA。不过通过处理这并不是重点,多次提交后WA到绝望,不得不打开了Discuss,发现了两个问题第一个是数据类型,题目并没讲清楚学分和成绩的数据类型,本题的答案默认是浮点型,故整型都算错,尽管我们可能输出的是两位浮点型第二个是换行符,开始是很大意了,没注意到两组输出结果中其实也是有换行符的,按照正常思维,输出结果后带换行符,然后在每个测试组后再加换行符即可,但...原创 2019-03-19 21:22:08 · 277 阅读 · 0 评论