NOIP模拟 14】的更多相关文章

垃圾成绩,一点都不稳定. 如果把数组开小的分得到的话..总分还挺不错.. 那又能怪谁,都快NOIP了还犯这种傻逼错误 nc哥是要阿卡的节奏..真是太强了 某kyh也不知道偷了谁的rp,分高的一批 wd从来很强..几乎就没失手过 就我一个渣渣还是这么没前途555 暴力的分不会拿555 想到正解拿不到分555 T1 旋转子段 貌似思路和题解并不一样,但是复杂度没区别,还比题解好理解(并不是) n^2:一个数要回到自己位置,旋转中心一定 用旋转中心的编号替代这个数的位置,不需旋转的数是他自己 用另一个…
T1 队长快跑 本身dp就不强的小马看到这题并未反映过来是个dp(可能是跟题面太过于像那个黑题的队长快跑相似) 总之,基础dp也没搞出来,不过这题倒是启发了小马以后考试要往dp哪里想想 $dp_{i,S}$表示处理到i号水晶,其中选择的要摧毁的水晶A最小为S 正解思路应先考虑出$O(n^3)$的$dp$方程: $(A_i\leq B_i)dp_{i,A_i}=max(dp_{i-1,B_i+1},dp_{i-1,B_i+2}...dp_{i-1,MAX})+1$ $(A_i>B_i)dp_{i,…
当垃圾已经成为一种常态233333 A.旋转子段 考场上的$n^2$手残少了20分,555  (主要是因为实在打不出来$n^3$的做法所以写不了对拍?ccc为什么考场上没有想起有reverse()这么毒瘤的操作啊) 很显然要反转的区间两端一定是一对$i,a[i]$(具体谁在左谁在右看大小关系),因为如果不是的话它俩没啥用就完全可以去掉. 所以枚举所有的i和a[i]不断更新最优解就能得到答案,那么只要能够$O(1)$查询答案复杂度就可以保证了.不妨设当前枚举到的i<a[i],那么我们要查询的固定点…
咕掉了好长时间,现在终于回来了.. 这次考试炸裂得很完蛋,直接分数上天. \(T1\) 本来想打一个记忆化搜索,然而老是通过不了样例,然后就挂了,只剩下了垃圾的 \(30pts\) 部分分数. 然而到现在记忆化还是调不出来.... 好废啊. 然后 \(T2,T3\) 也只能是暴力收场,垃得一批. T1: 这个题目就是一个显然的 \(dp\) (只是 \(dp\) 显然,而不是 \(dp\) 方程显然)... 然后我们开始疯狂地推 \(dp\) 式子... 然后推不出来... 你推不出来不会加元吗…
题解 \(by\;\;zj\varphi\) 签到题,自己看题解 Code #include<bits/stdc++.h> #define ri register signed #define p(i) ++i using namespace std; namespace IO{ char buf[1<<21],*p1=buf,*p2=buf; #define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,std…
题解 \(by\;\;zj\varphi\) 不是原题 一道(对我来说)很需要技巧的题 对于颜色数如何处理 离线,将子树转化为 \(dfs\) 序,但这种做法无法处理深度 我们按照深度加点(可以通过 \(bfs\) 实现),对于加到的每一个点,寻找和它颜色相同的点的 \(dfs\) 序,记录前趋和后继( \(set\) ), 将这个点和前趋,和后继的 \(lca\) 权值减 \(1\),将前趋和后继的 \(lca\) 权值加 \(1\). 至于如何处理深度,可以维护一棵可持久化线段树,对于每一层…
题解 \(by\;zj\varphi\) 一道很妙的 \(dp\) 题,方程状态不好设置,细节也不少 看到数据范围,直接想离散化 设 \(f_{i,j}\) 表示处理完前 \(i\) 个水晶,其中摧毁的 \(A_i\) 的最小值为 \(j\) 时最多能摧毁多少. 分类讨论 当 \(A_i\le B_i\) 时,那么要使 \(A_i\) 为最小值,那么就要摧毁它,所以 \(dp_{i,A_i}=\max(dp_{i-1,B_i+1},...dp_{i-1,\max})+1\) 但前 \(i-1\)…
T1 离散化后线段树维护\(dp\),\(fi\)表示最小值为\(i\)时最多点亮多少个, 区间操作即可. Code #include<cstring> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> namespace EMT{ #define pf printf #define int long long #define F(i,a,b) for(…
T1:队长快跑 基本思路:   离散化·DP·数据结构优化DP   这三个我都没想到....气死.   定义状态数组:\(c[i][j]\)表示在i时最小的a值是j时可以摧毁的最多的水晶数.   那么状态转移方程就是: c[i][j]=max(c[i-1][a[i]+1],c[i-1][a[i]+2],......,c[i-1][maxn])+1,if(a[i]>b[i]),这时还要同时更新c[i-1][j](j\(\in(b[i],a[i]]\)) c[i][j]=max(c[i-1][b[i…
NOIP模拟17.8.14 (天宇哥哥考察细心程度的题) [样例解释]如果删去第一个 1:在[3,1,2]中有 3 个不同的数如果删去 3:在[1,1,2]中有 2 个不同的数如果删去第二个 1:在[1,3,2]中有 3 个不同的数如果删去 2:在[1,3,1]中有 1 个不同的数[数据范围]对于 30% 的数据,n ≤ 10,ai ≤ 10.对于 60% 的数据,n ≤ 100,ai ≤ 100.对于 80% 的数据,n ≤ 105,ai ≤ 105.对于 100% 的数据,n ≤ 105,a…