[考试反思]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:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
随机推荐
- 实战SpringCloud响应式微服务系列教程(第七章)
本章节继续介绍:Flux和Mono操作符(二) 1.条件操作符 Reactor中常用的条件操作符有defaultIfRmpty.skipUntil.skipWhile.takeUntil和takeWh ...
- 微人事 star 数超 10k,如何打造一个 star 数超 10k 的开源项目
看了下,微人事(https://github.com/lenve/vhr)项目 star 数超 10k 啦,松哥第一个 star 数过万的开源项目就这样诞生了. 两年前差不多就是现在这个时候,松哥所在 ...
- QCustomPlot 基础
QCutomPlot简介 官网网址及介绍 https://www.qcustomplot.com/ QCustomPlot is a Qt C++ widget for plotting and da ...
- 关于人工智能和python
人工智能的话题在近几年可谓是相当火热,前几天看快本时其中有一个环节就是关于人工智能的,智能家电.智能机器人.智能工具等等,在我的印象里,提到人工智能就会出现 Python,然后我便在网上查找了相关信息 ...
- 计算几何基础算法几何C++实现
This file is implementation of Common Common Computational Geometry Algorithms.Please please pay att ...
- 最强最全的Java后端知识体系
目录 最全的Java后端知识体系 Java基础 算法和数据结构 Spring相关 数据库相关 方法论 工具清单 文档 @(最强最全的Java后端知识体系) 最全的Java后端知识体系 最全的Java后 ...
- 如何更快理解和运用服务编排?(使用Goku API Gateway实现)
上一篇博客 未来实现API管理系统的几个关键词 发布后,有不少读者私信我,让我写一篇实际运用的文章,我周末趁着有空写了这篇有关“服务编排”的文章.用的是Goku API Gateway进行演示, 希望 ...
- 帝国cms网站管理系统之安全设置最优化分享
首先我们来认识一下帝国CMS安全认证特性:帝国登录四重安全验证:第一重:密码双重MD5加密,密码不可破解,假如数据库被下载,也无法获取真实密码.第二重:后台目录自定义,假如对方知道密码也找不到登录后台 ...
- 代码审计-thinkphp3.2.3框架漏洞sql注入
开始复现审计一下tp3和tp5的框架漏洞,当个练习吧. 涉及注入的方法为where() table() delete()等. 环境 tp3.2.3 : 0x01 注入成因 测试代码: public f ...
- [NOIp2013] luogu P1970 花匠
scy居然开网了. 题目描述 你有一个序列 aaa,你需要保留尽量多的数,使得剩下的数满足以下条件中的一个: ∀x∈[2,n−1]∩N∗\forall x\in[2,n-1]∩\N^*∀x∈[2,n− ...