社区讨论
How D(悬两关)
学术版参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi0va50b
- 此快照首次捕获于
- 2025/11/16 06:37 4 个月前
- 此快照最后确认于
- 2025/11/17 09:11 4 个月前
我能怎么办,我也很绝望啊啊啊,我先把这个写了再去 E,掉了我 分啊啊啊
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
struct xy
{
int xl,xr,yl,yr;
};
vector<xy> e;
vector<xy> ee;
int a,b;
void pba(xy p)
{
if(p.xr<a)
p.yl-=b,p.yr-=b;
else
p.yl+=b,p.yr+=b;
ee.push_back(p);
}
void pbb(xy p)
{
if(p.yr<a)
p.xl-=b,p.xr-=b;
else
p.xl+=b,p.xr+=b;
ee.push_back(p);
}
long long sz[1000100];
long long f[1001000];
bool vis[1001000];
__inline int q(int x){
if(f[x]==x)return x;
return f[x]=q(f[x]);
}
__inline void merge(int x,int y)
{
x=q(x),y=q(y);
if(x==y)return;
f[x]=y;
sz[y]+=sz[x];
}
__inline bool judge(xy x,xy y)
{
bool f=(x.xr==y.xl-1&&x.yr>=y.yl)||(x.yr==y.yl-1&&x.xr>=y.xl);
swap(x,y);
f|=(x.xr==y.xl-1&&x.yr>=y.yl)||(x.yr==y.yl-1&&x.xr>=y.xl);
return f;
}
signed main()
{
int n,x,y;cin>>n>>x>>y;
ee.push_back((xy){0,x-1,0,y-1});
for(int i=1;i<=n;i++)
{
swap(e,ee);ee.clear();
char t;cin>>t;
cin>>a>>b;
switch(t)
{
case 'X':
for(auto x:e)
{
if(x.xl>=a||x.xr<a)
pba(x);
else
{
xy p={x.xl,a-1,x.yl,x.yr},q={a,x.xr,x.yl,x.yr};
pba(p),pba(q);
}
}
break;
case 'Y':
for(auto x:e)
{
if(x.yl>=a||x.yr<a)
pbb(x);
else
{
xy p={x.xl,x.xr,x.yl,a-1},q={x.xl,x.xr,a,x.yr};
pbb(p),pbb(q);
}
}
break;
default:
cout<<"lucy Ak ioi\n";
return 0;
}
// for(auto x:ee)
// {
// cout<<x.xl<<' '<<x.xr<<' '<<x.yl<<' '<<x.yr<<'\n';
// }
// cout<<'\n';
}
for(int i=0;i<ee.size();i++)
f[i]=i,sz[i]=(ee[i].xr-ee[i].xl+1)*(ee[i].yr-ee[i].yl+1);
for(int i=0;i<ee.size();i++)
{
if(vis[i])continue;
vis[i]=1;
for(int j=0;j<ee.size();j++)
{
if(judge(ee[i],ee[j]))
{
merge(i,j);
}
}
}
vector<long long> ans;
for(int i=0;i<ee.size();i++)
{
if(f[i]==i)
{
ans.push_back(sz[i]);
}
}
sort(ans.begin(),ans.end());
cout<<ans.size()<<'\n';
for(auto x:ans)cout<<x<<' ';
cout<<'\n';
// for(int i=0;i<ee.size();i++)
// {
// for(int j=0;j<ee.size();j++)
// cout<<judge(ee[i],ee[j])<<' ';
// cout<<'\n';
// }
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...