CSP-S 模拟 29

news/2025/10/15 22:16:52/文章来源:https://www.cnblogs.com/Wy-x/p/19144398

CSP-S 模拟 29

A. 一个赢家 (card)

\(2n\) 张卡,第 \(i\) 张卡上写着数字 \(i\)。有 \(n\) 个人,这 \(n\) 个人轮流从这些卡中均匀随机拿走两张,不放回。现在每个人手上各有两张卡,手上两张卡上写的数字的和最大的人获胜。显然,胜者可能不止一个,求胜者恰好只有一个的概率。

打表题。

首先我们可以不用考虑顺序,只需考虑方案数即可。

显然的想法是枚举 \(i,j \in [1,2n] (i\ne j)\),钦定 \(a[i]+a[j]\) 为唯一的那个最大值,计算这种情况的方案数,最后所有情况的方案数的 \(\sum\) 即为总方案数。容易发现这样所有合法情况均被包含在内。

看一个例子:

\(n!! = 1 \times 3 \times \dots \times n\)(保证 n 为奇数)

答案为 \(2^6 \times (1!!)\)

再看一个

答案为 \(4^4 \times (3!!)\)

再看一个

答案为 \(6^3 \times (5!!)\)

发现答案为 \(x^p \times (y!!)\) 的形式。

又通过手模发现 \(y=(2n-2)-2x-1\)

\(dp[i][j]\) 为钦定 \(a[i]+a[j]\) 为最大值时的方案数。

于是就有 dp 雏形了。

再打个暴力与 dp 中的每一个值相比较,修正 \(2.5h\) 即可得到以下 \(n^2\) 代码:

#include<bits/stdc++.h>
#define int long longusing namespace std;const int Size=(1<<20)+1;
char buf[Size],*p1=buf,*p2=buf;
char buffer[Size];
int op1=-1;
const int op2=Size-1;
#define getchar()                                                              \
(tt == ss && (tt=(ss=In)+fread(In, 1, 1 << 20, stdin), ss == tt)     \? EOF                                                                 \: *ss++)
char In[1<<20],*ss=In,*tt=In;
inline int read()
{int x=0,c=getchar(),f=0;for(;c>'9'||c<'0';f=c=='-',c=getchar());for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+(c^48);return f?-x:x;
}
inline void write(int x)
{if(x<0) x=-x,putchar('-');if(x>9)  write(x/10);putchar(x%10+'0');
}const int mod=1e9+7;
int n;
int ksm(int x,int p)
{if(x<=0||p<0) return 1;int ans=1;while(p){if(p&1) ans*=x,ans%=mod;x*=x;x%=mod;p>>=1;}return ans;
}const int N=5e6+5;
int f[N],frac[N<<1],frac2[N<<1];
int sum[N],sum2[N];
int g[N];
int tot;void init()
{int maxn=5e6;f[0]=1;int tot=1;frac[0]=g[0]=frac[1]=1;frac2[0]=frac2[1]=1;g[1]=2;for(int i=2;i<=n;i++) {frac[i]=frac[i-1]*i%mod;frac2[i]=frac2[i-2]*i%mod;g[i]=g[i-1]*2%mod;}     for(int i=1;i<=(n>>1);i++) g[i]=ksm(g[i],mod-2);for(int i=1;i<=(n>>1);i++) f[i]=frac[i<<1]*g[i]%mod;
}signed main()
{//card.inn=read()<<1;init();if(n==2) { cout<<"1"; return 0; }int ans=0;for(int r=n;r>(n>>1);r--,cout<<"\n")for(int l=r-1;l>n-r+1;l--){int nw=ans;int mid=(l+r+2)>>1;if(mid<=(n>>1)) break;ans+=ksm(l-(n-r)-1,n-mid)*frac2[max(0ll,(n-2-(max(0ll,n-mid)<<1))-1)]%mod;ans%=mod;cout<<"l="<<l<<" r="<<r<<" ksm="<<ksm(l-(n-r)-1,n-mid)<<" frac2="<<frac2[max(0ll,(n-2-(max(0ll,n-mid)<<1))-1)]<<" ans="<<ans<<" dtans="<<ans-nw<<"\n";}cout<<ans*ksm(frac2[n-1],mod-2)%mod<<"\n";return 0;
}

如果你有惊人的注意力,你可以发现:友情链接

而这里是打表。

\(n=5\) 为例。打出 \(i,j,dp[i][j]\)

