专栏文章

CSP-J模拟赛1—总结

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minq5scl
此快照首次捕获于
2025/12/02 06:32
3 个月前
此快照最后确认于
2025/12/02 06:32
3 个月前
查看原文

CSP-J模拟赛1—总结

2025.10.1

个人感受

这次做题情况还是很不理想的,只有 9090 分,我在做的时候的问题就是不喜欢用纸和笔去思考,就在 dev 上面一顿写,结果想到的东西老是还没打出来就忘记了,还容易把自己绕晕。
T1 我的问题就是在思考的时候想到了超过 240240 的情况,但是没有想超过 240240 就一次性做完再走,我的代码里面写的是超过 240240 就让他先去隔离 77 天再回来继续做,浪费了鸡尾酒很多时间。
T2 的问题就是没有想到预处理,同时我的变量该赋值为 1-1 的我却赋值成了 00,导致爆 00
T3 考的是绝对值得运用,正如我开始所说,我没有在纸上面思考,没有画图,所以没有找出最优方法,而是直接暴力去枚举的。
T4 在考的时候没有什么思路,能感觉出来是要用 dp 来做,但是没有深入去思考,也就没有找到问题的方法。我这道题尝试过用贪心来做,但是错了,所以到后面就没再思考了,去继续想前面的题了。

T1 isolate 隔离

题意:

办公时间超过 240240 分钟就会被隔离,AABB 两地往返时间 400400 分钟,求完成 nn 件事所用的最短时间。

思路:

考试的时候思路有点混乱,所以重复做了一些无意义的事。
正解:
在便利 aa 数组时判断 a[i]a[i] 是否大于或等于 240240,如果是的话,肯定是一次性完成最优,先在 BB 地把所有工作做完了再回去。
如果小于 240240 的话,就每次判断加上新的数之后是否超过 240240,超过就做处理:往返 ABAB 一次时间加 400400

Code:

CPP
	while(n){
		int a;cin>>a;
		if(a>=240) b=1;
		s1+=a; //全加上 
		p+=a;
		if(p>=240){ //多了 
			s2=s2+p+400-a;
			p=a;
		}
		n--;
	}
	if(b==1){  
		cout<<s1;
		return 0;
	}

T2 sump 和积

题意:

求在 nnmm 之间数位和为 kk 的数的数位积最大的数的最小值。

思路:

先预处理一下,把所有数字的和与积都用数组存起来,在循环里面直接用就好了。
和与积的规律:
  • sum[x]=sum[x÷10]+(xmod10)sum[x] = sum[x \div 10] + (x \bmod 10)
  • cmp[x]=cmp[x÷10]×(xmod10)cmp[x] = cmp[x \div 10] \times (x \bmod 10)

Code:

CPP
	for(int i=1; i<=9; i++) {
		sum[i]=i;
		cmp[i]=i;
	}
	for(int i=10; i<=AW-10; i++) {
		sum[i]=sum[i/10]+i%10;
		cmp[i]=cmp[i/10]*(i%10);
	}


	for(int i=M; i<=N; i++) {
		if(sum[i]==k) {
			if(cmp[i]>ans2) {
				ans2=cmp[i];
				ans1=i;
			}
		}
	}

T3 lift 电梯停靠

题意:

mm 个人要乘坐电梯,从 aa 点到 bb 点,求问一个点 xx,使得所有点到 xx 的距离之和最小(即为绝对值之和最小)。

思路:

先把 aabb 输入进去,都存进数组 aa,输入完之后给 aa 数组排序,xx 的最小值便是 a[m]a[m]
证明:
首先看到绝对值这个词就应该想到数轴,我们把这些 aabb 点在数轴上表示出来,如图:
(此图例子:272-7393-9
由初一学过的知识来看,当点的个数为偶数个时,xx 取点 a[m÷2]a[m÷2+1]a[m \div 2] \sim a[m \div 2 + 1] 时总路程和最小。所以当且仅当 x[3,7]x \in [3,7] 时,取值最小,而他又要求 xx 的最小值,那就是 33
而通过这张图片可以看出,xx 的最小值为 a[m]a[m]

Code:

CPP
	for(int i=1;i<=m;i++){
		cin>>a[i]>>a[m+i];
		b[i]=a[i];
		c[i]=a[m+i];
    	}
	sort(a+1,a+2*m+1);
	int s=a[m];

T4 select 分组选数

代码还没有调出来。

评论

0 条评论,欢迎与作者交流。

正在加载评论...