众位大神,为啥过不去

P1003 [NOIP2011 提高组] 铺地毯

你傻啊 10000\*100000的数组不爆我吃poop
by VenusM1nT @ 2017-10-03 20:45:29


@[shuxinyu](/space/show?uid=33183) 你的方法不太对 这题虽然是模拟但也不像你这么暴力的啊 换一个思路做
by VenusM1nT @ 2017-10-03 20:46:56


```cpp #include <iostream> using namespace std; int main() { int n,i,x,y,ans; int a[10003][4]; cin>>n; for(i=0;i<n;i++) cin>>a[i][1]>>a[i][2]>>a[i][3]>>a[i][4]; cin>>x>>y; for(i=0;i<n;i++) if((a[i][1]<=x)&&(a[i][2]<=y)&&(a[i][1]+a[i][3]>=x)&&(a[i][2]+a[i][4]>=y)) ans=i; cout<<ans+1<<endl; return 0; } ```
by awask @ 2017-10-07 20:36:36


lz的方法有点问题,这道题目可以直接模拟,少解释上代码: ```cpp #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> using namespace std; int a[100001],b[100001],l1[100001],l2[100001]; int main() { int i,n,x,y; freopen("carpet10.in","r",stdin); freopen("carpet10.out","w",stdout); scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d%d%d",&a[i],&b[i],&l1[i],&l2[i]); scanf("%d%d",&x,&y); for(i=n;i>=1;i--) if(x>=a[i] && x<=a[i]+l1[i] && y>=b[i] && y<=b[i]+l2[i]) { printf("%d",i); break; } if(i==0) printf("-1"); return 0; } ```
by andyc_03 @ 2017-10-08 10:38:38


题解: ```cpp #include<iostream> #include<cstdio> using namespace std; int n,x,y; int num=-1; struct ss{ int sx,sy; int ex,ey; }card[1000001]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>card[i].sx>>card[i].sy; cin>>x>>y; card[i].ex=card[i].sx+x; card[i].ey=card[i].sy+y; } cin>>x>>y; for(int i=1;i<=n;i++) { if(card[i].sx<=x&&card[i].sy<=y) if(card[i].ex>=x&&card[i].ey>=y) num=i; } cout<<num; } ```
by 魂逝_秦月歌 @ 2017-10-16 22:22:15


|