求助TLE,玄关
查看原帖
求助TLE,玄关
537218
2012zxt楼主2023/9/2 12:29

rt,把它改成了和题解1一样的写法

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int t,n,ans,sum,k[N],d[N],q[N];
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}
bool cmp(int x,int y){
	return d[x]<d[y];
}
int main(){
	t=read();
	while(t--){
		memset(d,0,sizeof(d));
	    n=read();
		for(int i=1;i<=n;i++){
			q[i]=i;
			k[i]=read();
			int tmp,num;
			tmp=read();
			d[i]=num=tmp+1;
			for(int j=2;j<=k[i];j++){
				num++;
	    		tmp=read();
				if(tmp>=num){
					int t=num;
					num=tmp+1,d[i]+=(num-t);
				}
			}
		}
		sort(q+1,q+n+1,cmp);
		sum=ans=d[q[1]];
		for(int i=2;i<=n;i++){
		    sum+=k[q[i-1]];
		    if(sum<d[q[i]])
				ans+=(d[q[i]]-sum),sum+=(d[q[i]]-sum);
		}
		cout<<ans;
//		printf("%d",&ans)
		cout<<"\n";
	}
	return 0;
}

```#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int t,n,ans,sum,k[N],d[N],q[N];
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}
bool cmp(int x,int y){
	return d[x]<d[y];
}
int main(){
	t=read();
	while(t--){
		memset(d,0,sizeof(d));
	    n=read();
		for(int i=1;i<=n;i++){
			q[i]=i;
			k[i]=read();
			int tmp,num;
			tmp=read();
			d[i]=num=tmp+1;
			for(int j=2;j<=k[i];j++){
				num++;
	    		tmp=read();
				if(tmp>=num){
					int t=num;
					num=tmp+1,d[i]+=(num-t);
				}
			}
		}
		sort(q+1,q+n+1,cmp);
		sum=ans=d[q[1]];
		for(int i=2;i<=n;i++){
		    sum+=k[q[i-1]];
		    if(sum<d[q[i]])
				ans+=(d[q[i]]-sum),sum+=(d[q[i]]-sum);
		}
		cout<<ans;
//		printf("%d",&ans)
		cout<<"\n";
	}
	return 0;
}
2023/9/2 12:29
加载中...