首页 > 其他分享 >3.7

3.7

时间:2023-03-07 22:44:59浏览次数:37  
标签:return int long finv 3.7 ans mod

E. Arena 2100

https://codeforces.com/problemset/problem/1606/E
题意见洛谷。
n,x<=500
题解:显然是一道dp,考虑状态:需要能够随转移变化的状态,而转移显然是生命值的变化和人数的变化,什么生命值最能表征当前状态?最大生命值。故令f[i][j]表示总人数为i,最大生命值为j时的可行方案数。
当j<=i-1时,显然下一步全死,故f[i][j]=ji-(j-1)i;
ELSE f[i][j]=∑(f[k][j-i+1]C(i,k)(i-1)^(i-k));(注意人是不同的)

代码:

#define int long long
using namespace std;
const int N=605,mod=998244353;
int f[N][N],fac[N],finv[N],c[605][605];
int qpow(int x,int y){
	int ans=1;
	while(y){
		if(y&1) ans=ans*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return ans;
}
void init(){
	fac[0]=1;
	for(int i=1;i<=505;i++){
		fac[i]=fac[i-1]*i%mod;
	}
	for(int i=0;i<=505;i++){
		finv[i]=qpow(fac[i],mod-2);
	}
}
int mo(int x){
	x=x%mod;
	if(x<0) x+=mod;
	if(x>mod) x-=mod;
	return x;
}
int C(int n,int m){
	if(m==0) return 1;
	return fac[n]*finv[m]%mod*finv[n-m]%mod;
}
signed main(){
	int n,x;cin>>n>>x;
	init();
	for(int i=2;i<=n;i++){
		for(int j=1;j<=x;j++){
			if(j<=i-1) f[i][j]=((qpow(j,i)-qpow(j-1,i))%mod+mod)%mod;
			else{
				int& w=f[i][j];
				for(int k=1;k<=i;k++){
					w=(w+C(i,k)*f[k][j-i+1]%mod*qpow(i-1,i-k)%mod)%mod;
				}
			}
		}
	}
	int ans=0;
	for(int i=1;i<=x;i++){
		ans=(ans+f[n][i])%mod;
	}
	cout<<ans;
}

New Game Plus! 2200

https://www.luogu.com.cn/problem/CF1415E
题解:观察一波,好像一个dp,一看数据,好像不太行,考虑贪心,而根据数据猜测是一个nlogn解法,可能是用堆。
正经分析开始:其给的k个归零操作实质上是把其分为k+1个组,贪心地,每个组元素不增。当放入一个元素时,获取该组当前地值f[i],f[i]->f[i]+a[k],易知用最大的那一组是最优的,故将组放入堆中,每次取top即可。
代码:

#define int long long
using namespace std;
const int N=5e5+100,INF=1e18;
int n,k;
int a[N],b[N],c[N],cnt[N];
priority_queue<int> q;
signed main(){
	cin>>n>>k;
	int w=n+1,tot=0,ans=0;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++) b[i]=a[n-i+1];
	for(int i=1;i<=k+1;i++) q.push(0);
	for(int i=1;i<=n;i++){
		int x=q.top();q.pop();
		ans+=x;
		q.push(x+b[i]);
	}
	cout<<ans;
}

标签:return,int,long,finv,3.7,ans,mod
From: https://www.cnblogs.com/wjhqwq/p/17190011.html

相关文章

  • 2022.3.7学习总结
    按照我们敬爱的建民老师的要求,我对我的UI交互界面做了一些优化,包括两个方面,首先是按钮的风格,接着又解决了标题栏的问题。 由于能力有限,暂时设计不出更加漂亮的标题栏,于......
  • 3.7
    今天我上了数据库的课感觉收获很多,我觉得数据库这门课很有吸引了,我非常喜欢杨老师这个讲课节奏。我下午学了python,我自学if语句,python没有大括号,而是空四个字节,等等,我上课......
  • 学习记录(3.7)
    学习时长:5h代码行数:约40行今天上午跟外教学习了用英语表示不同的心情,并且知道了不同词之间意思的不同。之后在数据库课上学习了sql语句,并且从基础了解了一下......
  • 2023.3.7每日总结
    今天学习了获取系统时间并且使用DatePicker标签自由选择时间<DatePickerandroid:layout_margin="10dp"android:id="@+id/select_time"and......
  • 2023.3.7
    最近过的好艰难。从研究生上岸到研一上学期,再到今天,回学校快一个月了。想着去实习,老师也同意了。老师的要求其实很低,会调参就行,具体做下来,真的好难,keras没学过,word2vec文章......
  • 每日总结3.7
    每日总结:所花时间:5h代码量:0行博客量:1篇————————————~~~~~~刷~~~~~————————————————今天的课程有英语、数据库与python......
  • 2023.3.7
    其实是3.4那天的模拟赛,那天打的挺崩溃来着,但是后来停电了(就很乐),于是比赛没打完,然后一直没来电就提前放学了捏。今天重赛了,来写写。T1P1169[ZJOI2007]棋盘制作传送门......
  • 2023.3.7每日总结
    开发Android应用也需要以下5步:开发工具安装和配置搭建开发环境在AndroidStudio中,创建第一个项目完成简单Helloworld代码编写编译APK文件,让应用在手机上......
  • 3.7号今日总结
    1.本节学习路线图路线图分析: 从上面的路线图,可以看出TableLayout的用法还是很简单的,无非就是确定表格的行数,以及使用那三个属性来设置每一行中的第某列的元素隐藏,......
  • 2023.3.6~2023.3.7 日寄
    2023.3.6外培Day0日寄\(~~~~\)这天主打的就是一个摆。\(~~~~\)上午上车前在看《基督山伯爵》,上了车本性暴露直接拿出电脑开摆。先解了半个多小时babaisyou,然后......