题目链接:C. 痛苦的 01 矩阵

题目大意:原题说的很清楚了,不需要简化_(:з」∠)_

题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j}\)代表对应格子是否为0,则有\(cost(i,j)=r_i+c_j-f_{i,j}\),\((cost(i,j))^2=r_i^2+c_j^2+f_{i,j}+2r_ic_j-2f_{i,j}(r_i+c_j)\)

$$\sum_{i=1}^n \sum_{j=1}^n \left( cost(i,j) \right)^2 = \sum_{i=1}^n (r_i^2+c_i^2)+\sum_{i=1}^n \sum_{j=1}^nf_{i,j}+2(\sum_{i=1}^nr_i)(\sum_{j=1}^nc_j)-2f_{i,j}\sum_{i=1}^n \sum_{j=1}^n(r_i+c_j)$$

   初始状态下,\(ans=n^2*(2n-1)^2, r_i=c_i=n\),给出\(k\)个为1的方格可以看做进行\(k\)次反转操作,之后把式子中的每一项一一对应地进行修改就好了

#include<bits/stdc++.h>
using namespace std;
#define N 200001
#define LL long long
#define MOD 1000000007
LL n,k,q,x,y,u,v,r[N],sr[N],c[N],sc[N],ans;
set<LL>s;
void add(LL x,LL y)
{
s.insert(x*N+y);
r[x]--,c[y]--;
ans+=MOD-n*(2ll*r[x]+)%MOD,ans%=MOD;
ans+=MOD-n*(2ll*c[y]+)%MOD,ans%=MOD;
ans+=MOD-,ans%=MOD;
ans+=2ll*(MOD-sc[n]+MOD-sr[n]+),ans%=MOD;
ans+=2ll*(r[x]++c[y]+)%MOD,ans%=MOD;
ans+=2ll*r[x]%MOD+2ll*c[y]%MOD,ans%=MOD;
sc[n]--,sr[n]--;
}
void del(LL x,LL y)
{
sc[n]++,sr[n]++;
ans+=MOD-(2ll*r[x]%MOD+2ll*c[y]%MOD)%MOD,ans%=MOD;
ans+=MOD-(2ll*(r[x]++c[y]+)%MOD)%MOD,ans%=MOD;
ans+=2ll*(sc[n]+sr[n]-)%MOD,ans%=MOD;
ans++,ans%=MOD;
ans+=n*(2ll*c[y]+)%MOD,ans%=MOD;
ans+=n*(2ll*r[x]+)%MOD,ans%=MOD;
r[x]++,c[y]++;
s.erase(x*N+y);
}
int main()
{
scanf("%lld%lld%lld",&n,&k,&q);
for(LL i=;i<=n;i++)
{
r[i]=c[i]=n;
sr[i]=(sr[i-]+r[i])%MOD;
sc[i]=(sc[i-]+c[i])%MOD;
}
ans=4ll*n*n-4ll*n+,ans%=MOD;
ans*=n*n%MOD,ans%=MOD;
for(LL i=;i<=k;i++)
scanf("%lld%lld",&x,&y),add(x,y);
printf("%lld\n",ans);
for(LL i=;i<=q;i++)
{
scanf("%lld%lld",&u,&v);
if(s.count(u*N+v))del(u,v);
else add(u,v);
printf("%lld\n",ans);
}
return ;
}

[EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]的更多相关文章

  1. 2018.10.18 NOIP训练 01矩阵(组合数学)

    传送门 组合数学好题. 题目要求输出的结果成功把概率转化成了种类数. 本来可以枚举统计最小值为iii时的概率. 现在只需要统计最小值为iii时的方案数,每一行有不少于iii个1的方案数. 显然一行选i ...

  2. EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)

    ultmaster 男神和小迷妹们玩起了捉迷藏的游戏. 小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自 ...

  3. EOJ Monthly 2018.7

    准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...

  4. EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)

    D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...

  5. EOJ Monthly 2018.2

    A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p ...

  6. EOJ Monthly 2018.1 F 最小OR路径

    题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b ...

  7. EOJ Monthly 2018.3

    985月赛我只喜欢ECNU.jpg A. 打工时不可能打工的 Time limit per test: 2.0 seconds Memory limit: 256 megabytes 我 Ayano ...

  8. EOJ Monthly 2018.4

    A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...

  9. EOJ Monthly 2018.11 D. 猜价格

    猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...

随机推荐

  1. NOI-OJ 1.13 ID:34 确定进制

    整体思路 对于任意的p,q,r,可能使得p*q=r的最小进制应该是p,q,r三个数的所有数位中最大的数字+1,例如,6,9,42三个数中所有数位中最大的数字是9,故可能成立的最小进制是9+1,即10. ...

  2. [物理学与PDEs]第2章习题1 无旋时的 Euler 方程

    试证明: 当流场为无旋, 即 $\rot{\bf u}={\bf 0}$ 时, 理想流体的 Euler 方程可写为如下形式: $$\bex \cfrac{\p {\bf u}}{\p t}+\n \c ...

  3. Pipeline load and load from git

    load https://www.sourcefield.nl/post/jenkins-pipeline-tutorial/ node { // Use the shell to create th ...

  4. dense prediction问题

    dense prediction  理解:标注出图像中每个像素点的对象类别,要求不但给出具体目标的位置,还要描绘物体的边界,如图像分割.语义分割.边缘检测等等. 基于深度学习主要的做法有两种: 基于图 ...

  5. Django2.1配置xadmin2.0

    系统:Ubuntu18.04 环境:py3.6, django2.17, xadmin-django2.0 xadmin-django2.0下载:xadmin2.0(进入github后,在Branch ...

  6. UE4 AR开发笔记

    1.基础使用 ArToolKit:生成图片特征,可以用彩图.(图片先灰化)    genTexData效准相机.由于有的相机照相有弧度.  calib_camera 2.使用UE4ARPlugins做 ...

  7. webpack学习笔记——sourcemap(使用webpack打包的项目如何调试代码)

    [webpack]devtool里的7种SourceMap模式是什么鬼? 里面详细介绍了7种模式的区别,和建议使用. webpack sourcemap 选项多种模式的一些解释 两篇文章大同小异,第一 ...

  8. Element老司机开车了

    orm Select选择器   坑: 1.选择器视图层一直渲染最后一个元素(value-key作为唯一标识符是关键)2.视图不更新,没有在data函数中声明变量,或者其他地方重置了已经声明过得变量 o ...

  9. 移动端调用电话、短信、唤起QQ和使用百度地图

    H5能很方便地实现这些功能,都是一句代码搞定 调用电话 <a href="tel:12345678"> 短信 <a href='sms:12345678'> ...

  10. [Kubernetes]yaml文件详解

    应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...