Noip模拟15 2021.7.14】的更多相关文章

T1 夜莺与玫瑰 题目越发的变态起来... 这题刚开始看超级像仪仗队,好不容易码完欧拉函数后尝试×2后输出但不对!! 于是选择了跳过.... 正解居然是莫比乌斯函数....我也是醉了 预处理完就剩下$O(1)$求解然而我做不到.. 于是打了超级恶心的前缀和$O(n^2)$预处理以及$O(Tn)$求解. (多亏JYFHYX想到的手摸数组辗转相除超吊好吧). 竟然还可以定义short数组防止MLE,小马长见识了. 先考虑到柿子: $\sum_{a=1}^{n-1}\sum_{b-1}^{m-1}[g…
T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 然后维护一个冰茶姬,处理出$le,dw$数组就可以单调队列优化$dp$了 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define in…
T1 ZYB和售货机 首先这道题有两种做法. 一种是发现每个点都可以先被取到只剩一个,只要收益大于$0$ 然后发现建一个$i->f[i]$的图时出现环,要把它去掉, 那么跑一个$tarjan$枚举每一个强联通分量然后找到收益获得最少的边删掉就行 第二种做法是建立两个数组$mx[f[i]],nx[f[i]]$分别表示对于连向$f[i]$的边中收益最大和次大的点 那么我们像跳父亲一样$dfs$,找到一个环就比较他们构成环的最大点与次大点里面差值最小的 记录这个点为$x$,那么对于$x$,需要少让他被…
T1 打地鼠 都切掉了的简单题 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 const int NN=2005; 5 int n,k,g[NN][NN],ans,sum[NN][NN]; 6 char s[NN]; 7 inline int calc(int x1,int y1,int x2,int y2){ 8 return sum[x2][y2]-sum[x1-1][y2]-sum[x…
T1 最大或 $T1$因为没有开$1ll$右移给炸掉了,调了一年不知道为啥,最后实在不懂了 换成$pow$就过掉了,但是考场上这题耽误了太多时间,后面的题也就没办法好好打了.... 以后一定要注意右移左移要加$1ll$ 思路的话我的做法比较麻烦,就是开一个指针$pos$每次跳到下一个数是$0$的$1$的下一个(也就是指向那个$0$) 然后判断左边界或上从$pos$那一位开始后面都是$1$的那个数,如果不超过右边界,就给左边界或上那个数 最后再和右边界或便可得到答案,复杂度没分析,$log$级别的…
T1 送花 按照题解意思说是扫描线题,但我觉得像一个线段树优化$dp$ 主要思想一样,就是暴力枚举右端点,同时维护左端点的最值, 考虑两种情况, 如果左端点在$r$扫到的数$i$上一次出现的位置之前, 那么这个数是无法在区间$[l,r]$中作出贡献的 如果左端点在上次出现的位置之后,则可以作出贡献, 那么对应的操作就是 考虑从左往右扫答案的右端点,线段树维护每个左端点对应的答案 每次会让当前颜色的上上次出现位置到上次出现位置减掉贡献,上次出现位置到当前位置加上贡献 以后看到这种找最值区间的题目应…
题目真是越来越变态了 T1 Star Way To Heaven 首先,你要看出这是一个最小生成树的题(妙吧?) 为什么可以呢? 我们发现从两点连线的中点过是最优的,但是上下边界怎么办呢? 我们把上下边界看作两个点,每个点和它都连边,这样就可以跑最小生成树了 然而不能用kruskar,多一个$log$就会炸列 只能选用$prim$算法$n^2$已经是最优秀的了 找到生成树里面最大的边/2即可 1 #include<bits/stdc++.h> 2 using namespace std; 3…
T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列,里面的最大值高度是$j$, 并且后面还至少存在高度为$j$的土块,在前$i$列挖平了$p$个土块,积水的体积是奇数或者偶数的方案数 采用刷表更新$dp$值的方法,更新$f[i][j][k][u]$的所有可能到达的状态 可能有人问数组怎么开,因为$k \leq 26$所以最大值的哪一维只记录前$k+1…
考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则先手必输 那么这道题给出了取石子上限,那么每堆石子$\mod x+1$然后异或就可以知道谁必胜了 然后这道题就转化为如何求$\sum \limits_{i=1}^{n}\oplus a_i \mod(x+1)$. 分段考虑每一段$[k(x+1),(k+1)(x+1)]$,然后预处理一个$f$数组 $…
T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判断 如果在统计时使用差分的思想,可以复杂度降到$O(n)$,也可以用$set$多一个$log$都能过 1 #include<bits/stdc++.h> 2 using namespace std; 3 namespace AE86{ 4 inline int read(){ 5 int x=0,…