TLE求助!!!
查看原帖
TLE求助!!!
492009
QWQnfl_lk_ysny楼主2022/9/5 22:10
#include <bits/stdc++.h>
using namespace std;
int n, x, p, q;
double r;
int ans = 0;
int a[1100000];
int slep = 0;//前i天睡觉时间 
/*inline char nc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p1&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}*/
inline int read() {
	int x=0,m=1;
	char ch=getchar();
	while(!isdigit(ch)) {
		if(ch == '-') m=-1;
		ch=getchar();
	}
	while(isdigit(ch)) {
		x = x * 10 + ch - 48;
		ch = getchar();
	}
	return x * m;
}
inline void write(int x) {
	if(x<0) {
		putchar('-');
		write(-x);
    	return;
	}
	if(x>=10) write(x/10);
	putchar( x % 10 + '0' );
}
//inline void chmax(ll& a, ll b) { if (a < b) a = b; }
signed main() {
	//scanf("%d%d%d%d", &n, &x, &p, &q);
    ios_base::sync_with_stdio(false);
    n=read();
    x=read();
    p=read();
    q=read();
	r = 1.0 * p / (1.0 * q);
	r = r * (1.0 * x);
	for (int i = 1; i <= n; i++)
		a[i]=read();
	for (int i = 1; i <= n;) {
		int xx = x;
		double yaoshui = r * (1.0 * (1 + ans));
		while (1.0 * slep + 1.0 * (xx - a[i]) >= yaoshui && i <= n) {
			if (xx - a[i] > 0) xx -= a[i++];
			else break;
			if (xx < a[i]) break;
			//cout << ans << "</>" << 1.0 * slep + 1.0 * (xx - a[i]) << " " << 
			//yaoshui << ": " << xx << endl;
		}
		slep += 1.0 * xx;
		ans++;
	}
	write(ans);
	return 0;
}

Sub1 T了2个

Sub2 20分

Sub3 T了5个

Sub4 T了1个

Sub5 T了2个

2022/9/5 22:10
加载中...