当前位置: 首页 > news >正文

P6532 [COCI 2015/2016 #1] TOPOVI

思路

删掉 \((r_1,c_1)\) 位置上值为 \(val\) 的棋子相当于再在原处放置一个相同的棋子使之异或后为 \(0\),故只需考虑放置新棋子后的影响。

显然一个棋子无法被攻击的充要条件是其所在行的异或和等于所在列的异或和,故使用 \(rval,cval\) 维护行和列的异或和,\(rcnt,ccnt\) 维护异或和为 \(val\) 的行和列数量。每次在 \((r,c)\) 放置一个值为 \(val\) 的新棋子的时候,所有异或和为 \(rval_r\) 的列与 \(r\) 行的交点都将由无法被攻击转为可被攻击,这部分贡献需要加上;同时,所有异和为 \(rval_r \oplus val\) 的列与 \(r\) 行的交点将由可被攻击转为不可被攻击,需要减去其数量。

代码实现上注意两种贡献计算的先后顺序,建议使用 unordered_map,比 map 更快一点。同时注意 pair 作为键值类型需要手写哈希函数。

Code

#include<iostream>
#include<utility>
#include<algorithm>
#include<unordered_map>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
struct PairHash
{template<class T1,class T2>size_t operator()(const pair<T1,T2> &x)const{hash<T1>h1;hash<T2>h2;return h1(x.first)^h2(x.second);}
};
int n,k,Q;
long long ans=0;
unordered_map<int,int>rval,cval,rcnt,ccnt;
unordered_map<pair<int,int>,int,PairHash>Chequer;
void Put_Chequer(int r,int c,int val)
{ans-=(n-ccnt[rval[r]])+(n-rcnt[cval[c]]);rcnt[rval[r]]--,rcnt[rval[r]^=val]++;ccnt[cval[c]]--,ccnt[cval[c]^=val]++;ans+=(n-ccnt[rval[r]])+(n-rcnt[cval[c]]);Chequer[{r,c}]^=val;
}
int main()
{IOS;cin>>n>>k>>Q;rcnt[0]=ccnt[0]=n;while(k--){int r,c,val;cin>>r>>c>>val;Put_Chequer(r,c,val);}while(Q--){int r1,c1,r2,c2,val;cin>>r1>>c1>>r2>>c2;val=Chequer[{r1,c1}];Put_Chequer(r1,c1,val);Put_Chequer(r2,c2,val);cout<<ans<<'\n';}return 0;
}

完结撒花~

http://www.jsqmd.com/news/39229/

相关文章:

  • Apache Struts远程代码执行漏洞CVE-2025-12703解析
  • P9433 [NAPC-#1] Stage5 - Conveyors
  • P11038 【MX-X3-T5】「RiOI-4」Countless J-Light Decomposition
  • 【每日一面】BOM 是什么
  • P9638 「yyOI R1」youyou 的军训
  • P1012 [NOIP 1998 提高组] 拼数
  • 同步/异步和阻塞/非阻塞学习笔记
  • python 单词搜索(回溯-矩阵-字符串-中等)含源码(二十) - 指南
  • PHP生成RSA密钥对及RSA签名验证类库
  • 2025年杭州维修手机培训公司权威推荐榜单:手机维修教程/手机屏幕维修/维修手机源头公司精选
  • 2025年A2级防火抗倍特板批发厂家权威推荐榜单:高压耐火墙面装饰板/手HPL防火板/隧道防火装饰板源头厂家精选
  • 在基于FastAPI的Python开发框架后端,增加阿里云短信和邮件发送通知处理
  • 11月13日打卡
  • Comparative linguistics
  • 2025-11-11 PQ v.Next日志记录
  • ANT天线ESD防护
  • MATLAB离群点检测与删除
  • 2025短视频拍摄公司排名与推荐:3个核心标准帮你选对团队,避开无效投入
  • C#标签批量打印程序开发
  • 助力企业构建 AI 原生应用,函数计算 FunctionAI 重塑模型服务与 Agent 全栈生态
  • 小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇数据库篇MySQLMSSQLOracle自动化方案
  • vue2 混同,封装公共方法 - 东方不败-
  • 2025年PP多功能废气净化塔生产厂家权威推荐榜单:聚丙烯多功能废气净化塔/PPH多功能废气净化塔/PPH尾气吸收塔源头厂家精选
  • 2025年新疆初三复读班权威推荐榜单:中考复读快速提分/初三补习班/初三集训班源头服务商精选
  • source insight4菜单工具按钮变乱恢复
  • 2025 国产 ITSM 厂商选型全攻略:基础流程、智能赋能与全链路协同深度解析
  • 2025年新疆高三复读班权威推荐榜单:高三复读全日制/高三复读班/清北复读班学校精选
  • 2025年WMS仓库管理系统行业观察:智能仓储新格局加速成型
  • 2025 WMS仓库管理系统推荐排名
  • 深入解析:Linux Cgroup与Device Whitelist详解