[考试反思]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:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- vue 上传文件 和 下载文件 面试的时候被问到过
Vue上传文件,不必使用什么element 的uplaod, 也不用什么npm上找的个人写的包,就用原生的Vue加axios就行了, 废话不多说,直接上代码:html: <input type= ...
- docker服务在Mac上的启动与使用
在mac上打开安装的docker软件就可以启动docker服务了 点击顶部状态栏中鲸鱼图标会弹出操作菜单,显示着服务的状态,如下图所示: 只有在docker服务启动了之后,才可以在终端使用docker ...
- Vue入门教程 第四篇 (属性与事件)
computed计算属性 计算属性(computed)在处理一些复杂逻辑时是很有用的.它的定义方式与methods类似. <div id="app"> <div& ...
- MIPI CSI2-TX接口基于FPGA实现
MIPI CSI2-TX用途: 跟海思的3559A芯片进行图像数据传输: MIPI CSI2-TX接口特性: xilinx 7系列芯片最大支持1.25Gbps: 最大支持lanes数量为4: 支持的图 ...
- ConcurrentHashMap实现原理以及源码分析
ConcurrentHashMap是HashMap的高并发版本,是线程安全的,而HashMap是非线程安全的 一.底层实现 底层结构跟hashmap一样,都是通过数组+链表+红黑树实现的,不过它要保证 ...
- MFC底层窗口实现
简要说明 MFC是微软的一个基础类库,如果在Windows平台上做GUI的开发,这是一个不错的选择.简单的记录MFC学习过程中的需要掌握或者后期需要查看的知识点. Windows消息机制 操作系统首先 ...
- Python从入门到精通视频(全60集) ☝☝☝
Python从入门到精通视频(全60集) Python入门到精通 学习 教程 首先,课程的顺序需要调整:一和三主要是介绍学习和布置开发环境的,一介绍的是非VS开发,三介绍的是VS开发.VS2017现在 ...
- Loj10222佳佳的 Fibonacci
Description Analysis 10分:暴力+把m和n输反,你将获得10分的好成绩(Just like me.) 70分:暴力+把m和n输对,你将获得70分的好成绩 100分:矩阵加速 设 ...
- 流水线机制、滑动窗口协议、GBN、SR
一.滑动窗口协议 为了解决停等操作的性能问题(发了一个分组之后一直等到确认了这个分组才发下一个),推出了流水线机制,提供资源利用率.就是允许发送方在收到对方的ACK前,发送多个分组 其中窗口是一个范围 ...
- c语言中double类型数据的输入和输出
double a;scanf("%f",&a); //应用scanf("%lf",&a);执行上面语句时,发现double类型的输入不能使用 ...