二〇二三模拟赛
9.22
时间安排
7:40~7:50
看完A,没意识到勾股定理,第一时间的想法是解方程组
7:50~8:05
看了B,想到可以反向加边,但是没想到最远距离一定是到直径端点的距离,想了很长时间怎么合并,不会
8:05~8:15
看了C,感觉这个题可以骗
8:15~8:20
D只会暴力
8:20~8:40
先写了B的60pts部分分,然后重新想A
8:40~9:10
打表后发现这东西和直角三角形有关,第一反应用
9:10~10:40
开始嗑C的骗分,把自己能想到的稍微有点正确性的都给写上了
10:40~11:00
又去看了B,觉得可能会有数据结构能够维护,但还是不会
11:00~11:20
写完D的暴力,考虑了一下数位DP,发现不会做
11:20~11:40
检查了一下,然后坐等结束
反思总结
- 对已学知识点理解不够好
题解
A
发现和直角三角形有关,推式子得到
B
并查集+直径的维护
C
骗过去的
D
一个特殊的性质,
9.24
时间安排
8:00~8:40
看题,除a没有会的
8:40~9:20
写完a
9:20~12:00
一直看b,想差分约束,然后坐牢
总结
- 智力感觉有所下降
- 认真看题面
题解
A
n遍dijkstra,然后建图,再跑dijkstra
B
#include <bits/stdc++.h>
#define mod 998244353
#define ll long long
using namespace std;
ll C[3005][3005],fact[3005];
void init()
{
C[0][0]=1;
for (int i=1;i<=3003;i++)
for (int j=0;j<=i;j++)
{
if (i==1 || j==0) C[i][j]=1;
else C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
}
fact[0]=1;
for (int i=1;i<=3003;i++) fact[i]=fact[i-1]*i%mod;
return;
}
void add(ll &x,ll y) {x+=y; x%=mod; return;}
ll dp[3005][3005];
int suml[3005],sumr[3005];
int m,n,l,r;
int main()
{
init();
cin>>m>>n;
for (int i=1;i<=m;i++) {cin>>l>>r; suml[l]++; sumr[r]++;}
for (int i=1;i<=n;i++) suml[i]=suml[i-1]+suml[i],sumr[i]=sumr[i-1]+sumr[i]; // 左区间 <=i 的人数(不一定覆盖到i), 右区间 <=i 的人数
dp[0][0]=1;
for (int i=0;i<n;i++) // n 个 拍卖品
for (int j=0;j<=m;j++) // m 个人
if (dp[i][j]) //前i列,有j个R未满足
{
l=suml[i+1]-suml[i]; //第 i+1 列有多少个左区间的端点,一定需要在这里被满足的左区间
r=sumr[i]-j; //之前满足了这么多个右区间
int rr=sumr[i+1]-sumr[i]; //这第i+1列一共有这么多个右区间的左端点
int lef=i+1-r-suml[i]; //现在前面还剩下lef个列可以选
if (lef<0) continue; //如果lef<0没可能
//case1:这列选给了一个R
if (j+rr>=1 && lef>=1) add(dp[i+1][j+rr-1],dp[i][j]*(j+rr)%mod*C[lef-1][l]%mod*fact[l]%mod);
//case2:这列没选给一个R
if (lef>=l) add(dp[i+1][j+rr],dp[i][j]*C[lef][l]%mod*fact[l]%mod);
}
cout<<dp[n][0]<<endl;
}
C
打表发现
证毕
更进一步的
可以得到任意
剩下的只需要用做区间恢复,然后统计
D
首先,每个人都是独立的,也就是说,可以分开求每个人的期望
每个点被选的概率相等,当选了
对于一个固定的点对
那么对于这个点对,被选中的概率就是
最后答案就是 总的满足条件的点对数量
现在已经求出 固定点对被选中的概率,对于 总的满足条件的点对数量 可以直接点分治
10.06
时间安排
7:40~8:10
看完四道题,A,B都有点思路
8:10~8:40
A感觉可以直接线段树,于是码了一个线段树,大样例竟然一遍过了,对剩下几题感觉更有自信了
8:40~9:50
B感觉区间DP能做,于是推了很长时间式子,刚开始没意识到要用组合数,以为自己式子推错了,打算写个暴力出来,看看哪步转移不对。结果发现暴力不太好打,然后干脆就继续想哪里错了,9:50左右意识到需要组合数
9:50~10:20
补上组合数,然后又调了一阵子,大样例终于过了
10:20~11:10
C看着是有性质的,于是开始推,发现只要
11:10~11:30
感觉D有思路,写出来之后不对,没调出来。在想D的时候,C突然就有思路了,想到它可能是交替的,但没有往下想,主要没想到C这么好写,当时感觉不太好实现
反思与总结
-
感觉C可惜了,主要B写的时间太长,没思考全面
-
感觉比较好的是,今天上午比较清醒,可能是和早晨早起了半个小时有关
10.13
7:40~8:10
看完题,t1很有思路,t2能贪,t3应该能做,但是不好写,t4想到了转移,但是不对
8:10~8:50
发现自己t1的做法需要维护的东西很多,于是狠心写了一个线段树和树状数组
8:50~9:40
t2感觉不难,好像直接贪心就行,没发现什么反例,于是很愉快的写完了
9:40~10:50
不知道为什么特别困,可能没睡好,做t3的时候有点不撑了,不过还是想到一个递归的构造方式
10:50~11:10
写完发现不对,然后惊喜的发现,棋子可以走八个方向,而我写的是四个方向的,gg
11:10~11:30
把自己构想的t4转移写完,然后果然不对。
总结与反思
一场下来,节奏差,还困,犯错多,不清醒,特别是当把t1、t2都写完时,有点不想想了
最难绷的还不是t1被卡了,最难绷的是t2原数组乘二了,线段树数组没乘二,100->45
考试意识不好,对题目难度估不准,把简单题做难,然后写代码问题多,总是忽视代码最基本的,像是数组大小,开不开longlong,哪里应该开longlong,哪里的边界应该是什么样的
其实我t4的转移挺接近的,但是想的太少了,也没时间往下想了
状态是对的,但是转移不全
这样想这场比赛还是有很多点是可以发挥的,但是没发挥出来
10.14
题解
t1 贪心+DP
t2 贪心+数据结构
t3 类似分形的构造
t4 计数DP
7:50~8:20
看完四道题,性质有点多,感觉这场不太好打,t1应该是并查集,t2应该就是个贪心
8:20~8:40
写完t1
8:40~9:40
t2写了很多种贪心方式,其中有一个是对的,有一个骗写挂了,导致后来wa了4个,其他的点因为写了个线段树全T了
9:40~10:20
Day 1
kitty
核心思路:将转移过程中的方案加入转移矩阵,边转移边累加
string
dp设计:
对于每个
加个前缀和优化可以做到
优化:
那么当
容易进行 二维前缀和优化,时间复杂度为
contact
类似
Day 2
decimal
注意到除法的借位类似于取模后
所以这道题可以考虑通过
labor
二分区间长度,然后求区间内逆序对个数即可。
具体的,对于长度为
这个过程用树状数组维护即可。
distance
考虑当节点存在一个 子树大小
综上得到第一个性质:这个点必须是重心。
对于一个点
到这里就可以直接考虑暴力的 换根dp,不过还可以继续对题目进行挖掘。
发现只有
worship
简述一下题意:求
观察式子发现,产生的贡献实质上是连续段合并产生的,也就是说可以直接考虑连续段dp。
对于
这三种情况。设状态为
再考虑
对应到式子上就是:
然后对斜线进行前缀和优化即可,时间复杂度为
Day 3
gameone
对于每一格。如果是红色,说明当前行比当前列染得靠后;如果是绿色,说明当前列比当前行染得靠后。
直接对每行每列加个标号,然后对每个格点建边,最后跑
count
枚举
tease
可重集完全错排问题。
反演不会,但是可以直接硬容斥。设
brackets
将 "
直接线段树维护即可。
Day 4
literary
正如题目一样。
考虑第一次如何注水,发现最多注
第二次注水考虑让总水量补满
math
贪心。
只需知道区间内
具体的:
- 当这个区间有
,没有合数(有至少两种质因子的数),只有一种质数时,不合法; - 出现次数最多的数字出现
大于等于,可以把其他质数全部消掉; - 出现次数最多的数字出现
小于,那么区间内所有质数肯定可以两两配对消掉或者余一个;
geography
首先对于一个边双内的点,肯定是可以相互到达的,直接缩点。问题变成一个树上问题。
相当于链标记,一个向上或向下的标记,判断两个标记是否同时存在即可。
标记可以树剖也可以树上差分。
history
只会离线做法。
本文作者:EthanYates
本文链接:https://www.cnblogs.com/Ethan-Yates/p/17836555.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步