9.30SDFZCSP-J模考总结
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;
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18575239
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体