标签:
input | output |
---|---|
5 3 6 94 2 4 1 3 1 1 1 2 1 1 2 2 2 2 1 100 1 2 4 255 1 5 5 |
3
|
分析:参考http://blog.csdn.net/jyysc2010/article/details/9968813;
暴力枚举矩形顶点即可,复杂度o(M3);
不过感觉数据略有问题;
代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #include <set> #include <map> #include <queue> #include <stack> #include <vector> #include <list> #define rep(i,m,n) for(i=m;i<=n;i++) #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++) #define mod 1000000007 #define inf 0x3f3f3f3f #define vi vector<int> #define pb push_back #define mp make_pair #define fi first #define se second #define ll long long #define pi acos(-1.0) #define pii pair<int,int> #define Lson L, mid, rt<<1 #define Rson mid+1, R, rt<<1|1 const int maxn=1e2+10; using namespace std; ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);} ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;} int n,m,k,t,b[maxn],c[maxn],ans,p,q; struct node { int id,x,y,z; node(){} node(int _id,int _z,int _x,int _y) { id=_id,x=_x,y=_y,z=_z; } }a[maxn]; int main() { int i,j; ans=1000; scanf("%d%d%d",&n,&m,&k); rep(i,1,k) { int b,c,d,e; scanf("%d%d%d%d",&b,&c,&d,&e); a[i]=node(b,c,d,e); } a[0]=node(0,1,0,0); rep(i,0,k)rep(j,0,k) { int x=a[i].x+a[i].z,y=a[j].y+a[j].z,now=1; if(x+m-1>n||y+m-1>n)continue; rep(t,1,k) { if(a[t].x>x+m-1||a[t].y>y+m-1||a[t].x+a[t].z-1<x||a[t].y+a[t].z-1<y)continue; now=max(now,a[t].id); } ans=min(ans,now); } if(ans<=100)printf("%d\n",ans); else puts("IMPOSSIBLE"); //system("Pause"); return 0; }
标签:
原文地址:http://www.cnblogs.com/dyzll/p/5875706.html