评测来自:[NOIP2011 提高组] 铺地毯
请注意:luogu的测评情况与Arbiter的测评情况 完全不同
1.数组int arr[1][1];
#include<bits/stdc++.h>
#define maxn 1
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
2.数组int arr[11][11];
#include<bits/stdc++.h>
#define maxn 11
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
3.数组int arr[101][101];
#include<bits/stdc++.h>
#define maxn 101
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
4.数组int arr[1001][1001];
#include<bits/stdc++.h>
#define maxn 1001
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
5.数组int arr[10001][10001];
10001∗10001∗4/1024/1024=381.546024323MB>128MB
MLE(Memory Limite Exceeded)
#include<bits/stdc++.h>
#define maxn 10001
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
6.数组int arr[100001][100001];
#include<bits/stdc++.h>
#define maxn 100001
using namespace std;
int arr[maxn][maxn]={0},n,a,b,g,k,abc,def;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b>>g>>k;
for(int j=a;j<=a+g;j++){
for(int x=b;x<=b+k;x++){
arr[j][x]=i+1;
}
}
}cin>>abc>>def;
if(arr[abc][def]==0) cout<<-1;
else cout<<arr[abc][def];
return 0;
}
7.AC代码
#include <stdio.h>
#define maxn 10100
int a[maxn],b[maxn],g[maxn],k[maxn];
int main(){
int n,i,x,y;
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);
scanf("%d%d",&x,&y);
for(i=n;i>=1;i--)
if(a[i]<=x&&x<=a[i]+g[i]&&b[i]<=y&&y<=b[i]+k[i]){
printf("%d\n",i);
break;
}
if(i==0)printf("-1\n");//没找到地毯
return 0;
}
在noi linux下 Arbiter测评系统中对应的测评情况如下
5.数组int arr[10001][10001]; 对应 ZJ-1000
4.数组int arr[1001][1001]; 对应 ZJ-2000
7.AC代码 对应 ZJ-3000