大佬看一下我会不会爆0,估一下我多少分
T1
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
int n,m,ansp,ansq,cnt,a[N];
int fd(int x){
int qq=0,qp=0;
for(int j=x+1;j<=n;j++){
qp++;
if(a[j]==1) qq++;
if(qq==3) return qp;
}
}
signed main(){
cin>>n;
m=n;
for(int i=1;i<=n;i++) a[i]=1;
while(m>0){
int q=0;
ansp++;
for(int i=1;i<=n;i++)
if(a[i]==1){
q=i;
break;
}
for(int i=q;i<=n;i+=fd(i)){
m--;
a[i]=0;
if(i==n) ansq=ansp;
}
}
cout<<ansp<<" "<<ansq;
return 0;
}
T2
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,d,a[N],v[N],b[N],ans,sum,minn=0x3f3f3f3f;
int main(){
cin>>n>>d;
for(int i=1;i<n;i++){
cin>>v[i];
b[i]=b[i-1]+v[i];
}
for(int i=1;i<=n;i++){
cin>>a[i];
minn=min(minn,a[i]);
}
if(minn==a[1]){
cout<<(b[n-1]/d)*d/d*minn;
return 0;
}
for(int i=1;i<=n;){
int q=0;
bool bl=0;
for(int j=i+1;j<=n;j++){
if(a[j]<a[i]){
int p=b[j]-b[i],g;
if(p%d==0) g=p;
else{
g=(p/d+1)*d;
if((p+sum)%d==0)
g-=d;
}
int pq=g+sum;
int qp=pq/d;//油量
ans+=qp*a[i];
if(g-p!=0)
sum+=pq-p;
q=j;
break;
}else bl=1;
}
i=q;
if(bl==1){
int p=b[n-1]-b[i-1],g;
if(p%d==0) g=p;
else{
g=(p/d+1)*d;
if((p+sum)%d==0)
g-=d;
}
int pq=g+sum;
int qp=pq/d;//油量
ans+=qp*a[i];
if(g-p!=0)
sum+=pq-p;
break;
}
}
cout<<ans;
return 0;
}
T4 直接输出的-1