2024.7.15 csp-j第一场模拟赛赛后总结

题目:

T1:P1211 [USACO1.3] 牛式 Prime Cryptarithmicon-default.png?t=N7T8https://www.luogu.com.cn/problem/P1211

T2:P2035 [USACO08JAN] iCow Bicon-default.png?t=N7T8https://www.luogu.com.cn/problem/P2035

T3:P6207 [USACO06OCT] Cows on Skates Gicon-default.png?t=N7T8https://www.luogu.com.cn/problem/P6207

T4:P2903 [USACO08MAR] The Loathesome Hay Baler Sicon-default.png?t=N7T8https://www.luogu.com.cn/problem/P2903

T1 :题目分析:

        模拟三位数和两位数,判断个个位置上的数是否在序列里出现。计算两个部分的乘积得到s1,s2;将两位数和三位数相乘得到s3,同样判断这三个数是否满足各自位数要求(s1,s2三位数,s3四位数)和各个数字都由序列中的数组成。如果都满足,答案++。最后输出答案。

        代码:

#include <bits/stdc++.h>
using namespace std;
bool p[15];
bool f(int n) { 
	while(n) {
		if(p[n%10]==0)
			return 0;
		n/=10;
	}
	return 1;
}
bool check(int x,int y) {
	int a=x*(y%10),b=x*(y/10),test=x*y;
	if(a>999 || b>999 || test>9999)
		return 0;
	if(f(x)==1 && f(y)==1 && f(a)==1 && f(b)==1 && f(test)==1)
		return 1;
	else
		return 0;
}
int main() {
	int n,key,ans=0;
	cin>>n;
	for(int i=0; i<n; i++) {
		cin>>key;
		p[key]=true;
	}
	for(int i=100; i<1000; i++) {
		for(int j=10; j<100; j++) { 
			if(check(i,j)==1)
				ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

错因:未读懂题意导致判断条件不全。

T2:题目分析:重复执行T次,每次打擂台选出最大值。然后将其值平均分给其余n-1首曲子,它本身的权值清零。如果一首曲子的权值无法被平均分配(也就是说,无法被 N−1 整除),那么被除的余数部分将会以 1 为单位,顺次分配给排名靠前的曲子(也就是说,顺序为曲目 1 、曲目 2⋯ 依次下去。当然,刚播放过的那首曲子需要被跳过),直到多出的部分被分配完。

按照题目要求模拟即可。

#include<bits/stdc++.h>
using namespace std;
int n,t,a[1005],sum;
int main() {
	int i;
	cin>> n;
	cin>> t;
	for(i=1; i<=n; i++) {
		scanf("%d",&a[i]);
	}
	while(t--) {
		int mx=0,j=1;
		for(i=1; i<=n; i++) {
			if(a[i]>mx) {
				mx=a[i];
				j=i;
			}
		}
		sum=a[j]/(n-1);
		cout<< j<<endl;
		for(i=1; i<=n; i++) {
			if(i!=j)a[i]+=sum;
		}
		if(a[j]%(n-1)!=0) {
			sum=a[j]%(n-1);
			for(i=1; i<=n&&sum; i++) {
				if(i!=j) {
					a[i]++;
					sum--;
				}
			}
		}
		a[j]=0;
	}
	return 0;
}

错因:最后未平均分部分分配过程有误。

T3  运用深搜求路径,“*”不可走,“.”可走。用一个数组将沿途可行进的下标存储。到达后统一输出。搜索过程中,边界条件和结束条件和之前相同。

#include<bits/stdc++.h>
using namespace std;
int r,c,num=1,k[10000][2],vis[120][80];
char a[120][80];
int dx[4]= {1,0,-1,0};
int dy[4]= {0,1,0,-1}; 
void print() {
	for(int i=1; i<=num; i++)
		cout<<k[i][0]<<" "<<k[i][1]<<endl;
}
void dfs(int x,int y) {
	if(x==r&&y==c) {
		print();
	return ;
	}
	for(int i=0; i<4; i++) {
		int nx=x+dx[i],ny=y+dy[i];
		if(!vis[nx][ny]&&nx>0&&nx<=r&&ny>0&&ny<=c&&a[nx][ny]=='.') {
			vis[nx][ny]=1;
			num++;
			k[num][0]=nx;
			k[num][1]=ny;
			dfs(nx,ny);
			num--;
		}
	}
}
int main() {
	cin>>r>>c;
	for(int i=1; i<=r; i++)
		for(int j=1; j<=c; j++)
			cin>>a[i][j];
	vis[1][1]=1;
	k[1][0]=1;
	k[1][1]=1;
	dfs(1,1);
	return 0;
}

错因:未想到使用数组存储。

T4:先判断每个齿轮能连接的齿轮然后bfs

代码借鉴(自题解)

#include<bits/sydc++.h>
using namespace std;
int n,fx,fy,x[1055],y[1055],r[1055],sNo,fNo,Map[1055][1055],num[1055];
bool vis[1055];
struct Node {
	int No;
	double v,sum;
};
queue<struct Node> que;
void judge() {
	for(int i=1; i<=n; i++) {
		for(int j=i+1; j<=n; j++) {
			int dis=0;
			double dist;
			dis+=(x[i]-x[j])*(x[i]-x[j]);
			dis+=(y[i]-y[j])*(y[i]-y[j]);
			dist=sqrt(dis);
			if(r[i]+r[j]>=dist) {
				num[i]++;
				num[j]++;
				Map[i][num[i]]=j;
				Map[j][num[j]]=i;
			}
		}
	}
}
void bfs() {
	struct Node now;
	now.No=sNo,now.v=10000,now.sum=10000;
	que.push(now);
	vis[sNo]=true;
	while(!que.empty()) {
		struct Node now;
		now=que.front();
		que.pop();
		if(now.No==fNo) {
			cout<<(int)now.sum;
			return;
		}
		for(int i=1; i<=num[now.No]; i++) {
			if(vis[Map[now.No][i]]) continue;
			struct Node next;
			next.No=Map[now.No][i];
			next.v=now.v*r[now.No]/r[Map[now.No][i]];
			next.sum=now.sum+next.v;
			que.push(next);
			vis[Map[now.No][i]]=true;
		}
	}
}

int main() {
	cin>>n>>fx>>fy;
	for(int i=1; i<=n; i++) {
		cin>>x[i]>>y[i]>>r[i];
		if(!x[i]&&!y[i]) sNo=i;
		if(x[i]==fx&&y[i]==fy) fNo=i;
	}
	judge();
	bfs();
	return 0;
}

错因:不会

考试总结:本次考试非常糟糕。由于经验不足等原因造成了这次结果。下次努力!!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 16:50:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 16:50:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 16:50:01       58 阅读
  4. Python语言-面向对象

    2024-07-16 16:50:01       69 阅读

热门阅读

  1. HTML的文档类型与字符集<!DOCTYPE html>

    2024-07-16 16:50:01       22 阅读
  2. C++——类与对象(中)

    2024-07-16 16:50:01       23 阅读
  3. num = num++; 这段代码为什么是0?

    2024-07-16 16:50:01       20 阅读
  4. YOLOv5 更换Neck之 BiFPN

    2024-07-16 16:50:01       20 阅读
  5. 【12】奇偶数判断

    2024-07-16 16:50:01       19 阅读
  6. 域名转让要多久?

    2024-07-16 16:50:01       21 阅读
  7. MySQL 中的 CURDATE() 用法

    2024-07-16 16:50:01       20 阅读
  8. python join

    2024-07-16 16:50:01       20 阅读
  9. C语言——局部变量和全局变量

    2024-07-16 16:50:01       18 阅读
  10. 心跳检测的艺术:Eureka服务发现中的智能配置

    2024-07-16 16:50:01       21 阅读