首页 > 其他分享 >9.24 模拟赛

9.24 模拟赛

时间:2023-09-24 20:55:41浏览次数:46  
标签:lef 9.24 eve 模拟 binom odd dp mod

时间安排

8:00~8:40

看题,除a没有会的

8:40~9:20

写完a

9:20~12:00

一直看b,想差分约束,然后坐牢

总结

  1. 智力感觉有所下降
  2. 认真看题面

题解

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

打表发现 \(0\sim2^k-1\) 中二进制表示下有奇数个 \(1\) 的数(下面统称为 \(odd_k\))和有偶数个 \(1\) 的数(下面统称为 \(eve_k\))个数相同,严格证明考虑数学归纳法:

\[特殊的,当k=0时,odd_0\not=eve_0 当k=1时,显然有odd_1=eve_1 \\ 当k=2时,odd_2=odd_1+eve_1,eve_2=eve_1+odd_1,考虑2^1\sim2^2-1相当于在0\sim2^1-1中每个数前加一个1 \\ 当k=3时,odd_3=odd_2+eve_2,eve_3=eve_2+odd_2 \\ \cdots 当k=n时,odd_n=odd_{n-1}+eve_{n-1},eve_n=eve_{n-1}+odd_{n-1} \]

证毕
更进一步的
可以得到任意 \(2^{c_1}+2^{c_2}+...+2^{c_n}\ (c_i\not=0)\) 的 \(eve\) 和 \(odd\) 相等,所以只需要特判是否含有 \(2^0\)

剩下的只需要用做区间恢复,然后统计 \(odd\) 和 \(eve\) 然后成起来就是答案,用线段树维护即可

D

首先,每个人都是独立的,也就是说,可以分开求每个人的期望

每个点被选的概率相等,当选了 \(x\) 个点时,概率就等于 \(\binom{n}{x}\),再考虑求一个点对被选中的概率

对于一个固定的点对 \((a,b)\),其出现次数就相当于同时选了这个点对对应的 \(a\) 和 \(b\),剩下的点随便选,也就是 \(\binom{n-2}{x-2}\)

那么对于这个点对,被选中的概率就是 $$\frac{\binom{n-2}{x-2}}{\binom{n}{x}}$$

最后答案就是 总的满足条件的点对数量\(\times\)固定点对被选中的概率 得到的就是选中点对的期望

现在已经求出 固定点对被选中的概率,对于 总的满足条件的点对数量 可以直接点分治 \(O(nlogn)\)求得

标签:lef,9.24,eve,模拟,binom,odd,dp,mod
From: https://www.cnblogs.com/atom-/p/17726584.html

相关文章

  • 9.24
    \(z_1,z_2,z_3,z_4为四个互不相等的复数,|z_i-z_0|=r>0(即共圆)\)\(求证:\dfrac{z_1-z_3}{z_1-z_4}\dfrac{z_2-z_4}{z_2-z_3}\inR\)\(情形1:\anglez_4z_1z_3=\anglez_4z_2z_3即\alpha=\beta\)\(如图,有:\)\[\dfrac{z_4-z_2}{|z_4-z_2|}=\dfrac{z_3-z_2}{|z_3-......
  • 9.24
    今天我继续学习老师课上留的内容,目前我已经将hive数据库里的所有操作要求完成,得到的数据也传到了mysql数据库里,目前的主要问题是如何将数据以图形的方式输出。此外,今天也学习关于计算机考试的内容和英语六级相关的内容。......
  • 一周总结(2023.9.18-2023.9.24)
    听课方面本周为图论和dp优化。在补之前的题,因此题目只做了一小部分。下周要加快补题速度,提高效率。晚上早点睡,不然早上很困,听课效果比较差。学会了线段树优化建图,需要复习Tarjian,学习欧拉路和斜率优化、wqs二分等。讲课方面课件做的太慢。可能是由于没有经验导致不知道题目......
  • 2023.9.24 一周总结
    不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~不知道在干什么~......
  • 230924 模拟赛总结
    死了,偶也!估分300实际......惨不忍睹T380094零用钱因为要最大,一眼盯真,贪心。因为是分组的,而最后可能不满一组,所以把加法放在前面更优。可以通过枚举判断一组之内需要几个负数,因为要求严格小于0。但是考场上写了二分,以及最后一组的处理写挂了......0分code0ptscodeT3......
  • 2023.9.24 ABout Math
    CF645F我们可以计算这样的函数\(F(x)\)表示\(\gcd\)是\(x\)的倍数有多少个\(k\)元组。设\(x\)的倍数有\(cnt_x\)个数,那么\(F(x)=C_{cnt_x}^k\)。根据莫反,\(f(x)=\sum_{x|d}F(d)\mu(d/x)\)\(Ans=\sumxf(x)=\sum_{x=1}^nx\sum_{x|d}\mu(d/x)\timesC_{cnt_d}......
  • 9.24算法
    反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。 示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[] 提示:链表中节点的数目范围是[0,5000]-5000<=Node.val<=5000 #include<bits/stdc+......
  • 23/9/21 模拟赛总结
    时间安排7:50-8:10看题,A70很好拿,B一眼DP,C有点恐怖,D有20分爆搜能拿。8:10-8:30先把A70分拿了。8:30-9:40想B的50分,有想法但不太会设计状态。9:40-10:20想到并实现了一个\(O(nm^2)\)的DP,而且\(m^2\)跑不满,说不定能卡过去几个点。赛后才发现这不......
  • 23/9/22 模拟赛总结
    时间安排7:40-8:15看题,A感觉能做,B题能打暴力,CD没想法8:15-9:00打表找规律过掉了A,手造了几组极限数据并验证没发现问题。9:00-9:40打B的暴力,想C。9:40-10:30打D的暴力,思考B的链部分分。10:30-11:00写B的链部分分。10:30-11:00写C暴力,想C......
  • C语言-字符串相关库函数用法+模拟实现
    常见的与字符串有关的库函数strstr()寻找子字符串strcat()字符串追加函数strcmp()字符串比较函数strcpy()字符串拷贝函数strlen()求解字符串长度...1.strstr()寻找子字符串我们先来看MSDN中对该函数的功能描述:Findasubstring.(寻找子......