其实同时也是第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:压迫的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. [CSP-S模拟测试74]题解

    A.梦境 如果不用去重一定要用Multiset……挂30分算是出题人手下留情了. 贪心.把点排序,区间按右端点递增排序.依次考虑每个区间,取能选的最靠左的点即可.multiset维护. #includ ...

  3. csps模拟测试74梦境,玩具,飘雪圣域题解

    题面:https://www.cnblogs.com/Juve/articles/11679226.html 梦境: 其实还是挺水的,排序错了过不了样例,打了个二分图匹配就跑了 #include< ...

  4. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  5. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  6. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  7. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  8. [考试反思]0714/0716,NOIP模拟测试3/4

    这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...

  9. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

随机推荐

  1. 信息传递 NOIP2015 day1 T2

    题文: 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一轮 ...

  2. 基于STM32F1与NRF24L01模块的SPI简单通信

    一.前言 1.简介: 本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信. 2.SPI简介: 调过STM8的都已经对SPI有所了解,调法都一 ...

  3. 客户端 SOCKET 编程

    建立客户端的 Socket: 客户端应用程序首先也是调用 WSAStartup() 函数来初始化 Winsock 的动态连接库,然后同样 调用 socket() 来建立一个 TCP 或 UDP Soc ...

  4. Java 8 Optional:优雅地避免 NPE

    本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查.在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的. 空指针异常(NullPo ...

  5. windows下bower init 报错: bower ENOINT Register requires an interactive shell

    windows下bower初始化时不应该在git bash中,而应该在cmd下打开的dos窗口中进行

  6. Zeppelin的安装和SparkSQL使用总结

    zeppelin是spark的web版本notebook编辑器,相当于ipython的notebook编辑器. 一Zeppelin安装 (前提是spark已经安装好) 1 下载https://zepp ...

  7. Neo4j:图数据库GraphDB(三)创建删除及高级操作

    本片继续前几篇介绍图数据库的创建,有疑问可以我的看看前两篇文章:http://www.cnblogs.com/rongyux/p/5537206.html 四 图数据库的创建 1 创建一个节点   P ...

  8. Intel Ivy Bridge Microarchitecture Events

    This is a list of all Intel Ivy Bridge Microarchitecture performance counter event types. Please see ...

  9. opencv::两张图片的线性融合

    理论-线性混合操作 g(x) 表示 融合图片中的像素点,f0(x) 和 f1(x) 分别表示背景和前景图片中的像素点. //参数1:输入图像Mat – src1 //参数2:输入图像src1的alph ...

  10. spring security原理-学习笔记2-核心组件

    核心组件 AuthenticationManager,ProviderManager和AuthenticationProvider AuthenticationManager只是一个接口,实际中是如何 ...