社区讨论
如何卡常(昨天ABC T4)
学术版参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @milacfdl
- 此快照首次捕获于
- 2025/11/30 13:34 3 个月前
- 此快照最后确认于
- 2025/12/02 20:45 3 个月前
昨天的ABC T4,T掉了40%的点,自己写的实在是太屎山了
Code:
CPP#include <bits/stdc++.h>
using namespace std;
int n,u,d,l,r,c[200005],z;
unordered_set<int> a[2005][2005],t[2005],b;
int main(){
// freopen("114.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>u>>d>>l>>r;
a[u][l].insert(i);
a[u][r+1].insert(i);
a[d+1][l].insert(i);
a[d+1][r+1].insert(i);
// for(int j=1;j<=7;j++)b[j].clear();
// for(int u=1;u<=7;u++){
// for(int j=1;j<=7;j++){
// for(auto k:a[u][j]){
// auto it=b[j].find(k);
// if(it==b[j].end())b[j].insert(k);
// else b[j].erase(it);
// }
// for(auto k:b[j-1]){
// auto it=b[j].find(k);
// if(it==b[j].end())b[j].insert(k);
// else b[j].erase(it);
// }
// for(auto k:b[j])cout<<k;
// cout<<"\t";
// }
// cout<<endl;
// }
}
for(int i=1;i<=2000;i++){
b.clear();
for(int j=1;j<=2000;j++){
for(auto k:a[i][j]){
auto it=t[j].find(k);
if(it==t[j].end())t[j].insert(k);
else t[j].erase(it);
}
for(auto k:t[j]){
auto it=b.find(k);
if(it==b.end())b.insert(k);
else b.erase(it);
}
if(b.size()==0)z++;
else if(b.size()==1)c[*(b.begin())]++;
}
}
for(int i=1;i<=n;i++){
cout<<z+c[i]<<endl;
}
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...