大模拟
2024-10-08 16:31:29
发布于:浙江
63阅读
0回复
0点赞
迎接一个无法复制的代码吧!
#include <bits/stdc++.h>
using namespace std;
struct node{
int sx,sy,ex,ey;
bool operator<(const node& ot) const{
if (sx==ot.sx){
if (sy==ot.sy){
if (ex==ot.ex){
return ey<ot.ey;
}else{
return ex<ot.ex;
}
}else{
return sy<ot.sy;
}
}
return sx<ot.sx;
}
bool operator==(const node& ot) const{
return sx==ot.sx && sy==ot.sy && ex==ot.ex && ey==ot.ey;
}
};
struct P{
int x,y;
};
struct zlP{
int ax,ay,bx,by,cx,cy,dx,dy;
bool operator<(const zlP& ot) const{
if (ax==ot.ax){
if (ay==ot.ay){
if (bx==ot.bx){
if (by==ot.by){
if (cx==ot.cx){
if (cy==ot.cy){
if (dx==ot.dx){
return dy<ot.dy;
}else{
return dx<ot.dx;
}
}else{
return cy<ot.cy;
}
}else{
return cx<ot.cx;
}
}else{
return by<ot.by;
}
}else{
return bx<ot.bx;
}
}else{
return ay<ot.ay;
}
}
return ax<ot.ax;
}
bool operator==(const zlP& ot) const{
return ax==ot.ax && ay==ot.ay && bx==ot.bx && by==ot.by && cx==ot.cx && cy==ot.cy && dx==ot.dx && dy==ot.dy;
}
};
map<node,bool> vis;
map<zlP,bool> zl;
vector<P> pt;
int n,m,q;
int main(){
cin>>n>>m>>q;
int sM=0,sA=0;
//cout<<vis[{1,1,2,1}]<<endl;
for (int i=1;i<=q;++i){
int msx,msy,mex,mey,asx,asy,aex,aey;
cin>>msx>>msy>>mex>>mey;
vis[{msx,msy,mex,mey}]=1;
vis[{mex,mey,msx,msy}]=1;
// pt.push_back({msx,msy});
// pt.push_back({mex,mey});
if (msx==mex){
if (vis[{msx,msy,msx-1,msy}] && vis[{msx-1,msy,mex-1,mey}] && vis[{mex-1,mey,mex,mey}] && !zl[{msx,msy,msx-1,msy,mex-1,mey,mex,mey}]){
zl[{msx,msy,msx-1,msy,mex-1,mey,mex,mey}]=1;
sM+=1;
}
if (vis[{msx,msy,msx+1,msy}] && vis[{msx+1,msy,mex+1,mey}] && vis[{mex+1,mey,mex,mey}] && !zl[{msx,msy,msx+1,msy,mex+1,mey,mex,mey}]){
zl[{msx,msy,msx+1,msy,mex+1,mey,mex,mey}]=1;
sM+=1;
}
}else{
if (vis[{msx,msy,msx,msy+1}] && vis[{msx,msy+1,mex,mey+1}] && vis[{mex,mey+1,mex,mey}] && !zl[{msx,msy,msx,msy+1,mex,mey+1,mex,mey}]){
zl[{msx,msy,msx,msy+1,mex,mey+1,mex,mey}]=1;
sM+=1;
}
if (vis[{msx,msy,msx,msy-1}] && vis[{msx,msy-1,mex,mey-1}] && vis[{mex,mey-1,mex,mey}] && !zl[{msx,msy,msx,msy-1,mex,mey-1,mex,mey}]){
zl[{msx,msy,msx,msy-1,mex,mey-1,mex,mey}]=1;
sM+=1;
}
}
cin>>msx>>msy>>mex>>mey;
vis[{msx,msy,mex,mey}]=1;
vis[{mex,mey,msx,msy}]=1;
// pt.push_back({asx,asy});
// pt.push_back({aex,aey});
if (msx==mex){
if (vis[{msx,msy,msx-1,msy}] && vis[{msx-1,msy,mex-1,mey}] && vis[{mex-1,mey,mex,mey}] && !zl[{msx,msy,msx-1,msy,mex-1,mey,mex,mey}]){
zl[{msx,msy,msx-1,msy,mex-1,mey,mex,mey}]=1;
sA+=1;
}
if (vis[{msx,msy,msx+1,msy}] && vis[{msx+1,msy,mex+1,mey}] && vis[{mex+1,mey,mex,mey}] && !zl[{msx,msy,msx+1,msy,mex+1,mey,mex,mey}]){
zl[{msx,msy,msx+1,msy,mex+1,mey,mex,mey}]=1;
sA+=1;
}
}else{
if (vis[{msx,msy,msx,msy+1}] && vis[{msx,msy+1,mex,mey+1}] && vis[{mex,mey+1,mex,mey}] && !zl[{msx,msy,msx,msy+1,mex,mey+1,mex,mey}]){
zl[{msx,msy,msx,msy+1,mex,mey+1,mex,mey}]=1;
sA+=1;
}
if (vis[{msx,msy,msx,msy-1}] && vis[{msx,msy-1,mex,mey-1}] && vis[{mex,mey-1,mex,mey}] && !zl[{msx,msy,msx,msy-1,mex,mey-1,mex,mey}]){
zl[{msx,msy,msx,msy-1,mex,mey-1,mex,mey}]=1;
sA+=1;
}
}
}
// for (int i=0;i<pt.size();++i){
// cout<<pt[i].x<<" "<<pt[i].y<<endl;
// }
cout<<sM<<" "<<sA<<endl;
return 0;
}
全部评论 2
狠人
2024-10-10 来自 广东
06哥们你无敌了
2024-10-08 来自 广东
0
有帮助,赞一个