当前位置: 首页 > news >正文

网站首页的尺寸做多大变现流量推广app

网站首页的尺寸做多大,变现流量推广app,网站建设招标2017,客户端 网站开发 手机软件开发传送门 这是我见过的为数不多的良心九怜题之一。 题目大意 给定一个长度为$n$序列,你要在序列末尾加入$m$个$[L,R]$之间的数$m\leq 10^7,L,R\leq 10^9$,使得该序列猴子排序的轮数(一轮是指随机打乱整个序列,不断重复操作直到否有序…

传送门

这是我见过的为数不多的良心九怜题之一。

题目大意

给定一个长度为$n$序列,你要在序列末尾加入$m$个$[L,R]$之间的数$m\leq 10^7,L,R\leq 10^9$,使得该序列猴子排序的轮数(一轮是指随机打乱整个序列,不断重复操作直到否有序)期望最大,求这个最大的期望。

 

题解

假设序列元素互不相同,那么有序的排列方式只有一个,而排列方式的数量有$n!$种,每轮成功的概率是$\frac {1}{n!}$,所以期望轮数是$n!$。

考虑第$i$种元素有$cnt_i$个的序列有多少个。

元素是互不相同的,所以$cnt_i$个第$i$个元素在有序序列中的相对位置是固定的,而元素在这些位置的排列是任意的,所有有序的排列方式有$\prod cnt_i!$个,期望是$\frac {n!}{\prod cnt_i!}$。

若使上式子最大,由于$(n+1)!(n-1)!>(n!)^2$很明显希望使得$\max cnt_i$最小且平均。

那么我们统计原序列中$[L,R]$之间的数,每次加入数量最小的元素,直到加入了$m$个数,最后计算答案即可,这个排一下序优化一下就行了。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define M 200020
#define MAXN 10200010
#define mod 998244353
using namespace std;
namespace IO{const int BS=(1<<20); int Top=0;char Buffer[BS],OT[BS],*OS=OT,*HD,*TL,SS[20]; const char *fin=OT+BS-1;char Getchar(){if(HD==TL){TL=(HD=Buffer)+fread(Buffer,1,BS,stdin);} return (HD==TL)?EOF:*HD++;}void flush(){fwrite(OT,1,OS-OT,stdout);}void Putchar(char c){*OS++ =c;if(OS==fin)flush(),OS=OT;}void write(int x){if(!x){Putchar('0');return;} if(x<0) x=-x,Putchar('-');while(x) SS[++Top]=x%10,x/=10;while(Top) Putchar(SS[Top]+'0'),--Top;}int read(){int nm=0,fh=1; char cw=Getchar();for(;!isdigit(cw);cw=Getchar()) if(cw=='-') fh=-fh;for(;isdigit(cw);cw=Getchar()) nm=nm*10+(cw-'0');return nm*fh;}
}
using namespace IO;
int add(int x,int y){return (x+y>=mod)?x+y-mod:x+y;}
int mul(int x,int y){return (x==1||y==1)?x+y-1:(LL)x*(LL)y%mod;} 
int qpow(int x,int sq){int res=1;for(;sq;sq>>=1,x=mul(x,x)) if(sq&1) res=mul(res,x);return res;
}
int p[M],fac[MAXN],ifac[MAXN],cnt[M],t[M];
int main(){fac[0]=1;for(int i=1;i<MAXN;++i) fac[i]=mul(fac[i-1],i); ifac[MAXN-1]=qpow(fac[MAXN-1],mod-2);for(int i=MAXN-1;i;--i) ifac[i-1]=mul(ifac[i],i);for(int T=read();T;--T){int n=read(),m=read(),l=read(),r=read();int now=r-l+1,num=0,tot=1,ans,tmp=0,fin;for(int i=1;i<=n;i++) cnt[i]=0,p[i]=read();sort(p+1,p+n+1),ans=fac[n+m];for(int i=1;i<=n;i++,tot++){while(p[i]==p[i+1]&&i<n) i++,cnt[tot]++; cnt[tot]++;if(p[i]>=l&&p[i]<=r) t[++tmp]=cnt[tot],now--;else ans=mul(ans,ifac[cnt[tot]]);} tot--,sort(t+1,t+tmp+1);for(fin=1;fin<=tmp;fin++){if((LL)(t[fin]-num)*(LL)now>(LL)m) break;m-=(t[fin]-num)*now,now++,num=t[fin];} num+=m/now,m%=now;ans=mul(ans,mul(qpow(ifac[num+1],m),qpow(ifac[num],now-m)));for(int i=fin;i<=tmp;i++) ans=mul(ans,ifac[t[i]]);write(ans),Putchar('\n');}flush(); return 0;
}

转载于:https://www.cnblogs.com/OYJason/p/9821372.html

http://www.lbrq.cn/news/2601685.html

相关文章:

  • 织梦瀑布流网站模板网络销售怎么做
  • 武汉装修网站建设佛山百度seo点击软件
  • 龙岗网站建设服务上海网站搜索引擎优化
  • 做网站需要留什么条件友情链接交易平台源码
  • 网站建设方面的销售经验合肥网站建设优化
  • 清溪做网站搜索广告优化
  • 建设网站要什么手续网上营销方法
  • 淘宝网站代做上海整站seo
  • wordpress翻页数字石家庄关键词优化软件
  • 网站如何留住客户小程序开发流程
  • 成都有实力的网站建设seo线上培训班
  • 去年做哪个网站能致富seo个人优化方案案例
  • 网站建设dede模板免费seo推广优化
  • 怎么查看网站是哪个公司做的最新seo视频教程
  • 西安市做网站的江苏seo技术教程
  • 网站建设管理标准优化设计电子课本
  • 广州白云做网站的公司排行榜网站
  • 建材行业网站建设乱码链接怎么用
  • 武昌网站建设介绍产品的营销推文
  • 代做效果图网站好悟空建站seo服务
  • 把微信小程序做网站域名解析查询站长工具
  • 潮州网站制作推广软件下载
  • 营销型网站建百度关键词seo优化
  • 小程序制作网站app推广拉新平台
  • 哪个网站做外贸年费比较便宜建立个人网站
  • 吉林省建设安全协会网站广告最多的网站
  • 自助游网站开发分析报告总结网站广告投放收费标准
  • 汉聪电商代运营怎么样硬件优化大师下载
  • 怎么自己做网站深圳信息公司做关键词
  • 键盘事件对网站交互营销软文范例500
  • android开发 更改系统默认时区和默认语言
  • ShowDoc与Docmost对比分析:开源文档管理工具的选择指南
  • C++高频知识点(十四)
  • 【MySQL】MySQL中锁有哪些?
  • 一个网页的加载过程详解
  • 蓝桥杯----串口