省选专练SHOI2017分手是祝愿

ε=(´ο`*)))唉,我什么时候才能找到女票啊。

这个题实际对于考生很友好。

考试可以利用暴力推出正解。

对于5成数据:k==n

那么很明显倒着关灯是唯一最优解。

此时那些约数要选是一个集合。

那么如何处理这个集合?

定义f(i)表示这个集合内还有i个没选

f(i)成立的期望是:f(i-1)=(i)/(n)+(n-i)/(n)*(f(i+1))

转换一下:

0=i*(f(i)-f(i-1))+(n-i)*(f(i)-f(i+1))-n

易得:令g(i)=f(i)-f(i-1)

所以这是对f差分

而g(n)==1

为什么?

如果选了n个那么无论怎么选,这个集合都会变优,所以期望是1的

然后还考查了线性筛逆元。。。

#include<bits/stdc++.h>
using namespace std;
typedef int INT;
#define int long long
const INT N=4e5+100;
const int mod=1e5+3;
int g[N]={0};//f[i]-f[i-1]
int f[N]={0};
int fac[N]={0};
int inv[N]={0};
int a[N]={0};
int quick_pow(int x,int k){
	int ret=1;
	while(k){
		if(k%2==1){
			ret=(ret*x)%mod;
		}
		k/=2;
		x=x*x%mod;
	}
	return ret;
}
int n,k;
int vis[N]={0};
void solve(){
	int t=0;
	for(int i=n;i>=1;i--){
		int p=a[i];
		for(int j=i*2;j<=n;j+=i){
			if(vis[j]){
				p^=1;
			}
		}
		if(p)
			vis[i]=1,t++;
	}
	if(t<=k){
		cout<<t*fac[n]%mod<<endl;
		return;
	}
	g[n]=1;
	for(int i=1;i<=k;i++){
		g[i]=1;
	}
	for(int i=n-1;i>k;i--){
		g[i]=(n+(n-i)*g[i+1]%mod)*inv[i]%mod;
	}
	int ans=0;
	for(int i=1;i<=t;i++){
		ans+=g[i];
		ans%=mod;
	}
	cout<<ans*fac[n]%mod;
}
INT main(){
	scanf("%lld%lld",&n,&k);
	fac[0]=1;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		fac[i]=fac[i-1]*i%mod;
	}
	inv[1]=1;
	int P=mod;
	for(int i=2;i<=n;i++){
		inv[i]=(P-P/i)*inv[P%i]%P;
	}
	solve();
}

转载于:https://www.cnblogs.com/Leo-JAM/p/10079292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
社会的进步导致人们对于学习的追求永不止境,那么追求农业信息化的方式也从单一的田地教程变成了多样化的学习方式。多样化的学习方式不仅仅是需要人们智慧的依靠,还需要能够通过软件的加持进行信息化的价值体现。软件和系统的产生,从表面上来看是方便了某一行业和某一行业的用户,其实是从本质上来说是提高了社会的进步。就拿我们常见的出行而言,滴滴出行看似是为了打车和出行的人方便,但其实通过另外一种程度上来说,可以通过软件应用的调度和发展来为社会、城市出行的发展做出巨大的贡献。我们国家从最早的中国制造业演变到现在的“智造”,就是因为有软件信息系统的价值,能够将一些智慧的因素加入到制造的过程当中,而这一点就是软件系统来改变生产和现实的需求。在计算机时代日益发展的今天,计算机网络正快速融入这个社会的每一个领域。农业的发展是社会当中一种必有可少的方式。果树在种植和培养是直接影响果农及果商的发展,但在果树的资源管理方面还是有着很大的不同,所以信息多样化的果树管理方式很重要。在传统的果树资源管理上还有着很大的约束,为此开发和设计JSP杏种质资源管理系统,该系统内容丰富多彩,用户可以在线进行果杏树的资源查询等。本文还是使用JSP的方式来进行管理的,但在系统建设过程当中也考虑了许许多多信息安全的保护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值