洛谷P1003满分代码

洛谷P1003满分代码

题目不再赘述。

分析

为了处理数据太大的问题,我们不能用二维数组染色的方法做这道题。由于题目只要求输出覆盖在目标点上的数字,所以可以直接判断点是否在每一块地毯范围之内,在就覆盖上编号即可。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
int n,x,y,ans=-1;
struct cpt{
  int x,y,h,v;
};
cpt a[101000]; 
void init(){
  cin>>n; 
  for(int i=1;i<=n;i++){
    cin>>a[i].x>>a[i].y>>a[i].h>>a[i].v;
  }
  cin>>x>>y;
  return;
}
int main(){
  init();
  for(int i=1;i<=n;i++){
    if(x>=a[i].x&&x<=a[i].x+a[i].h){
      if(y>=a[i].y&&y<=a[i].y+a[i].v){ans=i;}//若在范围内,则覆盖上编号
    }
  }
  return 0;
}

总结

有些时候客观上不能运用一个方法的时候,需要转换思想。

发布了6 篇原创文章 · 获赞 1 · 访问量 165

猜你喜欢

转载自blog.csdn.net/Krazy_D/article/details/104173305