9.30SDFZCSP-J模考总结

我是傻逼我是傻逼我是傻逼我是傻逼\Huge我是傻逼我是傻逼\\我是傻逼我是傻逼\\

T3数组开小痛失50pts!!!!!!

分数

T1 T2 T3 T4 总分
100pts 100pts 50pts 30pts 280pts

T1

简单爆搜

AC code:

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5,mod=9e18;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
int Max(int a,int b){if(a>b)return a;else return b;}
int Min(int a,int b){if(a>b)return b;else return a;}
int add(int A,int B){return A+B>mod?A+B-mod:A+B;}
int sub(int A,int B){return A*B%mod;}
int fpow(int a,int b,int p){if(b==0){return 1;}int res=fpow(a,b/2,p)%p;if(b%2==1){return((res*res)%p*a)%p;}else{return(res*res)%p;}}
void fio(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
int n,k,ans[maxn],vis[maxn];
void dfs(int pos){
	if(pos>n){
		for(int i=1;i<=n;i++){
			printf("%d ",ans[i]);
		}
		puts(" ");
		return;
	}
	for(int i=1;i<=k;i++){
		if(vis[i]<2){
			vis[i]++;
			ans[pos]=i;
			dfs(pos+1);
			vis[i]--;
		}
	}
}
signed main(){
	cin>>n>>k;
	dfs(1);
	return 0;
}

T2

数组模拟链表,存贮每个数前面的数和后面的数,纯傻逼题。

AC code:

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5,mod=9e18;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
int Max(int a,int b){if(a>b)return a;else return b;}
int Min(int a,int b){if(a>b)return b;else return a;}
int add(int A,int B){return A+B>mod?A+B-mod:A+B;}
int sub(int A,int B){return A*B%mod;}
int fpow(int a,int b,int p){if(b==0){return 1;}int res=fpow(a,b/2,p)%p;if(b%2==1){return((res*res)%p*a)%p;}else{return(res*res)%p;}}
void fio(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
int n,m,nxt[maxn],lst[maxn];
signed main(){
	cin>>n>>m;
	nxt[0]=1;
	for(int i=1;i<=n;i++){
		lst[i]=i-1;
		nxt[i]=i+1;
	}
	while(m--){
		int x,y;
		cin>>x>>y;
		int tmp=lst[x];
		nxt[lst[x]]=nxt[x];
		lst[nxt[x]]=tmp;
		
		lst[x]=y;
		nxt[x]=nxt[y];
		
		lst[nxt[y]]=x;
		
		nxt[y]=x;
		
	}
	int pos=0;
	while(nxt[pos]!=n+1){
		cout<<nxt[pos]<<' '; 
		pos=nxt[pos];
	}
	return 0;
}
/*
1 2 3 4 5

1 5 2 3 4
5 2 1 3 4
5 2 1 3 4
5 1 2 3 4 
5 1 3 4 2
*/

T3

一眼题,Kruskal上板子,把没两个点连一条边,求MST即可。

我是傻逼,只开了1e6,艹

AC code

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e7+5,mod=9e18;
const int MAXN=1e6+5;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
int Max(int a,int b){if(a>b)return a;else return b;}
int Min(int a,int b){if(a>b)return b;else return a;}
int add(int A,int B){return A+B>mod?A+B-mod:A+B;}
int sub(int A,int B){return A*B%mod;}
int fpow(int a,int b,int p){if(b==0){return 1;}int res=fpow(a,b/2,p)%p;if(b%2==1){return((res*res)%p*a)%p;}else{return(res*res)%p;}}
void fio(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
struct point{
	int x,y,z;
}poi[maxn];
struct Node{
	int u,v,w;
	bool operator<(Node b) const{
		return w<b.w;
	}
}edge[maxn];
int cnt=0,n;
int fa[maxn];
int find(int x){
	if(fa[x]==x){
		return x;
	}
	return fa[x]=find(fa[x]);
}
void uniset(int x,int y){
	x=find(x);
	y=find(y);
	if(x!=y){
		fa[x]=y;
	}
}
void kruskal(){
	int ans=0;
	for(int i=1;i<=cnt;i++){
		if(find(edge[i].u)!=find(edge[i].v)){
			uniset(edge[i].u,edge[i].v);
			ans+=edge[i].w;
		}
	}
	cout<<ans;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>poi[i].x>>poi[i].y>>poi[i].z;
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			int mini=min(min(abs(poi[i].x-poi[j].x),abs(poi[i].y-poi[j].y)),abs(poi[i].z-poi[j].z));
			edge[++cnt]={i,j,mini};
		}
	}
	sort(edge+1,edge+cnt+1);
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
	kruskal();
	return 0;
}

T4

考时随便码了个DP,样例没过居然30。

考时代码

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e7+5,mod=9e18;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
int Max(int a,int b){if(a>b)return a;else return b;}
int Min(int a,int b){if(a>b)return b;else return a;}
int add(int A,int B){return A+B>mod?A+B-mod:A+B;}
int sub(int A,int B){return A*B%mod;}
int fpow(int a,int b,int p){if(b==0){return 1;}int res=fpow(a,b/2,p)%p;if(b%2==1){return((res*res)%p*a)%p;}else{return(res*res)%p;}}
void fio(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
int n,m,a,b,c,B[maxn],C[maxn],dp[maxn];
signed main(){
	cin>>n>>m>>a>>b>>c;
	for(int i=1;i<=n;i++){
		B[i] = (a = (1ll * a * ((b ^ c) + 20190430ll) + 19260817ll) % 2147483647) , swap(a , b);
		C[i] = (a = (1ll * a * ((b ^ c) + 20190430ll) + 19260817ll) % 2147483647) , swap(a , b);
	}
	for(int i=1;i<=n;i++){
		for(int j=m;j>=0;j--){
			dp[j]=max(dp[j]+C[i],dp[j-1]+B[i]);
		}
	}
	cout<<dp[m];
	return 0;
}
posted @   KK_SpongeBob  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
点击右上角即可分享
微信分享提示