【jxoi2018】游戏 组合数学
首先令$n=r-l+1$。
令$k$表示区间$[l,r]$中存在多少个数$x$,使得$x$不存在小于$x$且在区间$[l,r]$中的因数,我们把包含这些数的数集称为$S$
我们来先想一个$O(nk)$的$min-max$容斥做法吧。。。。。
显然这一题我们可以转化为min-max容斥的模型(将这k个数选完期望需要选多少次)
$max_{S}=\sum_{T∈S}(-1)^{|T+1|}min_{T}$。
令$P_x=\sum_{T∈S\ and\ |T|=x} min_{T}$。
我们推一推式子就会发现$P_i=x!(n-x)!\sum_{i=1}{n-k+1}i\binom{n-i}{k-i}$。
然后我们发现这个式子是$O(n^2)$的,而且非常难以推出。
代码如下(这个代码可能有点假)
#include<bits/stdc++.h>
#define L long long
#define MOD 1000000007
#define M 10000005
using namespace std; L pow_mod(L x,L k){L ans=; for(;k;k>>=,x=x*x%MOD) if(k&) ans=ans*x%MOD; return ans;}
L fac[M]={},invfac[M]={};
L C(int n,int m){return fac[n]*invfac[m]%MOD*invfac[n-m]%MOD;} int vis[M]={};
int n,k=; L p[M]={}; int main(){
fac[]=; for(int i=;i<M;i++) fac[i]=fac[i-]*i%MOD;
invfac[M-]=pow_mod(fac[M-],MOD-);
for(int i=M-;~i;i--) invfac[i]=invfac[i+]*(i+)%MOD; int l,r; cin>>l>>r; n=r-l+;
for(int i=l;i<=r;i++){
if(vis[i]) continue;
k++;
for(int j=i;j<=r;j+=i) vis[j]=;
} for(int x=;x<=k;x++){
L now=;
for(int i=;i<=n-x+;i++){
L s=i;
for(int j=;j<x;j++) s=s*(n-i-j+)%MOD;
now=(now+s)%MOD;
}
p[x]=now*x%MOD*fac[n-x]%MOD;
}
L ans=;
for(L x=,zf=;x<=k;x++,zf=-zf){
ans=(ans+zf*p[x]*C(k,x)%MOD+MOD)%MOD;
}
cout<<ans<<endl;
}
考虑一些简单的方法
我们考虑回题目中的枚举排列。令$F_i$表示 $t(p)=i$的排列个数,那么答案显然为$\sum_{i=k}^{n}F_i$
不难发现,一种$t(p)=i$的排列,其前$i-1$项中必包含有数集$S$中$k-1$个数,且第i个数必为数集$S$中的数。
那么不难求出$F_i=k(n-k)!\dfrac{i!}{(i-k)!}$
答案即为$k(n-k)!\sum_{i=k}^{n} \dfrac{i!}{(i-k)!}$
随便求一求就好了
#include<bits/stdc++.h>
#define L long long
#define MOD 1000000007
#define M 10000005
using namespace std; L pow_mod(L x,L k){L ans=; for(;k;k>>=,x=x*x%MOD) if(k&) ans=ans*x%MOD; return ans;}
L fac[M]={},invfac[M]={};
L C(int n,int m){return fac[n]*invfac[m]%MOD*invfac[n-m]%MOD;} int vis[M]={};
int n,k=; L p[M]={}; int main(){
fac[]=; for(int i=;i<M;i++) fac[i]=fac[i-]*i%MOD;
invfac[M-]=pow_mod(fac[M-],MOD-);
for(int i=M-;~i;i--) invfac[i]=invfac[i+]*(i+)%MOD; int l,r; cin>>l>>r; n=r-l+;
for(int i=l;i<=r;i++){
if(vis[i]) continue;
k++;
for(int j=i;j<=r;j+=i) vis[j]=;
}
L ans=k*fac[n-k]%MOD,sum=;
for(int i=k;i<=n;i++)
sum=(sum+fac[i]*invfac[i-k])%MOD;
cout<<ans*sum%MOD<<endl;
}
【jxoi2018】游戏 组合数学的更多相关文章
- luogu P4562 [JXOI2018]游戏 组合数学
LINK:游戏 当L==1的时候 容易想到 答案和1的位置有关. 枚举1的位置 那么剩下的方案为(R-1)! 那么总答案为 (R+1)*R/2(R-1)! 考虑L==2的时候 对于一个排列什么时候会终 ...
- 洛谷P4562 [JXOI2018]游戏(组合数学)
题意 题目链接 Sol 这个题就比较休闲了. \(t(p)\)显然等于最后一个没有约数的数的位置,那么我们可以去枚举一下. 设没有约数的数的个数有\(cnt\)个 因此总的方案为\(\sum_{i=c ...
- 【BZOJ5323】[JXOI2018]游戏(组合计数,线性筛)
[BZOJ5323][JXOI2018]游戏(组合计数,线性筛) 题面 BZOJ 洛谷 题解 显然要考虑的位置只有那些在\([l,r]\)中不存在任意一个约数的数. 假设这样的数有\(x\)个,那么剩 ...
- [JXOI2018]游戏 (线性筛,数论)
[JXOI2018]游戏 \(solution:\) 这一道题的原版题面实在太负能量了,所以用了修改版题面. 这道题只要仔细读题,我们就可以将题目的一些基本性质分析出来:首先我们定义:对于某一类都可以 ...
- 【题解】JXOI2018游戏(组合数)
[题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: ...
- BZOJ5323 JXOI2018游戏(线性筛+组合数学)
可以发现这个过程非常类似埃氏筛,将在该区间内没有约数的数定义为质数,那么也就是求每种方案中选完所有质数的最早时间之和. 于是先求出上述定义中的质数个数,线性筛即可.然后对每个最短时间求方案数,非常显然 ...
- [BZOJ 5323][Jxoi2018]游戏
传送门 \(\color{green}{solution}\) 它每次感染的人是它的倍数,那么我们只需要找出那些除了自己以外在\(l\), \(r\)内没有别的数是 它的约数的数,在这里称其为关键数. ...
- [JXOI2018]游戏
嘟嘟嘟 九条可怜竟然有这种良心题,似乎稍稍刷新了我对九条可怜的认识. 首先假设我们求出了所有必须要筛出来的数m,那么\(t(p)\)就只受最后一个数的位置影响. 所以我们枚举最后一个数的位置,然后用组 ...
- 洛谷P4562 [JXOI2018]游戏 数论
正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在t(i)那个位置上?显然是[l,r]中所有无法被表示出来的数(就约数不在[l,r]内的数嘛QwQ 所以可以先把这些数筛出来 具体怎么筛的话 ...
随机推荐
- 使用java做paypal开发时购买东西支付不成功的原因
使用java做paypal开发时购买东西支付不成功的原因 没有设置网站习惯设定,登陆自己的paypal账户,在网站习惯设定上填写回调的url路径,这样就可以 支付成功了并且异步修改订单的状态. 支付成 ...
- 43 We were Born to Nap 我们天生需要午睡
We were Born to Nap 我们天生需要午睡 ①American society is not nap-friendly.In fact, says David Dinged, a sle ...
- memmove、memcpy、strcpy、memset的实现
memmove.memcpy.strcpy.memset 原型为: void *memmove( void* dest, const void* src, size_t count ); char* ...
- C语言之预处理命令与用typedef命名已有类型
预处理命令 主要是改进程序设计环境,以提高编程效率,不属于c语言本身的组成部分,不能直接对它们进行编译,必须在对 程序编译之前,先对程序中的这些特殊命令进行“预处理”.比如头文件. 有以下三类:宏定义 ...
- python 爬取网页内容
#encoding:UTF-8 import urllib import urllib.request import bs4 from bs4 import BeautifulSoup as bs d ...
- (并查集 建立关系)食物链 -- POJ-- 1182
链接: http://poj.org/problem?id=1182 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...
- Dwz(J-UI)框架--入门
http://www.cnblogs.com/chenyongsai/p/4933982.html Dwz(J-UI)框架--入门 一.了解 概述:是中国人自己开发的基于jQuery实现的Ajax R ...
- abp + angular $http + webapi 服务
什么是angular $http服务 http是angularjs的一个核心服务,用于读取远程服务器的数据,也就是封装了浏览器原生的xhtmlrequest对象,可以直接同外部进行通信. 怎样使用an ...
- 避免图片路径访问405,可以用图片控件来显示局部相对路径,不需要域名就不会出现jpg静态资源访问错误
<asp:Image ID="Image1" runat="server"/> protected void Page_Load(object se ...
- 【Kindeditor编辑器】 文件上传、空间管理
包括图片上传.文件上传.Flash上传.多媒体上传.空间管理(图片空间.文件空间等等) 一.编辑器相关参数 二.简单的封装类 这里只是做了简单的封装,欢迎大家指点改正. public class Ki ...