NOIP模拟85(多校18)】的更多相关文章

前言 好像每个题目背景所描述的人都是某部番里的角色,热切好像都挺惨的(情感上的惨). 然后我只知道 T1 的莓,确实挺惨... T1 莓良心 解题思路 首先答案只与 \(w\) 的和有关系,于是问题就变成了对于一个点求出每一个所在组的大小以及对应的方案数. 考场上想的是枚举组的大小,然后预处理一下 \(n\) 个数字划分为 \(m\) 个非空集合的方案数. 一开始想的是隔板法,显然不对,然后就尝试 DP 计算,就有了 \(f_{i,j}=f_{i-1,j}\times j+f_{i-1,j-1}…
前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 DFS 一遍就行(大雾 然后就是卡常了,最后的结果就是时限 2s 的题本机 0.6s 才在OJ上过掉,我谔谔 果然迭代比递归快,所以直接 BFS 就可以减小常数了QAQ code #include<bits/stdc++.h> #define ll long long #define ull u…
预计得分:5 实际得分:140?????????????? T1 邻面合并 我考场上没切掉的大水题....(证明我旁边的cty切掉了,并觉得很水) 然而贪心拿了六十,离谱,成功做到上一篇博客说的有勇气(也就是很菜,变成了自己瞧不起的人...) 思路很假,但他很真(雾)... 暴力枚举矩形,暴力删除这个矩形,暴力的找下一个矩形.....然后六十??? 唯一提高正确性的地方就在枚举矩形时一个点正序,另一个倒序.... 1 #include<cstdio> 2 #include<bitset&…
T1 地一体 可以树形$dp$,但考场没写出来,只打了没正确性的贪心水了$30$ 然后讲题的时候B哥讲了如何正确的贪心,喜出望外的学习了一下 不难发现 每次士兵都会直接冲到叶子节点 从深的点再返回到另一个比较浅的点肯定是不优的 只有两种情况,士兵从之前的点到新的节点与直接再安排一个士兵冲到这个节点 我们就按这个策略贪心即可 1 #include<bits/stdc++.h> 2 #define int long long 3 #define pb push_back 4 #define mp…
前言 所以说这次是 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 特殊字符串 解题思路 \(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…