牛客多校
Ripped
我那么浮躁却想要读懂你的生活
展开
-
2019牛客多校第四场
A.meeting 场上写了一坨树形dp。。。 dfs序枚举集合点,答案由三部分组成: A:从父亲往外的节点(多走一步)得到(一边dfs一边更新) B:从自己的兄弟(多走两步(先到父亲再往下))得到 C:从自己的子树得到 写得极其凌乱。。打了无数的补丁。。 当然最快的做法就是找到最远关键点对,类似于树的直径跑两遍dfs或dfs即可 //树形dp #include <bits/stdc++.h...原创 2019-07-29 20:35:41 · 314 阅读 · 0 评论 -
2019牛客多校第九场
B.Quadratic equation 由题意可设x+y=kp+bx+y=kp+bx+y=kp+b 代入第二个式子中可以得到kpx+bx−x2≡c(modkpx+bx-x^2 \equiv c(modkpx+bx−x2≡c(mod p)p)p) 第一项是p的倍数可以约掉,所以有x2−bx+c≡0(modx^2-bx+c \equiv 0(modx2−bx+c≡0(mod p)p)p) 配方得(x...原创 2019-08-16 16:47:55 · 220 阅读 · 0 评论 -
2019牛客多校第七场
A.String 万万没想到这题暴力就可以艹过去。。(感谢隔壁队伍大喊一声“暴力都能过”) 据说直接O(N3)O(N^3)O(N3)就可以了? 毕竟这个时间复杂度几乎不可能跑满 我们的做法大概是找到一个全新的0进行check。。哎算了不管怎么做都能对 出题人也是非常心机的稍微放大了数据范围,所以如果不能想到“复杂度是假的”那么就会想我们队一样自闭两个小时 #include<bits/stdc...原创 2019-08-09 21:29:30 · 275 阅读 · 0 评论 -
2019牛客多校第八场
A.All-one Matrices 按行枚举(即枚举下边界) e.g.e.g.e.g. 000000000000000 001100011000110 001000010000100 011110111101111 111101111011110 以最后一行为例,首先找出每个元素向上连续1的个数:124201242012420 然后我们可以知道,区间[1,4][1,4][1,4][2,3][2,...原创 2019-08-13 17:49:21 · 164 阅读 · 0 评论 -
2019牛客多校第六场
A.Garbage Classification 按照题意模拟就好 也许可能要当心那个除法?建议转换成乘法做 #include <bits/stdc++.h> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; int T,dry,wet,harm,t,n,i,x; char ch[3000],s[100]; int ...原创 2019-08-04 18:51:22 · 503 阅读 · 0 评论 -
2019牛客多校第五场
A.digits 2 直接输出nnn个nnn就好 #include<bits/stdc++.h> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; int T,n,i; int main() { cin>>T; while (T--) { cin>>n;...原创 2019-08-04 17:26:08 · 213 阅读 · 0 评论 -
2019牛客多校第三场
B.Crazy Binary String 最长子序列直接找000和111中较少的那个即可 对于最长子串,把000看作−1-1−1的话,即找区间和为000的最长区间 数组记录前缀和出现的最早位置就可以了 #include<bits/stdc++.h> #define N 500000 #define fo(i,a,b) for(i=a;i<=b;i++) using namesp...原创 2019-07-25 20:27:59 · 165 阅读 · 0 评论 -
2019牛客多校第二场
A.Eddy Walker 蒙特卡洛+猜答案 注意答案要累乘 H.Second Large Rectangle 最大的可以用RMQRMQRMQ做 然后挖掉四个角分别再做一次即可 J.Subarray 挂一下大佬的链接 https://www.cnblogs.com/FST-stay-night/p/11218660.html 最重要的是学会了前缀和查询相差为111的时候的奇技淫巧 #include...原创 2019-07-25 00:35:43 · 241 阅读 · 0 评论 -
2019牛客多校第一场
A.Equivalent Prefixes 二分答案,check的时候每次找到区间最小值,如果位置不一样则返回false,否则两边继续递归 #include <bits/stdc++.h> #define fo(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=1e5+5; int posa[maxn...原创 2019-07-25 00:27:27 · 181 阅读 · 0 评论 -
2019牛客多校第十场
B.Coffee Chicken 对于S(n)S(n)S(n),考虑某个字母是从S(n−1)S(n-1)S(n−1)转移还是从S(n−2)S(n-2)S(n−2)转移 #include<bits/stdc++.h> #define fo(i,a,b) for(i=a;i<=b;i++) #define N 10005 using namespace std; int T,n,q,...原创 2019-09-01 20:44:42 · 185 阅读 · 0 评论