首页 > 代码库 > LA 4254 这个为什么会超时?
LA 4254 这个为什么会超时?
#include<iostream>#include<vector>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;struct Line{ int a,b,w;};vector <Line> line;vector <Line> templine;int n;int workline[20010];bool ok(int s){ memset(workline,0,sizeof(workline)); templine.resize(line.size()); memcpy(&templine[0],&line[0],line.size()*sizeof(Line)); for(int i=0;i<n;i++) { // cout<<templine[i].a<<" "<<templine[i].b<<endl; for(int j=templine[i].a;j<templine[i].b;j++) { if(workline[j]<s) { if(templine[i].w>(s-workline[j])) { int temp=s-workline[j]; workline[j]=s; templine[i].w-=temp; } else { workline[j]+=templine[i].w; templine[i].w=0; } } } if(templine[i].w>0) return false; } return true;}bool cmp(Line aa,Line bb){ return aa.b<bb.b;}int main(){ int T; //cin>>T; scanf("%d",&T); while(T--) { int t1,t2,t3; Line aa; //cin>>n; scanf("%d",&n); line.clear(); for(int i=0;i<n;i++) { //cin>>t1>>t2>>t3; scanf("%d%d%d",&t1,&t2,&t3); aa.a=t1; aa.b=t2; aa.w=t3; line.push_back(aa); } sort(line.begin(),line.end(),cmp); int L=1,R=1000000,M; while(L<R) { if(R-L==1) break; M=(R+L)/2; if(ok(M)) R=M; else L=M; //cout<<R<<"*"<<endl; } cout<<R<<endl; } return 0;}
LA 4254 这个为什么会超时?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。