其中 \(dtans=dp[i][j]=ksm*frac2\% mod\ , ans=\sum dtans\)

使用 ctrl+F

l=19 r=20 ksm=1 frac2=34459425 ans=34459425 dtans=34459425
l=18 r=20 ksm=1 frac2=34459425 ans=68918850 dtans=34459425
l=17 r=20 ksm=16 frac2=2027025 ans=101351250 dtans=32432400
l=16 r=20 ksm=15 frac2=2027025 ans=131756625 dtans=30405375
l=15 r=20 ksm=196 frac2=135135 ans=158243085 dtans=26486460
l=14 r=20 ksm=169 frac2=135135 ans=181080900 dtans=22837815
l=13 r=20 ksm=1728 frac2=10395 ans=199043460 dtans=17962560
l=12 r=20 ksm=1331 frac2=10395 ans=212879205 dtans=13835745
l=11 r=20 ksm=10000 frac2=945 ans=222329205 dtans=9450000
l=10 r=20 ksm=6561 frac2=945 ans=228529350 dtans=6200145
l=9 r=20 ksm=32768 frac2=105 ans=231969990 dtans=3440640
l=8 r=20 ksm=16807 frac2=105 ans=233734725 dtans=1764735
l=7 r=20 ksm=46656 frac2=15 ans=234434565 dtans=699840
l=6 r=20 ksm=15625 frac2=15 ans=234668940 dtans=234375
l=5 r=20 ksm=16384 frac2=3 ans=234718092 dtans=49152
l=4 r=20 ksm=2187 frac2=3 ans=234724653 dtans=6561
l=3 r=20 ksm=256 frac2=1 ans=234724909 dtans=256
l=2 r=20 ksm=1 frac2=1 ans=234724910 dtans=1l=18 r=19 ksm=16 frac2=2027025 ans=267157310 dtans=32432400
l=17 r=19 ksm=15 frac2=2027025 ans=297562685 dtans=30405375
l=16 r=19 ksm=196 frac2=135135 ans=324049145 dtans=26486460
l=15 r=19 ksm=169 frac2=135135 ans=346886960 dtans=22837815
l=14 r=19 ksm=1728 frac2=10395 ans=364849520 dtans=17962560
l=13 r=19 ksm=1331 frac2=10395 ans=378685265 dtans=13835745
l=12 r=19 ksm=10000 frac2=945 ans=388135265 dtans=9450000
l=11 r=19 ksm=6561 frac2=945 ans=394335410 dtans=6200145
l=10 r=19 ksm=32768 frac2=105 ans=397776050 dtans=3440640
l=9 r=19 ksm=16807 frac2=105 ans=399540785 dtans=1764735
l=8 r=19 ksm=46656 frac2=15 ans=400240625 dtans=699840
l=7 r=19 ksm=15625 frac2=15 ans=400475000 dtans=234375
l=6 r=19 ksm=16384 frac2=3 ans=400524152 dtans=49152
l=5 r=19 ksm=2187 frac2=3 ans=400530713 dtans=6561
l=4 r=19 ksm=256 frac2=1 ans=400530969 dtans=256
l=3 r=19 ksm=1 frac2=1 ans=400530970 dtans=1l=17 r=18 ksm=196 frac2=135135 ans=427017430 dtans=26486460
l=16 r=18 ksm=169 frac2=135135 ans=449855245 dtans=22837815
l=15 r=18 ksm=1728 frac2=10395 ans=467817805 dtans=17962560
l=14 r=18 ksm=1331 frac2=10395 ans=481653550 dtans=13835745
l=13 r=18 ksm=10000 frac2=945 ans=491103550 dtans=9450000
l=12 r=18 ksm=6561 frac2=945 ans=497303695 dtans=6200145
l=11 r=18 ksm=32768 frac2=105 ans=500744335 dtans=3440640
l=10 r=18 ksm=16807 frac2=105 ans=502509070 dtans=1764735
l=9 r=18 ksm=46656 frac2=15 ans=503208910 dtans=699840
l=8 r=18 ksm=15625 frac2=15 ans=503443285 dtans=234375
l=7 r=18 ksm=16384 frac2=3 ans=503492437 dtans=49152
l=6 r=18 ksm=2187 frac2=3 ans=503498998 dtans=6561
l=5 r=18 ksm=256 frac2=1 ans=503499254 dtans=256
l=4 r=18 ksm=1 frac2=1 ans=503499255 dtans=1l=16 r=17 ksm=1728 frac2=10395 ans=521461815 dtans=17962560
l=15 r=17 ksm=1331 frac2=10395 ans=535297560 dtans=13835745
l=14 r=17 ksm=10000 frac2=945 ans=544747560 dtans=9450000
l=13 r=17 ksm=6561 frac2=945 ans=550947705 dtans=6200145
l=12 r=17 ksm=32768 frac2=105 ans=554388345 dtans=3440640
l=11 r=17 ksm=16807 frac2=105 ans=556153080 dtans=1764735
l=10 r=17 ksm=46656 frac2=15 ans=556852920 dtans=699840
l=9 r=17 ksm=15625 frac2=15 ans=557087295 dtans=234375
l=8 r=17 ksm=16384 frac2=3 ans=557136447 dtans=49152
l=7 r=17 ksm=2187 frac2=3 ans=557143008 dtans=6561
l=6 r=17 ksm=256 frac2=1 ans=557143264 dtans=256
l=5 r=17 ksm=1 frac2=1 ans=557143265 dtans=1l=15 r=16 ksm=10000 frac2=945 ans=566593265 dtans=9450000
l=14 r=16 ksm=6561 frac2=945 ans=572793410 dtans=6200145
l=13 r=16 ksm=32768 frac2=105 ans=576234050 dtans=3440640
l=12 r=16 ksm=16807 frac2=105 ans=577998785 dtans=1764735
l=11 r=16 ksm=46656 frac2=15 ans=578698625 dtans=699840
l=10 r=16 ksm=15625 frac2=15 ans=578933000 dtans=234375
l=9 r=16 ksm=16384 frac2=3 ans=578982152 dtans=49152
l=8 r=16 ksm=2187 frac2=3 ans=578988713 dtans=6561
l=7 r=16 ksm=256 frac2=1 ans=578988969 dtans=256
l=6 r=16 ksm=1 frac2=1 ans=578988970 dtans=1l=14 r=15 ksm=32768 frac2=105 ans=582429610 dtans=3440640
l=13 r=15 ksm=16807 frac2=105 ans=584194345 dtans=1764735
l=12 r=15 ksm=46656 frac2=15 ans=584894185 dtans=699840
l=11 r=15 ksm=15625 frac2=15 ans=585128560 dtans=234375
l=10 r=15 ksm=16384 frac2=3 ans=585177712 dtans=49152
l=9 r=15 ksm=2187 frac2=3 ans=585184273 dtans=6561
l=8 r=15 ksm=256 frac2=1 ans=585184529 dtans=256
l=7 r=15 ksm=1 frac2=1 ans=585184530 dtans=1l=13 r=14 ksm=46656 frac2=15 ans=585884370 dtans=699840
l=12 r=14 ksm=15625 frac2=15 ans=586118745 dtans=234375
l=11 r=14 ksm=16384 frac2=3 ans=586167897 dtans=49152
l=10 r=14 ksm=2187 frac2=3 ans=586174458 dtans=6561
l=9 r=14 ksm=256 frac2=1 ans=586174714 dtans=256
l=8 r=14 ksm=1 frac2=1 ans=586174715 dtans=1l=12 r=13 ksm=16384 frac2=3 ans=586223867 dtans=49152
l=11 r=13 ksm=2187 frac2=3 ans=586230428 dtans=6561
l=10 r=13 ksm=256 frac2=1 ans=586230684 dtans=256
l=9 r=13 ksm=1 frac2=1 ans=586230685 dtans=1l=11 r=12 ksm=256 frac2=1 ans=586230941 dtans=256
l=10 r=12 ksm=1 frac2=1 ans=586230942 dtans=1458729432

