[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]+1)%MOD,ans%=MOD;
    ans+=MOD-n*(2ll*c[y]+1)%MOD,ans%=MOD;
    ans+=MOD-1,ans%=MOD;
    ans+=2ll*(MOD-sc[n]+MOD-sr[n]+1),ans%=MOD;
    ans+=2ll*(r[x]+1+c[y]+1)%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]+1+c[y]+1)%MOD)%MOD,ans%=MOD;
    ans+=2ll*(sc[n]+sr[n]-1)%MOD,ans%=MOD;
    ans++,ans%=MOD;
    ans+=n*(2ll*c[y]+1)%MOD,ans%=MOD;
    ans+=n*(2ll*r[x]+1)%MOD,ans%=MOD;
    r[x]++,c[y]++;
    s.erase(x*N+y);
}
int main()
{
    scanf("%lld%lld%lld",&n,&k,&q);
    for(LL i=1;i<=n;i++)
      {
      r[i]=c[i]=n;
      sr[i]=(sr[i-1]+r[i])%MOD;
      sc[i]=(sc[i-1]+c[i])%MOD;
      }
    ans=4ll*n*n-4ll*n+1,ans%=MOD;
    ans*=n*n%MOD,ans%=MOD;
    for(LL i=1;i<=k;i++)
      scanf("%lld%lld",&x,&y),add(x,y);
    printf("%lld\n",ans);
    for(LL i=1;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 0;
}

原文地址:https://www.cnblogs.com/DeaphetS/p/9738696.html

时间: 2024-11-07 23:32:18

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

EOJ Monthly 2018.1 F 最小OR路径

题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b\) ,求一条 \(a\) 到 \(b\) 的路径,使得路径上的边权的 \(OR\)(位或)和最小,输出这个值.(也就是说,如果将路径看做边的集合 \(\{e_1,e_2,-,e_k\}\),那么这条路径的代价为 \(w_1\ OR\ w_2\ OR\ -\ OR\ w_k\),现在求一条路径使得其

【EOJ Monthly 2018.2 (Good bye 2017)】

23333333333333333 由于情人节要回家,所以就先只放代码了. 此题是与我胖虎过不去. [E. 出老千的 xjj] #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=3000000; #define ll long long int

EOJ Monthly 2018.2

A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p\leq 10^9\) 思路 Easy: dp Hard: dp + 瞎搞 当钱数过大或者张数过多时,(由直觉)其中的大部分都是遵循一定的规律来取的,只有剩余的一小部分需要dp. Code Easy #include <bits/stdc++.h> #define F(i, a, b) for (

EOJ Monthly 2018.12 F. 日落轨迹

题解: 对于任何一个串的前x字符内的本质不同子串 我们可以直接在SAM树上得到 然后我们考虑循环串的性质 (设循环节长度为l ) 则大于2*l的位置为等差数列 即每增加一个字符则增加l个本质不同的子串 所以对于2*l我们在后缀树上处理处理 对于x>2*l我们 通过等差求得 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <

痛苦的 01 矩阵(和式推导)

[传送门]https://acm.ecnu.edu.cn/contest/113/problem/C/ [题解] 推导过程: [技巧] (1)直接用二维数组存储矩阵肯定超内存,注意到K的范围该矩阵是一个稀疏的矩阵所以直接将其转化为线性的,a[(i-1)+j]表示其第i行第j列的状况 (2)注意到单个点的改动只能影响到十字形的局部,所以在每次求ans时可以利用上一次的ans加上这一次改动形成的差值(或者说叫贡献). (3)一定要注意和式变换时无关项∑别轻易丢弃,也许它形成一个常数n的系数. [AC

2018/10/10 awk 分析 nginx 日志

废话不多说,简单了解一下 awk - 强大的文本分析工具,也就是分析日志 最常用的就是分析日志了吧,做统计什么,这里也拿 nginx 日志来做分析 1:统计出现次数 - 比如状态码出现次数 - 先直接上命令 awk '{print $9}' access_log | sort | uniq -c | sort -rn - 可能会有一些疑惑,这个$9 是什么? - 我们拿出一条日志来看一下先 123.124.16.83 - - [10/Oct/2018:10:24:56 +0800] "GET /

2018.10.2浪在ACM 集训队第二次测试赛

2018.10.26 浪在ACM 集训队第二次测试赛 题目一览表(Green color indicate understand and Accept) 来源 考察知识点 完成时间 A 1273 海港(比赛过题) NOIP 普及组 2016 查分数组+二分 2018.10.26 D 1272 回问日期(比赛过题) NOIP 普及组 2016 思维? 2018.10.26 G 1268 扫雷游戏(比赛过题) NOIP 普及组 2015 暴力 or DFS 2018.10.26          

it&#39;s time to change myself now (2018.10.31)

自16年从新屋熊职校毕业,入职深圳某厂从事云存储两年半了.两年半的时间很快,快的感觉一生都会飞快,两年多一直很忙,忙的几乎忘了自己是否正向改变过. 正向改变,or 积极改变,今年十一回家,与几个好友小聚,开怀畅聊,聊了过去与未来:突然觉得,在公司在岗位上,自己停止不前浑然不知,抽身之后,方被自己的状态震惊到. 从这几个方面: 工作:cs出身,从事云存储,美且名曰分布式存储,而我接触到的业务,非分布式,非传统存储,仅仅是对kv存储以lun或者说卷的管理这个层面.那么问题来了,这个层面究竟有多高的价

【谜客帝国】第139届微雨潇潇联想专场(2018.10.15)

[谜客帝国]第139届微雨潇潇联想专场(2018.10.15) 主持:瓷   计分:小白 1.本季重逢在帝国  只身东海挟春雷 乐天曲江之感怀 一段新愁染眉弯 5 今秋复来此 2.寒蛩轻唱送微凉  萧萧梧叶诉离情 白帝有语怜高洁 夜夜龙泉壁上鸣 4 此秋声也 3.人至中年心淡然  我言此季胜春潮 春愁夏恨冬烦忧 吟风作赋只伤春 4 不是悲秋 4.菊残犹有傲霜枝  立冬尚见黄叶飞 子夜歌里玉关情 竞雄洒血化碧涛 5 秋风吹不尽 5.轻寒最是可人天  貂裘换酒也堪豪 姑苏城外寒山寺 斋中结社咏海棠