09 2021 档案
摘要:关键是k<=n; 考虑最坏情况,逆序 每次挑最大值,只移动一次扔到尾巴 多模拟几个数字,发现任意一种情况都可以这样解决 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,a[100],cnt,ans[100
阅读全文
摘要:https://codeforces.com/contest/1579/problem/E1 算法的本质思路是贪心 第一点看到n特别大,又是求最优解问题,多手玩几个数字就好了 在实现上要会写小根堆, 赛场上a了,赛后被卡在test 14 #include<bits/stdc++.h> using n
阅读全文
摘要:永远也不退役,无论有多少人比我强都不退役,关我屁事 活着就不退役 我永远肝 #include<bits/stdc++.h> using namespace std; const int maxn=1e6; int cnt=0,n,m,s,dis[maxn],vis[maxn],head[maxn];
阅读全文
摘要:在做https://codeforces.com/contest/1579/problem/D时 思路出了不会写 赛后看b站解说 你就开个优先队列每次取两个top出来--; 我: 这就去学。 struct node{ int id,val; bool operator < (const node t
阅读全文
摘要:是getsum(a[i]-1) 不是getsum(i-1); 20210920 #include<bits/stdc++.h> using namespace std; const int maxn=1e5; int a[maxn],n,c[maxn],ans[maxn]; int lowbit(i
阅读全文
摘要:跑两遍dij 其中第二遍把所有边反向 问题在于如何把各类边和dis清干净 2021 09 29 待补 2021 10 05 #include <iostream> #include <math.h> #include <string.h> #include <vector> #include <ma
阅读全文
摘要://可是spfa会被卡得很惨很惨wa//待补充dij#include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #include <queue> #include <stdio.
阅读全文
摘要:我的思路是二分出答案,然后跑n3的弗洛伊德判断当以这个答案作为最大值时,能不能到目的 但是t了,一想, 200*200*200=800,0000; 极限情况是32 32个八百万,爆炸了。 错误代码: (t了但是理论上可行 #include <iostream> #include <math.h> #
阅读全文
摘要:#如果update写成了边界为l==r,那跟没建树有什么区别 #没写pushdown的话就直接回溯sum,会出大锅,会存在大区间的ans和lazy都改了,但小区间的还是保持原样 当这个区间又被查询的时候,会出现大区间=小区间+小区间(tree i=tree i*2+tree i*2+1),相当于没改
阅读全文
摘要:#我大爷的读入被卡了 #对于ADD,END什么的处理,开个char,然后判断s[0],嘛 自己调的代码~ #include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #inclu
阅读全文
摘要:网上给出的题解是一片的记录与父亲的关系。 昨天看到以前打的监狱罪犯打架的事情,做法是记录敌人的敌人,对a和b,合并的时候合并b和a的敌人,这里要挂到敌人的敌人老大那边。 好像可以搬过来写在这里。 很微妙,并查集给出的是同一个元素在一个群里,题目给出的是不能在一起的,我们加个数组他们就在一起了.. 第
阅读全文
摘要:郁闷得很,送出了好几发wa,找不到错在哪 来自两天后的更新: 我知道错在这里了: if(fa[x]!=x) { fa[x]=find(fa[x]); val[x]+=val[fa[x]]; }在进行这么多次回溯后,你爸爸已经不是你爸爸了而我们记录是是对于父节点的相对关系。所以要用一个tmp存一下。
阅读全文
摘要:其实想了很久,我也不觉得是自己脑子反应慢,因为老会纠结一些奇怪的点.. 也许,因此也对算法有了奇怪的理解吧。 #1,lazytag的作用是,在对同一区间进行多次操作再统一提问时,相当于先存操作数,提问时再一并处理。 lazytag下放的尽头是?放到树的某个节点管辖的区间可以被修改的区间完全包含时,就
阅读全文
摘要:看错题目三次,相当于做了三道不同的题.. 哪怕是在脑子不清楚的情况下,看好题目是多么重要的事啊。 多画图就可以发现答案不会超过4 虽然在开始的时候就有感觉是递减的 甚至看到了篇数学背景的论文讲这个事情.. 嘿嘿纪念一下,第一次想出1700的题?并且还出得挺快的,
阅读全文
摘要:我知道应该想办法先得到F(a)最大是什么情况,然后再去找符合的序列。 吃饺子的时候突然想到当且仅当可以被平分成两组的时候,F(a)取最大。 这个可以转化为和一定,求最大的几个数相乘的和,拿几个数字玩一下就好了。 比如10分为5+5,ans为25,肯定远远大于{2,2},{2,2},{2,2},{2}
阅读全文
摘要:https://www.luogu.com.cn/problem/CF1497B 此题的特点是相邻两个数相加必须为m的倍数,多写几个模拟,可以发现: 必须是x,y,x,y,x,y,x,y..的交替形式 其中x为任意mod m=j的数,y为任意mod m=m-j的数 有个小小的证明就是: a,b,c满
阅读全文
摘要:找规律题,神奇的是题解说样例把所有的情况都点出来了,而我都ac了,才看到这条。 我的敏感性终于上来了吗? 看到lcm不超过n/2的时候我想到了可以试一下设可能的一个数字为n/2; 然后..突然想到n/2,n/4,n/4。 然后我就开始对n%4的各种情况进行讨论,发现没法构造出上面那么好看的答案了。
阅读全文
摘要:https://codeforces.com/contest/1471/problem/C 以为是01背包的变形dp,转念一想你见过哪个01背包知道自己选了啥 想压缩吧,又发现这个n实在太大,没了 终于拐到贪心了 想说对每个礼物,让它发挥最大的价值,那么应该在能选的人中,挑一个不送礼代价最大的。 又
阅读全文
摘要:一题贪心,大意是给出n个彼此之间差距不会大于x的砖块,要搭m座塔,要使得最后搭出来的塔之间的差距最大不会超过x 想... 想...... 想...... 想了一个蛇形拐弯思路使每个塔的值尽量平均,比如最大的跟最小的搭啦。 一看题解:由题目的特殊性可得把当前值扔到最小堆里必满足,维护优先队列即可。 我
阅读全文
摘要:https://www.luogu.com.cn/problem/CF1513B 完全没想法 知道方向是找规律,比如满足某种特殊情况,该序列就合法。 我猜的第一个是使得并后的值恒为0,那是不是要找0出现的位置,一看另外一个1,3,5,1有出答案的样例,没道理; 没有第二个猜测了。 因为: s1=s2
阅读全文