回答必关(CSP-J)
  • 板块学术版
  • 楼主YE_HUA
  • 当前回复13
  • 已保存回复13
  • 发布时间2023/10/21 22:57
  • 上次更新2023/11/2 12:04:33
查看原帖
回答必关(CSP-J)
1046236
YE_HUA楼主2023/10/21 22:57

大佬看一下我会不会爆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

2023/10/21 22:57
加载中...