2023csp-j复赛试题及其讲解 待完善

发布时间 2023-10-23 17:17:41作者: 关于42号星球

P9748 [CSP-J 2023] 小苹果【民间数据】

题目链接:https://www.luogu.com.cn/problem/P9748?contestId=140858

题目讲解:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     int n;
 6     cin>>n;
 7     int k=n,d=0,ans=0;
 8     while(k>0) {
 9         if(k%3==1&&ans==0) ans=d+1;
10         int t=(k-1)/3+1;//计算每一天拿走多少个
11         k=k-t;//还剩下的个数
12         d++;
13     }
14     cout<<d<<" "<<ans;
15     return 0;
16 }

 P9749 [CSP-J 2023] 公路【民间数据】

题目链接:https://www.luogu.com.cn/problem/P9749?contestId=140858

题目讲解:

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 const int N=100010;
 6 int n,d;
 7 int v[N],a[N];
 8 int main() {
 9     scanf("%d %d",&n,&d);
10     for(int i=1; i<n; i++) scanf("%d",&v[i]);
11     for(int i=1; i<=n; i++) scanf("%d",&a[i]);
12     long long ans=0;
13     int m=a[1],res=0;
14     for(int i=1; i<n; i++) {
15         m=min(m,a[i]);
16         if(res>=v[i]) res-=v[i];
17         else {
18             int t=(v[i]-res)/d;
19             if((v[i]-res)%d!=0) t++;//计算需要多少升油
20             ans+=m*t;
21             res=t*d+res-v[i];
22         }
23     }
24     printf("%lld",ans);
25     return 0;
26 }