Code:

B. 排列计数 (count)

Code:

C. 树上染黑 (black)

Code:

D. 摆放花盆 (gardener)

Code:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用指南:【编号508】(道路分类)湖南路网数据湖南路网分类数据(2025年)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux 文件及相关安全操作指南

Linux 文件及相关安全操作指南 Linux根目录项一行说明 一、Linux 根目录各文件夹一行说明(基础回顾)根目录文件夹 一行核心用途bin 系统启动与普通用户可用的基础可执行程序(如ls、cp)boot 启动相关文件(内核vmli…

day012

今日完成:学习了mysql的数据库编辑,添加. 明日完成:数据库 遇到问题:无

怎么能把一个横着的很长的excel表,输出成一个能完整展示在一个页面中的PDF

参考链接:https://blog.csdn.net/qq_34972627/article/details/128139320 横向的Excel输出为pdf自动分成两页怎么办?不分页,铺满整张纸的方法来了

深入解析:Leetcode+Java+图论+岛屿问题

深入解析:Leetcode+Java+图论+岛屿问题pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

简单介绍

简单介绍AI Agent 即人工智能体,通常是指有能力主动思考和行动的智能体,能够以类似人类的方式工作,通过大模型来 “理解” 用户需求,主动 “规划” 以达成目标,使用各种 “工具” 来完成任务,并最终 “行动” 执…

agent认知与原理分析

agent认知与原理分析1

agent策略分析与Parer解读

agent策略分析与Parer解读1

夸克网盘免费扩容,新用户轻松领取1TB免费空间!一步一步教你如何操作! - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Visual Studio 2022连接mysql数据库,解决System.Data.Odbc.OdbcException (0x80131937)

首先我们要下载MySQL ODBC驱动,下载地址: https://downloads.mysql.com/archives/c-odbc/ 下载Windows (x86, 64-bit), MSI Installer 了解ODBC:接下来要连接mysql数据库了,参考这位前辈的笔记:https://blog.csdn…

[AI生成]Spark-TTS个人理解

Spark-TTS 是一个在设计思路上非常清晰、工程结构合理、适合个人开发者学习和二次开发的优秀开源 TTS 项目。以下是它值得肯定的几个关键点,也解释了为什么它特别适合学习:✅ 为什么 Spark-TTS 适合个人开发者学习?…

2025.10.3 测试

DP+线段树/容斥+DP/贪心+构造/Ad-hocA. 思考如何匹配子序列,肯定是贪心的能扩展就扩展,将这个过程改写成 DP 。 设 \(f[i, j]\) 表示 \(S\) 匹配了 \(i\) 位,\(T\) 匹配了 \(j\) 位的方案数。 枚举下一位匹配位置得…

[20251015]建立和完善col_vlist.sql脚本.txt

[20251015]建立和完善col_vlist.sql脚本.txt--//建立一个支持视图的版本,由于oracle没有视图提取字段信息的视图,只能通过desc提取,通过bash shell处理生成需要的脚本。--//如果有哪个视图支持提取视图字段信息的,…

[20251014]建立和完善col_list.sql脚本.txt

[20251014]建立和完善col_list.sql脚本.txt--//增加选择字段顺序号功能。$ cat col_list.sql-- Copyright 2023 lfree. All rights reserved.-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for…

[20251014]建立完善通用的prx.sql脚本.txt

[20251014]建立完善通用的prx.sql脚本.txt--//前几天更改了tpt的prr.sql,想实现一个更加通用pr.sql的版本。自己做一些尝试:--//参数1支持2种格式,第1种格式使用数字序列使用,分开,输出对应字段。第2种格式使用正则…

倍增法

引入 对于任意的整数n,都可以将他拆分为有限个二次幂的和(即二进制拆分)。 那么我们就可以将规模为n的大问题拆分为许多区间长度为二的幂次的小问题。 这样,如何快速解决区间长度为二的幂次的问题就是我们想关心的…

复杂版式与印章干扰下的高精度社会团体法人登记证书识别技术

在社会治理和公共服务日益数字化的今天,社会团体法人登记证书作为社会组织的“身份证”,其信息处理的效率与准确性至关重要。传统的人工录入方式耗时耗力、易出错,已成为制约政务效率和金融服务体验的瓶颈。因此,基…

征程 6 | BPU trace 简介与实操

一、BPU trace 理论基础 在学习 BPU trace 前,希望大家对 UCP trace 已经有简单的了解,详情可见工具链用户手册《统一计算平台(UCP)-UCP 性能分析工具-UCP Trace 使用说明》章节。 1.1 BPU Trace 配置文件模板 在 …

2025年预应力千斤顶厂家最新权威推荐榜:批发采购、张拉设备、同步顶升系统专业供应商综合测评与选购指南

2025年预应力千斤顶厂家最新权威推荐榜:批发采购、张拉设备、同步顶升系统专业供应商综合测评与选购指南预应力技术作为现代工程建设中的核心技术之一,在桥梁、建筑、水利等基础设施建设领域发挥着不可替代的作用。随…