NOIP模拟91(多校24)】的更多相关文章

前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 DFS 一遍就行(大雾 然后就是卡常了,最后的结果就是时限 2s 的题本机 0.6s 才在OJ上过掉,我谔谔 果然迭代比递归快,所以直接 BFS 就可以减小常数了QAQ code #include<bits/stdc++.h> #define ll long long #define ull u…
前言 所以说这次是 HZOI 多校联测巅峰????(题目,数据过水??) T1 石子合并 解题思路 签到题. 发现我们可以给每个数字附一个正负号,每个数字的贡献就是它本身乘上这个符号. 发现至少应该有一个正号一个负号,直接记录是否正负数都有,再判断一下有 0 或者只有一个数的情况. code #include<bits/stdc++.h> #define int long long #define ull unsigned long long #define f() cout<<&…
T1 宝藏 解题思路 考场上一眼出 \(nlog^2\) 做法,然后没看见是 1s 3e5 的数据,我竟然以为自己切了?? 考完之后尝试着把二分改为指针的移动,然后就过了??或许是数据水吧,感觉自己的做法指针好像并不满足单调性.. 口胡一下正解,做法差不多,只不过枚举的方式改变了,但是都需要先对于 w 进行排序,枚举每一种长度的序列,单调指针维护最大的合法的值. 这个是有单调性的,然后主席树或者权值线段树维护均可. code 其实是假做法 #include<bits/stdc++.h> #de…
前言 好像每个题目背景所描述的人都是某部番里的角色,热切好像都挺惨的(情感上的惨). 然后我只知道 T1 的莓,确实挺惨... T1 莓良心 解题思路 首先答案只与 \(w\) 的和有关系,于是问题就变成了对于一个点求出每一个所在组的大小以及对应的方案数. 考场上想的是枚举组的大小,然后预处理一下 \(n\) 个数字划分为 \(m\) 个非空集合的方案数. 一开始想的是隔板法,显然不对,然后就尝试 DP 计算,就有了 \(f_{i,j}=f_{i-1,j}\times j+f_{i-1,j-1}…
T1 特殊字符串 解题思路 \(f_{i,j}\) 表示前 \(i\) 个字符中结尾为 \(j\) 的最大贡献. 转移枚举当前位置于之前位置结尾的组合加上贡献即可. 对于边界问题,容易发现选择 1 一定不劣. code #include<bits/stdc++.h> #define int long long #define ull unsigned long long #define f() cout<<"RP++"<<endl using nam…
前言 对于这套题的总体感觉就是难,然后就是自己很菜... 对于 T1 考试时只会一个最垃圾的背包,考完之后对于思路这一块也不是很顺利,大概这就是薄弱的地方吧. 然后 T2 是比较简单的一道题了,但是考试的时候只是拿了一点部分分,对于正解的思路也只有一点点. 大概和看错数据范围有一点关系吧,主要还是菜. T3 T4 是那种我最害怕的题目了,T3 一看感觉根本不可做,然后一点思路没有. T4 的博弈论更别提,推了个傻瓜特殊性质就跑路了... T1 按位或 解题思路 容斥DP好题. 先来考虑复杂度为…
T1 子集和 解题思路 大概是一个退背包的大白板,然而我考场上想复杂了,竟然还用到了组合数. 但是大概意思是一样的,有数的最小值一定是一个在 \(a\) 数组中存在的数字. 那么我们想办法除去它对应的贡献,可以一个一个退,也可以组合数一下一起退... code #include<bits/stdc++.h> #define int long long #define ull unsigend long long #define f() cout<<"RP++"&…
T1 法阵 解题思路 原题3100,张口放 T1(出题人原话) 思维题,合法的情况其实就是上下两个梯形拼起来的样子. 他们的边界都是在 \(i\) 轴上面,但是不能相交. 于是我们可以尝试两者相交的纵坐标,再枚举左边梯形的下边界一级右边梯形的上边界,对于答案的话再乘上一个二. \[\displaystyle\sum_{i=1}^{n-1}\sum_{i=1}^{m-1}\sum_{k=j+1}^{m}\binom{i+j-1}{i}\times\binom{n-i+m-k}{n-i}\times…
T1 字符串: 裸的卡特兰数题,考拉学长讲过的原题,就是bzoj3907网格那题,而且这题更简单,连高精都不用 结论$C_{n+m}^{n}-C_{n+m}^{n+1}$ 考场上10min切掉 #include<bits/stdc++.h> #define int long long ; ; using namespace std; int inv[N],fac[N]; int qpow(int a,int b){ ; while(b){ ) ans=ans*a%mod; b>>=…
本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spfa等 然而我们发现本题一个特点为边权相等(1) 显然应用dfs/bfs算法时间复杂度优于传统求最短路算法 考虑对于问题二:知b求a 同样,我们能很快明确高斯消元算法并且也需要计算dis数组 然而 观察数据范围 T<=5, 2<=n<=100000,1<=u,v<=n 显然这道题正…