[EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]
题目链接: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 矩阵]的更多相关文章
- 2018.10.18 NOIP训练 01矩阵(组合数学)
传送门 组合数学好题. 题目要求输出的结果成功把概率转化成了种类数. 本来可以枚举统计最小值为iii时的概率. 现在只需要统计最小值为iii时的方案数,每一行有不少于iii个1的方案数. 显然一行选i ...
- EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)
ultmaster 男神和小迷妹们玩起了捉迷藏的游戏. 小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自 ...
- EOJ Monthly 2018.7
准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...
- EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)
D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...
- EOJ Monthly 2018.2
A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p ...
- EOJ Monthly 2018.1 F 最小OR路径
题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b ...
- EOJ Monthly 2018.3
985月赛我只喜欢ECNU.jpg A. 打工时不可能打工的 Time limit per test: 2.0 seconds Memory limit: 256 megabytes 我 Ayano ...
- EOJ Monthly 2018.4
A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...
- EOJ Monthly 2018.11 D. 猜价格
猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...
随机推荐
- Spring Cloud使用样例
Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring C ...
- mysql MHA架构搭建过程
[环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 系统 IP 主机名 备注 版本 xx系统 192.168.142. ...
- tex 进度条
\documentclass{beamer} \usepackage{tikz} \usetikzlibrary{calc} \definecolor{pbblue}{HTML}{0A75A8}% f ...
- H5取经之路——添加hover实现特定效果
一.鼠标指上后显示二维码,效果图如下: 鼠标未指上时: 鼠标指上后: 代码如下: .div1 .li2 .code_wexin{ width: 0px; height: 0px; position: ...
- Coursera, Big Data 3, Integration and Processing (week 5)
Week 5, Big Data Analytics using Spark Programing in Spark Spark Core: Programming in Spark us ...
- MySql的事务控制(TCL语言)
⒈事务 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行. ⒉事务的特性(ACID) 1.原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行. 2. ...
- Linux安装配置git
1.查看git安装版本 git version 2.查看git安装位置 whereis git 3.yum安装git yum install git 4.生成ssh key cd /root/.ssh ...
- 饮冰三年-人工智能-Python-21 Python数据库MySql
一:下载与安装 1:下载地址:https://dev.mysql.com/downloads/mysql/ 2:安装MySql 打开下载文件解压到指定文件目录.(我这里解压目录为D:\MySql\my ...
- Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试
一.下载 下载地址: http://kafka.apache.org/downloads.html 我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.kaf ...
- fillder---工具栏隐藏/显示
显示隐藏工具栏方法:view---show toolbar