CSP-S模拟5复盘

server/2024/10/19 5:20:20/

T1

题目描述

小 S 在和小 W 玩游戏!

小 S 有一个 n 阶排列 p1,p2,⋯,pn。小 S 和小 W 轮流操作,小 S 先手。每次操作时,玩家可以以任意顺序重排 p1,p2,⋯,pp1。如果一个玩家操作时发现 p1 和自己之前某次操作时的 p1 相同,那么这名玩家就会输掉游戏。

小 S 和小 W 都足够聪明,所以小 W 一眼就看出小 S 的这个排列是先手必胜的!为了公平,小 W 提出在所有 n 阶排列中随机一个作为初始排列。听到这个提议,小 S 决定先计算自己的胜率。他需要你帮忙计算所有 n 阶排列中有多少个是后手必胜的。

答案对 10^9+7 取模。

输入格式

第一行一个正整数 n。

输出格式

一行一个非负整数,表示后手必胜的排列数对 10^9+7 取模后的结果。

思路

先手必胜当且仅当p1不是p1~p1的最小值。
反之,先手操作后原来的p1肯定在长度为新的p1的前缀内,这样后手就能把原来的p1再换回来,先手就输了。如果满足条件,先手可以把长度为p1的前缀内的最小值换到开头,同理后手就输了。
枚举p1,设p1=k,答案为:
((n-k)!/((n-k)-(k-1))!)*(n-k)!

代码

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int mod=1e9+7,N=2e7+9; 
int n;
int jc[N],inv[N];
int qp(int a,int b){int ans=1;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}
int C(int n,int m){if (n<m) return 0;return jc[n]*inv[m]%mod*inv[n-m]%mod;
}
signed main()
{cin>>n;jc[0]=1;for (int i=1;i<=n;i++){jc[i]=jc[i-1]*i%mod;}inv[n]=qp(jc[n],mod-2);for (int i=n-1;i>=1;i--){inv[i]=inv[i+1]*(i+1)%mod;} inv[0]=1;int ans=jc[n-1];for (int i=2;i<=n;i++){ans=(ans+C(n-i,i-1)*jc[i-1]%mod*jc[n-1-(i-1)]%mod)%mod;}cout<<ans;return 0;
}

T2

题目描述

小 S 喜欢研究数对。他最近对满足如下性质的数对 (a,b) 产生了兴趣:

σ(a)+σ(b)=σ(gcd(a,b))+σ(lcm(a,b)),其中 σ(k) 表示 k 的因数个数。
如果 (a,b) 满足以上性质,那么小 S 称其是好的。现在,小 S 希望你在使得 1≤a≤b≤n 的所有数对 (a,b) 中,求出其中好的数对的 σ(a)+σ(b) 之和。

输入格式

第一行一个正整数 n。

输出格式

一行一个非负整数,答案。

思路

当a<=b时,(a,b)是好的当且仅当a|b
所以问题变为统计:
∑ σ(a)+σ(b)
a∣b

代码

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e6+9; 
int n;
int f[N];
signed main()
{cin>>n;for (int i=1;i<=n;i++){for(int j=i;j<=n;j+=i){f[j]++;} }int ans=0;for (int i=1;i<=n;i++){ans+=f[i]*f[i];ans+=(n/i)*f[i];}cout<<ans;return 0;
}

T3,T4

滤过


http://www.ppmy.cn/server/132954.html

相关文章

Error: testWhileIdle is true, validationQuery not set

说明 连接数据库&#xff0c;启动的时候报错&#xff1a;testWhileIdle is true, validationQuery not set。但是不影响系统使用&#xff0c;数据库等一切访问正常。 原因 空闲的时候需要进行检测&#xff0c;但是检测的查询语句没有设置。大致意思就是说&#xff0c;当数据…

Windows 10 安装配置WSL2

一、开启HyperV 1.打开控制面板&#xff1a; 在 Windows 搜索栏中输入“控制面板”&#xff0c;然后打开它。 2.程序和功能&#xff1a; 点击“程序”&#xff0c;然后选择“启用或关闭 Windows 功能”。 3.启用 Hyper-V&#xff1a; 在弹出…

软件定义汽车时代,当前智能汽车软件开发模式是什么?

软件定义汽车&#xff0c;EE架构从分布式向中央计算演进。当前智能汽车控制器正在从智驾域、座舱域、车身域、动力域和底盘域等五域于一体的网关时代向可能仅剩下前区、后区控制器的中央计算时代演进。 智舱一体、行泊一体大融合情况下&#xff0c;智能汽车的开发模式是什么&a…

bml上部署yolov8

第一步 #第二步 在这里插入代码片git clone https://github.com/ultralytics/ultralytics.git一定要创建一个storage来专门存放yolov8&#xff0c;放在其他路径容易出错。 如果下载之后storage路径里面没有ultralytics&#xff0c;那是没有下载成功&#xff0c;多下载几次就行…

第一百零七周周报

学习时间&#xff1a; 2024.10.12-2024.10.18 学习产出&#xff1a; 这周大部分时间都在黄山开会&#xff0c;目前cifar10还没调好&#xff0c;celebA128的fid到了13点多&#xff0c;还没有跑完&#xff0c;其他时间都在找工作。

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…

【在Linux世界中追寻伟大的One Piece】应用层自定义协议|序列化

目录 1 -> 应用层 2 -> 网络版计算器 3 -> 序列化与反序列化 4 -> 重新理解read、write、recv、send和tcp为什么支持全双工 5 -> 开始实现 5.1 -> 定制协议 5.2 -> 关于流式数据的处理 1 -> 应用层 应用层是OSI模型或TCP/IP模型中的最高层&…

Leetcode 1137. 第 N 个泰波那契数

原题链接&#xff1a;Leetcode 1137. 第 N 个泰波那契数 代码1&#xff1a; class Solution { public:int a[40];int tribonacci(int n) {a[0]0;a[1]1;a[2]1;if(n<1) return n;if(a[n]) return a[n];a[n]tribonacci(n-1)tribonacci(n-2)tribonacci(n-3);return a[n];} };代…