set的用法

金歌  论坛元老 | 2024-9-10 04:07:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1061|帖子 1061|积分 3183

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
[ABC370D] Cross Explosion - 洛谷
  1. #include "bits/stdc++.h"
  2. #define int long long
  3. using namespace std;
  4. const int N=1000000;
  5. set <int> h[N], w[N];
  6. signed main () {
  7.     ios::sync_with_stdio (false);
  8.     cin.tie (0); cout.tie (0);
  9.     int n,m,q;
  10.     cin >> n >> m;
  11.   for(int i=1;i<=n;i++)
  12.     for(int j=1;j<=m;j++)
  13.     h[i].insert(j),w[j].insert(i);
  14.     cin>>q;
  15.     while(q--)
  16.     {
  17.             int x,y;
  18.             cin>>x>>y;
  19.             if(h[x].find(y)!=h[x].end())
  20.             {
  21.                     h[x].erase(y);
  22.                     w[y].erase(x);
  23.                 }
  24.                 else
  25.                 {
  26.                 auto i=h[x].lower_bound(y);
  27.                 vector<int>v;
  28.                 if(i!=h[x].end()) v.push_back(*i);
  29.                 if(i!=h[x].begin()) v.push_back(*(--i));
  30.                 for(auto j:v)       
  31.                 h[x].erase(j),w[j].erase(x);
  32.                 v.clear();
  33.                 i=w[y].lower_bound(x);
  34.                 if(i!=w[y].end())
  35.                 v.push_back(*i);
  36.                 if(i!=w[y].begin())
  37.                 v.push_back(*(--i));
  38.                 for(auto j:v)
  39.                 w[y].erase(j),h[j].erase(y);
  40.                 }
  41.         }
  42.         int ans=0;
  43.         for(int i=1;i<=n;i++)
  44.         ans+=h[i].size();
  45.         cout<<ans;
  46.     return 0;
  47. }
  48. //for(auto it=s.begin();it!=s.end();it++)
  49. //cout<<*it;//
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表