20分求助

P1003 [NOIP2011 提高组] 铺地毯

@[monkeytreewithrose](/space/show?uid=201246) 代码没错,是超时的问题... ~~这不是模拟~~
by aminoas @ 2019-04-21 00:53:40


n3?
by 信赖滴星辰 @ 2019-04-21 07:29:10


只能O(n^2)的复杂度
by 信赖滴星辰 @ 2019-04-21 07:30:27


看了一下你的评测记录,五花八门呐
by 信赖滴星辰 @ 2019-04-21 07:31:24


RE是数组开太小了,MLE是你数组开太大了,WA是你算法错了
by 信赖滴星辰 @ 2019-04-21 07:32:16


@[monkeytreewithrose](/space/show?uid=201246) 你看下我的 ```cpp #include <cstdio> #include <iostream> #include <string> using namespace std; int main() { int n; //代表地毯数(没什么用) cin>>n; long long a[10000000][2],A[10000000][2]; //a代表左下角坐标,A代表横、纵坐标 int x,y; //代表需要求的点 long long l[10000000]; //代表第几张地毯 int flag1=0,flag2=0; //确定输出的数在不在地毯上 for(int i=1;i<=n;i++) { cin>>a[i][1]>>a[i][2]>>A[i][1]>>A[i][2]; l[i]=i; } cin>>x>>y; for(int i=1;i<=n;i++) { if(x>=a[i][1] && x<=a[i][1]+A[i][1] && y>=a[i][2] && y<=a[i][2]+A[i][2]) { flag1=1; } } //cout<<flag1<<" "<<flag2<<endl; if(flag1==0) { cout<<-1; } else { for(int i=n;i>=0;i--) { if(x>=a[i][1] && x<=a[i][1]+A[i][1] && y>=a[i][2] && y<=a[i][2]+A[i][2]) { cout<<i; flag2=1; } if(flag2==1) { break; } } } return 0; } ```
by 信赖滴星辰 @ 2019-04-21 07:34:03


很久以前的代码,有点丑……
by 信赖滴星辰 @ 2019-04-21 07:34:31


|