首页 > 其他分享 >SMU Winter 2024 div2 ptlks的周报Week 2(1.29-2.4)

SMU Winter 2024 div2 ptlks的周报Week 2(1.29-2.4)

时间:2024-02-04 11:33:21浏览次数:35  
标签:Week Winter int SMU cin long -- dp MOD

这周学习到的知识点有 斯特林数( F 鸡数题!

F 鸡数题!

思路

第二类斯特林数

代码

#include <bits/stdc++.h>
#define int long long
#define MOD 1000000007
using namespace std;

int n,m,f[100005],fi[100005];

int qpow(int a, int n){
	int ans = 1;
	while(n){
		if(n&1){
			ans *= a;
			ans %=MOD;
		}
		a *= a;
		a %=MOD;
		n >>= 1;
	}
	return ans%MOD;
}
void fa(){
	f[0]=fi[0]=1;
	for(int i=1;i<100005;i++){
		f[i]=i*f[i-1]%MOD;
		fi[i]=qpow(i,MOD-2)*fi[i-1]%MOD;
	}
}


int32_t main() {
	int T=1;
	//cin>>T;
	while (T--) {
		cin>>n>>m;
		if(n<m){
			cout<<0<<endl;
		}else{
		fa();
		int s=0;
		for(int i=0;i<=m;i++){
			int t=qpow(i,n);
			t*=fi[i]*fi[m-i]%MOD;
			t%=MOD;
			if((m-i)%2)s-=t;
			else s+=t;
		}
		s=(s%MOD+MOD)%MOD;
		cout<<s;
		}
	}
	return 0;
}

P8802 [蓝桥杯 2022 国 B] 出差

思路

最短路

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n,a[1005];
vector<pair<int,int>> g[10005];
vector<int> vis(1005, 0),mn(1005,INT64_MAX);


void f(int x,int s) {
	if(s<mn[x])mn[x]=s;
	vis[x]=0;
	for(int i=0;i<g[x].size();i++){
		if(!vis[x]){
			if(g[x][i].second+s+a[g[x][i].first]<mn[g[x][i].first]){
				f(g[x][i].first,g[x][i].second+s+a[g[x][i].first]);
				vis[g[x][i].first]=0;
			}
		}
	}
}

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int T;
	//cin>>T;
	T = 1;
	while (T--) {
		int m;
		cin >> n>>m;
		for(int i=0;i<n;i++){
			cin>>a[i];
		}
		for(int i=0;i<m;i++){
			int u,v,w;
			cin>>u>>v>>w;
			u--,v--;
			g[u].emplace_back(v,w);
			g[v].emplace_back(u,w);
		}
		f(0,0);
		cout<<mn[n-1]-a[n-1];
	}

	return 0;
}

P8806 [蓝桥杯 2022 国 B] 搬砖

思路

由题意不难得出排序条件为价值与重量之和,之后背包dp即可

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, w[1005], v[1005], f[40005];
vector<pair<int, int>> a;


int cmp(pair<int, int> x, pair<int, int> y) {
	return x.second + x.first <= y.second + y.first;
}

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int T;
	//cin>>T;
	T = 1;
	while (T--) {
		cin >> n;
		for (int i = 0; i < n; i++) {
			cin >> w[i] >> v[i];
			a.emplace_back(make_pair(w[i], v[i]));
		}
		sort(a.begin(), a.end(), cmp);
		int mx=0;
		for (int i = 0; i < n; i++) {
			for (int j = a[i].first+a[i].second; j >= a[i].first; j--) {
				f[j] = max(f[j], f[j - a[i].first] + a[i].second);
				mx = max(mx, f[j]);
			}
		}
		cout << mx;
	}

	return 0;
}

P8612 [蓝桥杯 2014 省 AB] 地宫取宝

思路

一开始想复杂了,实际可以用四维数组dp

代码

#include <bits/stdc++.h>
#define int long long
#define MOD 1000000007
using namespace std;

