随笔分类 - OTHER OJ
摘要:退役老人现在连leetcode都不会做了 = = 今天早上做了leetcode第三题题目看错了,加上比赛中间还在调投稿的实验,一心二用直接gg 总结下教训就是 本渣现在做题连题目都看不清就开始做。开始写题之前应当把样例过一遍,然后自己再造1 2个例子,然后再开始做 A题:统计素数的个数(素数筛或者s
阅读全文
摘要:看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n (n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半边的点中有哪些连续数字,连续的数字就是一个[l, r]组合 就可以算出u这半边有哪些潜在的[l, r
阅读全文
摘要:02 城市网络 比赛时候写的是单调栈,真的是让人见笑了,基本思路就是dfs时候动态处理单调栈(带回溯),然后离线处理答案。题解是用了倍增的,效率高很多 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #
阅读全文
摘要:我现在就感觉我这人现在真的没有dp的意识 其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集。 按照题解的意思来,dp[i][j]表示二进制第i位的值为j(0,1)的组合有多少,然后滚动数组 今天补完之后感觉,除了fft,我懒得抄板子就不补了,其他三题,代码难度都不
阅读全文
摘要:这题的题解和我写的有一拼,异常简洁,爆炸。 这题思路dp dp[i][j] 表示的是讨论到第n位,并比原数的前n位多了 j∗2i 显然j只能取0,1,毕竟2进制嘛 之后转移就好了,注意下面两个重要状态 dp[i][1]=dp[i][0]+2 dp[i][0]=dp[i][1]+2 #include
阅读全文
摘要:按照题解的做法,对于每一个质约数分别进行讨论最长链就行 对于每一个数的质约数可是比logn还要小的 比赛的时候没人写,我也没看 = =,可惜了,不过我当时对于复杂度的把握也不大啊 #include <cstdio> #include <cstdlib> #include <cstring> #inc
阅读全文
摘要:这场爆零比赛题目还是要补的 这道题据说是出烂掉的原题,我找了下 CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬 Fi[x]为 当A[i]<=x时,使A[1∼i] 不严格递增的最小步数,那么 i==1 Fi[x]=minxy=1|A[i]−y| Otherwise Fi[x]=m
阅读全文
摘要:一眼的KM,但是建图的时候记得不用的点设为0,点少的一边补齐,这个非常重要,因为KM追求完全匹配,如果无法完全匹配会非常慢 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define MAXN 105 #de
阅读全文
摘要:昨天吐槽还没A,今天就A了 有个变量开成了全局变量,应该携程局部变量 对于中间的solve我也不懂为什么是nlog2n,我不看题解也不会做 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int INF
阅读全文
摘要:也是单调队列 我之前分别用了优先队列和二位rmq做这题都超时了。。 最后学习了别人的题解 #include<bits/stdc++.h> using namespace std; #define sz(X) ((int)X.size()) #define lson l,m,rt<<1 #define
阅读全文
摘要:把我写吐了 太弱了 首先按照欧拉函数性质 我只需要统计区间不同质数个数就好了 一眼主席树 其次我被卡了分解质因数这里 可以通过质数筛时就建边解决 不够灵性啊,不知道如何改 #include<bits/stdc++.h> using namespace std; typedef long long l
阅读全文
摘要:这个dp题很有学问,我也是照着标称写的 还需要学习 补: if(order[i] < order[i-1]) pre[j] += now[j]; 这句的解释 首先order表示的是每个数字排序之后的数组 order[0] 就是最小的那个数字是原来数组哪一个 但是会有等于的情况 所以这里定义的是如果
阅读全文
摘要:能把 not working now 写成 not working hard now 还查一晚上也是没谁了 我的做法是维护两个set 分别是前20% 和后80% #include<iostream> #include<algorithm> #include<set> #include<cmath>
阅读全文
摘要:这题真的有毒 首先你忽略 N-M < 100 的条件你就gg吧 其次就算你知道了怎么做之后 还有可能因为写vector或者各种常数大的原因被卡 #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #incl
阅读全文
摘要:FFT 就可以了 比赛时候没时间做了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int MAXN = 6e4+5; int A[MAXN<<
阅读全文
摘要:题解的那种前缀和以前没学过,感觉是种套路 #include<bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 1e4+5; #define lson l,m,rt<<1 #define r
阅读全文
摘要:这个题解错了网上还没有题解 囧 fi = (i%2)? 1 : -1 Fn = (n+m−1m−1) - ∑ni=0 ∑m−1j=1 (n−i∗(j+1)+m−2 m−2) * (m−1 j)*fj Fn *= m #include<bits/stdc++.h> using namespace st
阅读全文
摘要:树的点分治 感觉理解的不够深刻 等想好再多写点 #include <iostream> #include <queue> #include <stack> #include <map> #include <set> #include <bitset> #include <cstdio> #inclu
阅读全文
摘要:#include #include #include #include using namespace std; const int MAXN = 1e5+5; int N,M; int A[MAXN]; int has[MAXN]; int htot; int get(int x){ int tt = lower_bound(has,has+htot,x)-has; return tt+...
阅读全文
摘要:以前主席树学 kungbin 最近看了网上的版本 终于发现和我以前学的线段树差不多的了 希望最近能够加强
阅读全文

浙公网安备 33010602011771号