05 2020 档案
摘要:传送啊大哥申请付款回答 \(先把b数组排序,然后从最大的数看起\) \(一、如果是质数,那么这个数不可能是a数组的,否则必然会生成一个更大的质数。\) \(因此,找到生成它的那个数,加入答案\) \(二、如果是和数,那么这个数一定是a数组的,否则比如有一个更大的和数生成它\) \(因此,把他加入答案
阅读全文
摘要:传送门哈哈传递哈斯防火墙 \(因为图联通,我们任取一点开始遍历\) \(比如从点1开始,那么假设1涂色\) \(那么和1相邻的不上色,相邻的相邻上色\) \(但这样答案可能超过n/2.\) \(那我们对颜色取反,上色的都不上色,不上色的都上色\) \(效果相同,但一定小于n/2了\) #includ
阅读全文
摘要:传送门 \(用栈的话很简单\) \(因为是一层一层for套下去的,所以一旦出现for循环我们就让q[++top]=循环次数\) \(那么q数组表示循环次数,p数组表示当前循环的贡献\) \(每当出现end操作时,当前循环的贡献就要给上一次循环\) \(也就是p[top-1]+=p[top]*q[to
阅读全文
摘要:传送门 \(其实多少能想到一点\) \(为什么这个图不满足?因为1-2和2-3始终相等\) \(也就是说要找出相邻的两条边a和b,使得所有叶子节点间的简单路径\) \(如果经过a,那么也会经过b,这样边权一定相等,就是NO\) \(那么怎样能说存在这样的两条边呢?\) \(只要有入度为2的点就可以。
阅读全文
摘要:\(说实话开始我也没想到这是状压.....\) \(但是写完后发现这确实是正解\) \(发现每一个字符串只能有一次不匹配的机会\) \(那么我们就状压所有字符串(最多10位)的匹配状态\) $0表示目前都符合,1表示目前有1个不符合$ \(然后每次枚举第i位要放置的字符,看看是否能从之前的状态转移过
阅读全文
摘要:$对于easy版本$ $直接枚举删掉的区间[l,r]判断是否存在t子串$ $这个很简单很暴力$
阅读全文
摘要:"传送门吵闹的卡轨服务哈尔克积分" $突破口是n using namespace std; int n,m,ans,dp[8][8]; int main() { cin n m; for(int i=1;i l r; dp[l][r]=dp[r][l]=1; } if(n<=6) cout<<m;
阅读全文
摘要:"传送门传送门传送门" $说实话,不看题解,怎么也想不到生成树啊$ $不过其实就是个并查集。$ $对边从小到大排序,对q从小到大排序$ $然后对于每一次的q,把满足条件的边合并$ $于是当两个连通块合并时,我们加上num_{连通块1} num_{连通块2}$ $num表示连通块的节点数$
阅读全文
摘要:$算出a和b的交集q,a和c的交集w$ $再算出q和w的交集e$ $如果q+w e是a的面积,那么a就被完全覆盖了$
阅读全文
摘要:$其实有很多种构造方法,先说一下我的$ $因为有k个子串是合法表达式,所以我们先在最前面构造$ $k 1个(),然后后面都放(,放完了就结束,因为后面都是)$ $所以大概构造后是这样的()()()()()....(((((((((....)))))))))$ $至于前面k 1个就两个两个判断,如果不
阅读全文
摘要:$\color{Red}题目大意$ $给出一个长n序列,要求每次选出一个长k的子序列,使得$ $子序列的元素和最大且字典序最小,问第pos个元素是多少.$ $\color{orange}对于easy版本,我们可以很暴力的写$ $直接把元素按照大小关系存进vector$ $每次选取最大的元素,如果有多
阅读全文
摘要:$找了很多题解都是找规律,但是我觉得规律并不好找啊$ $当n只有1个质因数,答案为这个质因数,这个很显然$ $当n多于两个质因数,随便取其中两个x,y$ $gcd(x,y)=1$ $由于从1出发,每次可以前进x,y格,也可以后退x,y格$ $所以从1能到的地方是ax+by=c$ $而gcd(a,b)
阅读全文
摘要:$这道题想了很久......菜是原罪啊$ $大概思路是先把所有区间的点染色一遍$ $然后一个点一个点判断,如果不符合题意就删去一条覆盖这个点的线段$ $删去哪一个呢?当然是删掉区间右端点最右边的那个。因为前面的点不用管了,已经符合要求$ $然后如果能覆盖到后面的点,那么对答案是不利的,应该删去$ $
阅读全文
摘要:$\colorbox{green}{\color{Red}\Huge{为什么不会做啊啊啊我好菜啊啊啊啊啊}}$ "传送门呢大门校门中门无敌们杀必死大大大" $多模拟几个样例就会发现$ $f(x,y)运算前后,如果x有的某一位y也有,那么减y后消去$ $如果x某没有的某一位y有,那么减y后消去。$ $
阅读全文
摘要:"传送门传送传送值啊都数时" $首先,构造千万不要想复杂了,尽量往简单的想$ $我们构造的a[i]应该互不相同最好,因为相同不好选择$ $比其中一个大就比很多个大,不好确定排名$ $\color{Red}{既然如此,我就规定最终a[i]取[1,n]}$ $这样一来根就被唯一确定是,a[root]=c
阅读全文
摘要:$\color{Orange}{如果这篇文章有帮到你,留个言让博主开心一下吧}$~$讲的可能不是很好$ $\color{Red}{ 分割 }$ $让我们一步一步慢慢来$ $举个例子,当排列长度是n时$ $考虑x和y作为某对[l,r]中的最大值和最小值,有多少排列包含这对?$ $根据题意r l=x y
阅读全文
摘要:"永久的帅气的无敌的传送门大门校门神门命运石之门" $考虑枚举左半区间的点l$ $试图在右半区间找一个最小的点r$ $使得吃掉[l+1,r 1]的奶酪后两种奶酪数量相等$ $\color{Red}{于是我们可以预处理右半区间中两种奶酪的差值位置}$ $比如r[2]=6,表示在区间[6,2 n]中1奶
阅读全文
摘要:$本文思路完全来源于$ "starlet_kiss" $\color{Red}{ 分割线 }$ $开始a,b,x=abs(a b)$ $现在要求\pm1\pm2\pm3....\pm{n}=x$ $一开始我们一直加直到\color{Red}{超过x时停下}$ $1+2+3...+n=x+y(刚好超过
阅读全文
摘要:"传送门开启了传送门吃" $其实要发现只需要考虑[1,k]这个循环节$ $开始我们想让数字最小那么[1,k]就和目标串相等就好了$ $然后我们从目标串的k+1位开始判断$ $Ⅰ.若相等,无事发生,继续判断下一个字母$ $Ⅱ.若比目标串大,那么继续判断下去也一定大,break$ $Ⅲ.若比目标串小,那
阅读全文
摘要:"传送门呢哥们到达时间哦i附件" $其实题目的意思很明显要用并查集$ $但是怎么并呢?当两个单词中有同一个字母就可以并起来$ $但是如果枚举单词的话复杂度是O(n^2)以上$ $那么其实要并的只有26个小写字母$ $因为出现在同一个单词的字母就是一个集合,直接合并$ $如果不很清晰,就这么想吧。$
阅读全文
摘要:"传送门大门小门中门啊大家我" $对于给定的r,b$ $为了方便,设r using namespace std; typedef long long ll; ll r,b,k; ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); } int main() { i
阅读全文
摘要:"传送门的传说决赛" $贪心的想尽可能把前面的1变成0$ $那我们记录每个0的位置,每次遇到1就和后面最近的一个0交换$ $怎么交换?冒泡排序?我们发现我们要交换的1和0间都是1$ $所以直接swap()交换就行了,效果一样$ $注意k开long\ long$
阅读全文
摘要:"传送门呢大门校门中美呢" $亏了这是1700分的贪心......完全是模拟嘛......$ $贪心思路还是很显然的,维护一个当前要放的板子数$ $每次选取能到的最远地方放板子,如果选那个地方导致板子放不下$ $那就选一个尽量远的地方$ $正确性是显然的,因为我们可以跳[1,d]间任意数目步子$
阅读全文
摘要:"通往胜利(题目)的传送门" $这题其实就是一个拓扑排序啦$~~~ $对于一个三元组(q,w,e)$ $我们连一条q w,q e的边,然后对w和e也这样连边$ $那么统计入度(也就是被几个三元组包含)$ $发现入度为1的点只有两个(一头一尾)$ $举个例子一个排列$ 排列:2 3 4 5 6 1 入
阅读全文
摘要:"传动门前往传送门" $看完题解后觉得自己好蠢......$ $相信大部分人会先拿样例做实验$ $可以从前往后贪心,第一个位置只可以和后面的第一个不同类的数交换$ $基于这个,我们可以写出一个O(n^2)的算法$ $因为找后面第一个不同类的数和找到后进行冒泡交换的时间都难以优化!!$ $\color
阅读全文
摘要:"传送门" $背包其实万变不离其宗$ $普通的转移时(v表示体积w表示价值)$ $$dp[i]=max(dp[i],dp[i v]+w)$$ $现在情况稍微有点不同,我们需要保留dp[i]的前k优解,同样也保留了dp[i v]的前k优解$ $可以这样简单的表示$ $其实总共可以从dp[i]的前k优解
阅读全文
摘要:"永久打开的传送门" $\color{Red}{ 分割线 }$ $感觉是非常巧妙的DP。。。。$ $先按照区间右端点进行排序$ $f[i]表示前i个区间中,最后一个区间选的i,最大有多少草$ $f[i]=max(f[i 1],f[j]+a[i].tail a[i].head+1);//j表示尾小于当
阅读全文
摘要:$这题感觉自己就是瞎凑......$ $首先n using namespace std; int n,t,vis[1009]; int main() { cin t; while(t ) { memset(vis,0,sizeof(vis)); cin n; if(n<=3) cout<< 1; e
阅读全文
摘要:$注意:本博客只作为模板,不适合刚学manacher的人看$ $几个关键点大概可以表示成这样$ $ct p[ct] j ct i ct+p[ct]$ $因为p[i] using namespace std; const int maxn=51000100; int n,p[maxn],ans; ch
阅读全文
摘要:$\colorbox{Orange}{贪心策略:每次挑选字典序最大的删除.}$ $那为什么呢?$ $回顾一下题目,当且仅当有比自己小1的字母在附近才能把自己删去$ $\color{Red}{字典序最大的字母永远不会作为其他字母的辅助字母删去其他字母}$ $比如当前最大字典序字母是d,因为d只能协助e
阅读全文
摘要:$\color{Red}{一个数字能够分解成有限个素数的乘积 —— 唯一分解定理.}$ 应用之一(遇到的题目) "题目传送门" $描述:把1000以内的数分成11组,每组间的数不互质$ $方案:其实就是每组有公共因子,这个因子就是31以前的11个质数,因为31 31=961,再大就超过1000了。$
阅读全文
摘要:"永久打开的传送门" $\color{Pink}{ 分割 }$ $n最大有2e5,那么暴力一定不行,找规律$ $我们发现第i位的字符一定和第i+k位相等(周期)$ $第i位的字符一定和第n i+1位字符相等(回文)$ $那么每次把i,i+k,n i+1合并到一个集合(并查集)$ $最后一定是分成了若
阅读全文
摘要:"传送门" $看了一下网上都没什么题解,自己写一篇吧,对你有帮助的话留个言吧~$ $\color{Orange}{ 分割 }$ $\color{Green}{一、分析问题}$ $对于给定的n和数组a,其实是有循环存在的$ $比如[0,n)模n后余数必定是[0,n)$ $[n,2n)模n后余数必定是[
阅读全文
摘要:"永久打开的传送门" $这次总算没有写砸........$ $设f[i][j]为上一次吃的i物品状态为j的最大收益$ $那么我们就暴力枚举所有状态i,然后在当前状态找出一个没吃的食物j,再去找一个吃过的食物q$ $$那么dp[j][i+(1 using namespace std; typedef
阅读全文
摘要:$给出数n,a,b$ $在[1,n]区间内随机选数,选出的数被a,b除后同余的概率$ $这题的精度问题真的是烦炸了~$ $设最小公倍数lcm=a b/gcd(a,b)$ $所以在区间[k lcm,k lcm+min(a,b) 1]都是同余的(k是常数)$ $并且在区间[1,min(a,b) 1]也是
阅读全文
摘要:$n元,买塑料杯子a元,买玻璃杯子b元,但玻璃杯子用完后可以卖c元$ $求最多买的杯子.$ $ 分割 $ $因为塑料杯子固定,我们先确定买多少玻璃杯子.$ $很明显当n =b(至少购买一次)且(b c)\frac{n b}{b c}$$ $因为算的时候向下取整,所以我们实际买的玻璃杯是\frac{n
阅读全文
摘要:$数学题,式子并不难推,但边界是真的烦$ $\color{Red}{Ⅰ.其实可以发现,当m =n时,每次都可以粮食补到n,所以一定是在第n天消耗完毕}$ $\color{Purple}{Ⅱ.当n m时,前m天每次粮食都补到n}$ $设从m+1天开始,需要mid天消耗完毕$ $因为每天都可以加m粮食,
阅读全文
摘要:$整体思路没错,但是我貌似太麻烦了.......$ $分情况讨论$ $Ⅰ.coin和diamond各选一个物品,这个简单$ $Ⅱ.在coin中选两个或者在diamond选两个$ $开始我想着枚举一个物品找另一个物品肯定超时$ $那我们可以直接预处理sumn[i]表示花费i时的最大收益,但是这样做可能
阅读全文
摘要:$考虑的时候,千万不能按照题目意思一组一组去模拟$ $要发现每组的最后一个数一定大于下一组的最后一个数$ $那我们可以把a中的数一个一个填充到vec中$
阅读全文
摘要:$考虑每个区域可行的区间$ $x[1]=s[1]\ \ y[1]=s[1]+g[1]$ $x[i]=max(x[i 1] 1,s[i]),y[i]=min(y[i 1]+1,s[i]+g[i])$ $然后这样能确保每一个区间都满足前面的区间,但不意味前面的区间满足后面的区间$ $倒过来也做一次,之后
阅读全文
摘要:$\color{Red}{网上的题解都是投机取巧啊,虽然也没错}$ $Ⅰ.先说一下投机取巧的方法$ $自己写几个例子会发现k很小的时候满足条件的n就变得很大$ $所以我们直接暴力从1判断到n,如果不满足就跳出循环$ $\color{Purple}{Ⅱ.正解(个人认为)}$ $因为n\pmod1=0$
阅读全文
摘要:$状态很容易设计$ $设dp[i][j][u][v]表示放了i个1兵种和j个2兵种$ $然后u不会0说明末尾放了连续u个1兵种,v不为0说明末尾放了连续v个2兵种$
阅读全文
摘要:$\color{Red}{描述}$ $在n n的棋盘上有m个K皇后,每个皇后可能被来自8个方向的其他皇后攻击$ $每个皇后只可能被(0 8)只皇后攻击,分别求出被(0 8)只皇后攻击的皇后数量$ $对于一个皇后来说,怎么找到上下左右对角线是否有皇后才是关键$ $如果把皇后按照x坐标分类装进vecto
阅读全文
摘要:$其实思路都能想到一点,就是去重这里特别麻烦,没有好的思路。$ $设dp[i][j]为以i为根深度为j的节点数量$ $dp[parent][j]=\sum{dp[son][j 1]}$ $然后把每个节点作为转折点求答案$
阅读全文
摘要:$拿样例来看1 7 6 5$ $6成长到7是最合理的,因为1s就可以实现而且对于后面来说最优$ $5成长到7是最合理的,因为2s就可以实现而且对于后面最优$ $发现了什么?二进制是可以组合成任意连续数的,而且每个数都倾向于成长到前面的最大数$ $只成长到前面最大的数有两个好处。$ $\color{O
阅读全文
摘要:$给出n个数字,要求构造一个由这n个数组成的序列,使得|a_1 a_2| using namespace std; int t,n,a[100009]; int main() { cin t; while(t ) { cin n; for(int i=1;i a[i]; sort(a+1,a+1+n
阅读全文
摘要:$给出a,b,l,r,求在区间[l,r]内有多少x满足x%a%b!=x%b%a$ $ 分割!!~ $ $打个表很快发现规律,以a b为循环节,每个循环节内满足条件的数都相同,那直接前缀和查询$ $算出[1,r]满足条件的数,算出[1,l 1]满足条件的数,相减即可$
阅读全文
摘要:$给定序列长n的数组和k。完美数组的定义是数组中每一个连续k项的子段和为定值$ $现在要求插入一些数使得数组满足条件,输出你构造的新数列.$ $\color{Red}{ 分割线!!hehehe }$ $这题其实很友好了,在原题中一直提醒你不必构造最短的数列!!!这意味着有方法可以很简单的构造出来。$
阅读全文
摘要:$给定一串字母,分成k份,使得最大字典序最小。(字母可以任意组合)$ $ issue~ $ $首先肯定先对字母排序,然后往k个盒子都丢一个字母(因为不能为空)$ $那么接下来,就一定能够要想清楚了......$ $\color{Red}Ⅰ.当接下来的字母都相等时,就均分到k个盒子里,因为这时候影响字
阅读全文
摘要:其实这题并不难啊,但是分解因子的细节一定要小心。 $比如样例48,2是因子说明24也是因子,也就是说假如x存在$ $那么x一定是因子中的最小数乘上最大数$ $那我们现在去验证x是否存在,先拿x去整除除数表,看看是否所有除数都是x的因子$ $然后再去判断x的因子个数是不是等于n(确保除数表包含所有因子
阅读全文
摘要:伯特兰 切比雪夫定理: $对于n =3,一定在[n,n+\frac{n}{2}]中存在质数$
阅读全文
摘要:$对于操作1,我们只关心最后一次操作。$ $对于操作2,我们只关心值最大的一次操作。$ $也就是说,我们记录每个居民最后一次被修改的位置$ $然后它的最终答案就是从这个位置起,max(操作2最大的一次,最后一次修改的值)$ $当然,如果没有被修改过,默认被修改的位置在0.$ $\color{Red}
阅读全文
摘要:$设最后的答案为t,那么有$ $$2^{x_1}+2^{x_2}+...2^{x_t}+tp=n$$ $那我们完全可以枚举这个t,判断n tp(我们下面记为z)能刚好被t个二进制表示$ $首先,z如果小于t,那一定无法表示,因为每一个二进制最小是2^0=1,t个二进制最小是t$ $然后,我们数一下z
阅读全文
摘要:$首先很容易想到一个O(n^4m)的DP$ $设dp\ [i]\ [j]\ [q]\ 为长度i,a数组以j结尾,b数组以q结尾(q =j)$
阅读全文

浙公网安备 33010602011771号