社区讨论
CSP-J T1 T2正解
灌水区参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo0uu44e
- 此快照首次捕获于
- 2023/10/22 10:33 2 年前
- 此快照最后确认于
- 2023/11/02 12:14 2 年前
T1
CPP#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin>>n;
long long ans=0,ans1=0;
bool flag=0;
long long x=n;
while(x>0){
ans++;
if((x-1)%3==0&&flag==0){
flag=1;
ans1=ans;
}
x-=(1+(x-1)/3);
}
cout<<ans<<' '<<ans1;
return 0;
}
T2
CPP#include<bits/stdc++.h>
using namespace std;
long long ans=0;
int x=0,n,d,v[100005],a[100005],minn[100005],id[100005];
int main(){
cin>>n>>d;
for(int i=2;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
minn[1]=a[1];
id[1]=1;
for(int i=2;i<n;i++){
if(a[i]<minn[i-1]){
id[i]=i;
}
else id[i]=id[i-1];
minn[i]=min(minn[i-1],a[i]);
}
minn[n]=minn[n-1];
id[n]=id[n-1];
for(int i=1;i<n;){
long long sum=0;
int j;
for(j=i+1;j<=n&&id[j-1]==id[i];j++){
sum+=v[j];
}
sum-=x;
x=ceil(1.0*sum/d)*d-sum;
ans+=(ceil(1.0*sum/d)*minn[i]);
i=j-1;
}
cout<<ans;
return 0;
}
T2赛时推了好久做出来了,可是回来一测55分,发现是因为没开long long
加上考试主攻前两题,后面看都没看,肯定与1=无缘了
回复
共 4 条回复,欢迎继续交流。
正在加载回复...