int n, m,k,ans=0;
int a[55][55];
int dp[55][55][55][55];

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int T;
	//cin>>T;
	T = 1;
	while (T--) {
		cin >> n>>m>>k;
		for (int i = 1; i <=n; i++) {
			for (int j = 1; j <=m; j++) {
				cin>>a[i][j];
				a[i][j]++;
			}
		}
		for (int j = 1; j <=13; j++) {
			dp[n][m][k][j]=1;
			if(a[n][m]>j)dp[n][m][k-1][j]=1;
		}
		for (int i = n; i >0; i--) {
			for (int j = m; j >0; j--) {
				for (int u = k; u >=0; u--) {
					for (int v = 13; v >=0; v--) {
						if(i==n&&j==m&&(u==k||u==k-1)){
							continue;
						}else{
							if(a[i][j]>v)dp[i][j][u][v]=(dp[i][j+1][u+1][a[i][j]]+dp[i+1][j][u+1][a[i][j]]+dp[i][j+1][u][v]+dp[i+1][j][u][v])%MOD;
							else dp[i][j][u][v]=(dp[i][j+1][u][v]+dp[i+1][j][u][v])%MOD;
						}
					}
				}
			}
		}
		cout<<dp[1][1][0][0];
	}
	
	return 0;
}

标签:Week,Winter,int,SMU,cin,long,--,dp,MOD
From: https://www.cnblogs.com/ptlks/p/18005884

相关文章

  • 24.02 week 1 营业日志
    02.01没补完。T1考虑把区间从短到长排列后双指针,那么需要维护一个集合,加区间删区间询问是否有点被覆盖\(m\)次,这个SGT就行了。02.02T1现在不想写。T2这不就是P9981。考虑这个字典序怎么维护,建分层最长路,在每一层中维护所有节点的相对顺序,则比对两个后继只用比对当前......
  • panghu week04 笔记
    长度最小的子数组一开始想的是框定一个区间,然后如果大于等于target,从区间头弹出一个元素,从尾部append进入一个元素,发现并不能覆盖所有的区间看了题解以后,可以定尾,然后移动头部进行比较funcminSubArrayLen(targetint,nums[]int)int{slide:=make([]int,0)slid......
  • winter 2024 第一周周报
    训练内容winter2024day1题解https://www.cnblogs.com/bible-/p/17980600算是考完试后第一场正式训练,练的蓝桥杯,这场不算难打打恢复下状态 winter2024day2题解https://www.cnblogs.com/bible-/p/17983616组队vp了23年新疆那场,6题第三(队友太厉害了qwq),题基本补了。感觉J......
  • winter 2024 day5
    SMU2024winterround17-1最好的文档1#include<bits/stdc++.h>2usingnamespacestd;3#defineintlonglong4//#defineint__int1285#definedoublelongdouble6typedefpair<int,int>PII;7typedefpair<string,int>PSI;8typedef......
  • week 4-5
    这两周画的饼第十九周(1.8—1.14)搭建国产化相关开发环境;DoD:在树莓派上安装银河麒麟V10操作系统,把Server端移植过去,实现Server端和本机Client端的通信设计用户管理部分的数据库表,在登录跳转界面加入sqlite数据库画ER图和表,在登录跳转界面加入sqlite数据库,实现三员分别跳......
  • SMU 2024 winter round1
    题目链接A.直接输出#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){cout<<"Goodcodeisitsownbestdocumentation."<<'\n';}signedmain(){ios::sync_with_st......
  • SMU 2024 winter round1
    7-1最好的文档#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;i32main(){ios::sync_with_stdio(false),cin.tie(nullptr);cout<<"Goodcodeisitsownbestdocumentation.";return0;}7-2自动编程#includ......
  • winter 2024 day2
    2023中国大学生程序设计竞赛(CCPC)新疆赛区(重现赛H数学思路:有四平方和定理知道,任意正整数可表示为不超过四个整数的平方和。 并且n的范围为1e5,可以枚举出f(x)值为1、2、3、4的平方数组合情况。也可以dp,f[i]=min(f[i],f[i-k*k]+1)#include<bits/stdc++.h>usingnamespacestd......
  • winter 2024 day3
    SMUWinter2024round1AB.SumofMedians思路:贪心的想,只有中位数有贡献,并且知道了中位数的位置以及中位数左边的数的个数l和中位数右边的数的个数r,那么对于一个不递减的数组,要取出最大的中位数,即取出l个最小的数和r个最大的数,中位数即为第r+1大的数。直到数取完为止。......
  • winter 2024 day1
    2024蓝桥杯模拟赛1(div1)  =.=^-^ A[蓝桥杯2021国BC]大写思路:小写转换大写#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128#definedoublelongdoubletypedefpair<int,int>PII;typedefpair<string,int>PSI......