[考试反思]1015csp-s模拟测试74:压迫


其实同时也是第27,一大片并列的。
真的是越考越烂。
T1是个弱化的贪心原题,15分钟拿下没什么可说的。
T2打的记忆化搜索,hash_mod太小撞哈希了,50->30
T3,想不到正解,90分钟时打完的莫队随机数据可过但是被感人的数据和感人的评测机卡成n2暴力
后来基本一直在卡常
zkt坐在skyh旁边越学越坏了90分钟在厕所跟我说他A了T3
然而LNC说他AK了什么的听听就好了
然而我始终没有A掉T3,不知道对我的心态是否产生了影响
其实我以为我能过的。。。
但是的确没有想到正解,不就是一个裸的二维偏序嘛。。。
考场上想到一个高分暴力之后,正解的思路反而被阻塞了啊。。。
T1:梦境
之前某场考试的《时间机器》的原题。当时是区间与区间匹配。这题弱化了。不讲吧。
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
struct dream{
int l,r;
friend bool operator<(dream a,dream b){
return a.r>b.r;
}
}d[];
bool com(dream a,dream b){
return a.l<b.l;
}
priority_queue<dream>q;
int n,m,p[],ans;
int main(){//freopen("dream2.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)scanf("%d%d",&d[i].l,&d[i].r);
for(int i=;i<=m;++i)scanf("%d",&p[i]);
sort(p+,p++m);sort(d+,d++n,com);
for(int p1=,i=;i<=m;++i){
while(p1<=n&&d[p1].l<=p[i])q.push(d[p1]),p1++;
while(!q.empty()&&q.top().r<p[i])q.pop();
if(!q.empty())q.pop(),ans++;
}printf("%d\n",ans);
}
T2:玩具
也许算个容斥?算了不瞎说了不然LNC会来ha(n)ck我的
直接算比较难,我们考虑设$f[i][j]$表示$i$个点的树中深度不超过$j$的概率。
直接转移比较困难,因为一棵树可以由一个森林转移而来,那么就设$g[i][j]$表示$i$个点的森林里深度都不超过$j$的概率。
你可以用一个点把森林的每一个根合并起来,$f[i][j]=g[i-1][j-1]$
为了转移,我们需要考虑大的g怎么从小的g转移而来。也就是如何缩小问题规模。
从森林里拿出一棵树,剩下的部分单独考虑就好了。
当然不能乱拿不然会重复,所以我们规定我们只拿编号最小的点所在的树。
设$dp[i][j]$表示$i$个点的图里编号最小的点所在的树的大小为$j$。
可以转移了:$dp[i][j]=dp[i-1][j-1]\times \frac{j-1}{i} + dp[i-1][j] \times \frac{i-j-1}{i} + dp[i-1][j] \times \frac{1}{i}$
后两项合并就是下发题解给的式子。
具体含义是:考虑加入一个点的所有可能,与编号最小的点所在的树上任意一点连边,与其它点连边,或者这个点单独作为一棵新树
最后一种情况容易忘。这也是除$i$而非$(i-1)$的原因了。
考虑g的转移,你随意挑出一个大小为k的树,转移就是$g[i][j]=\sum\limits_{k=1}^{i}g[i-k][j] \times f[k][j]c \times dp[i][k]$
打表发现$dp[i][j]=\frac{1}{i}$,不是巧合,dp[1][1]=1,其余可以归纳证明,所以其实dp数组是无用的。
而f数组完全可以用g表示出来,所以也是多余的。
所以可以用一个g数组干下来。。。
细节稍多,注意处理边界条件,其实都比较好理解,不细说了。
#include<cstdio>
#define int long long
int n,mod,inv[],ans,g[][];
main(){
scanf("%lld%lld",&n,&mod);
inv[]=;for(int i=;i<=n;++i)inv[i]=mod-mod/i*inv[mod%i]%mod;
for(int i=;i<=n;++i)g[][i]=g[][i]=;
for(int i=;i<=n;++i)for(int j=;j<=n;++j)for(int k=;k<=i;++k)
g[i][j]=(g[i][j]+(k==?:(j?g[k-][j-]:))*g[i-k][j]%mod*inv[i])%mod;
for(int i=;i<=n;++i)ans=(ans+(mod+g[n-][i-]-(i>?g[n-][i-]:))*i)%mod;
printf("%lld\n",ans);
}
T3:飘雪圣域
求[l,r]之间的点形成多少联通块。可离线。
联通块数=点数-边数
点数好说,求边数2,也就是边的两个端点都要在[l,r]之间。
经典的二维偏序。
#include<cstdio>
#include<algorithm>
int n,q,ans[],t[];
void add(int p,int w){for(;p<=n;p+=p&-p)t[p]+=w;}
int ask(int p,int a=){for(;p;p^=p&-p)a+=t[p];return a;}
struct mono{int l,r,id;friend bool operator<(mono a,mono b){return a.r>b.r||(a.r==b.r&&a.id>b.id);}}m[];
int main(){
scanf("%d%d",&n,&q);
for(int i=;i<n;++i){
scanf("%d%d",&m[i].l,&m[i].r);
if(m[i].l>m[i].r)std::swap(m[i].l,m[i].r);
add(n+-m[i].l,);
}
for(int i=;i<=q;++i)scanf("%d%d",&m[i+n-].l,&m[i+n-].r),m[i+n-].id=i;
std::sort(m+,m+n+q);
for(int i=;i<n+q;++i)if(m[i].id)ans[m[i].id]=m[i].r-m[i].l+-ask(n+-m[i].l);
else add(n+-m[i].l,-);
for(int i=;i<=q;++i)printf("%d\n",ans[i]);
}
思路积累:
- 题意转化
[考试反思]1015csp-s模拟测试74:压迫的更多相关文章
- [考试反思]0718 NOIP模拟测试5
最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...
- [CSP-S模拟测试74]题解
A.梦境 如果不用去重一定要用Multiset……挂30分算是出题人手下留情了. 贪心.把点排序,区间按右端点递增排序.依次考虑每个区间,取能选的最靠左的点即可.multiset维护. #includ ...
- csps模拟测试74梦境,玩具,飘雪圣域题解
题面:https://www.cnblogs.com/Juve/articles/11679226.html 梦境: 其实还是挺水的,排序错了过不了样例,打了个二分图匹配就跑了 #include< ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- [考试反思]1109csp-s模拟测试106:撞词
(撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...
- [考试反思]0909csp-s模拟测试41:反典
说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- [考试反思]0714/0716,NOIP模拟测试3/4
这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- asp.net core 3.0 更新简记
asp.net core 3.0 更新简记 asp.net core 3.0 更新简记 Intro 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0 ...
- idea快捷键(mac下)
ctrl+/ 代码提示 command+o 搜索要进入的类并进入 command+shift+enter 另起一行 command+shift+u 在变成全大写与变成全小写之间切换 shift+鼠标滑 ...
- [Windows内核分析]KPCR结构体介绍 (CPU控制区 Processor Control Region)
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 逆向分析操作系统内核代码至少需要具备两项技能: 段页汇编代码非常懂 ...
- Java11月18日
动手动脑 实验一: 1. 下边的程序运行结果是什么? 2.你如何解释会得到这样的输出? 3.计算机是不会出错的,之所以得到这样的运行结果也是有原因的那么从这些运行结果中,你能总结出Java的哪些语法特 ...
- python入门经典_好资源送不停
Python入门经典(2K超清_送书) https://study.163.com/course/courseMain.htm?courseId=1006183019&share=2& ...
- 苹果开始推送 macOS Catalina10.15 正式版系统更新
北京时间今天凌晨 1 点,苹果正式推送了 macOS Catalina 10.15 正式版升级.macOS Catalina 10.15 正式版带来了许多重大改变,包括Sidecar.iTunes应用 ...
- 代码审计-MetInfo CMS任意文件读取漏洞
0x01 代码分析 发现在app\system\include\module\old_thumb.class.php疑似有任意文件读取漏洞 public function doshow(){ glob ...
- Ubuntu16.04换源
换成国内最快的阿里云源 第一步:备份原来的源文件 cd /etc/apt/ 然后会显示下面的源文件sources.list 输入命令 sudo cp sources.list sources.list ...
- Kubernetes WebSSH终端窗口自适应Resize
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...
- JVM 垃圾收集与内存分配
判断对象是否还活着 引用计数法 给对象添加引用计数器,添加加1,引用失效减1,如果为0就是不可使用的.问题是不能解决互相引用带来的问题 可达性分析法 以GC Roots为起点,判断到一个对象是否有引用 ...