题面

感觉是个套路题,不是特别难(然而卡常

直接做不可做,改成算每个数的贡献

暴力的想法是容斥,即记录每个数在每行里的出现情况,从总方案中扣掉每一行都没选到这个数的方案,复杂度$O(n^3)$

我们发现很多时候一行里根本没有这个数,也就是说很多情况下都白枚举了,我们可以尝试直接对每个数求方案。具体来说我们把每个数出现的行丢进一个vector里,然后vector里一段相同的就是它在这行出现的次数,没出现的行可以直接算出来,这样复杂度就变成$O(n^2\log^2 n)$了,然后你就可以开始卡常了

用了fread+register+指针+unsigned int+const 才在 EOJ 上卡过去,我佛了

 #pragma GCC optimize(2)
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#define uint unsigned int
#define vint vector<uint>
using namespace std;
const int N=;
const uint mod=1e9+;
vint vec[N*N];
uint n,m,rd,all,tot,ans;
uint a[N][N],pw[N],uni[N*N]; char BF[<<],*P1=BF,*P2=BF;
char Gc(){return (P1==P2&&(P2=(P1=BF)+fread(BF,,<<,stdin),P1==P2)?EOF:*P1++);}
void Fread(uint &x)
{
x=; char ch=Gc();
while(!isdigit(ch)) ch=Gc();
while(isdigit(ch)) x=(x<<)+(x<<)+(ch^),ch=Gc();
} void Add(uint &x,uint y)
{
x+=y;
if(x>=mod) x-=mod;
}
int main()
{
register uint i,j,k;
Fread(m),Fread(n);
for(i=;i<=n;i++)
for(j=;j<=m;j++)
Fread(rd),uni[++tot]=*(*(a+i)+j)=rd;
sort(uni+,uni++tot);
const uint lth=unique(uni+,uni++tot)-uni-;
for(i=;i<=n;i++)
for(j=;j<=m;j++)
{
const uint t=lower_bound(uni+,uni++lth,*(*(a+i)+j))-uni;
vec[*(*(a+i)+j)=t].push_back(i);
}
for(i=pw[]=;i<=n;i++) pw[i]=1ll*pw[i-]*m%mod;
for(i=;i<=lth;i++)
{
uint tmp=pw[n],tep=,res=n;
const uint siz=vec[i].size();
vint ve=vec[i];
for(j=;j<siz;j=k+)
{
k=j;
while(k+<siz&&ve[j]==ve[k+]) k++;
tep=1ll*tep*(m-(k-j+))%mod,res--;
}
tep=1ll*tep*pw[res]%mod;
Add(tmp,mod-tep),Add(ans,1ll*tmp*uni[i]%mod);
}
printf("%d",ans);
return ;
}

EOJ #276的更多相关文章

  1. EOJ Monthly 2019.2 题解(B、D、F)

    EOJ Monthly 2019.2 题解(B.D.F) 官方题解:https://acm.ecnu.edu.cn/blog/entry/320/ B. 解题 单测试点时限: 2.0 秒 内存限制:  ...

  2. UOJ #276「清华集训2016」汽水

    为什么你们常数都这么小啊 UOJ #276 题意:在树上找一条链使得|边权平均值$ -k$|尽量小,$ n<=5e4$ $ Solution:$ 首先二分答案$ ans$,即我们需要找一条链使得 ...

  3. 【BZOJ4738/UOJ#276】汽水(点分治,分数规划)

    [BZOJ4738/UOJ#276]汽水(点分治,分数规划) 题面 BZOJ UOJ 题解 今天考试的题目,虽然说是写完了,但是感觉还是半懂不懂的来着. 代码基本照着\(Anson\)爷的码的,orz ...

  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 Problem #3249 状态压缩+循环周期+反向递推

    限量供应 Time limit per test: 4.0 seconds Time limit all tests: 4.0 seconds Memory limit: 256 megabytes ...

  6. EOJ Monthly 2018.7

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

  7. Android Weekly Notes Issue #276

    September 24th, 2017 Android Weekly Issue #276 本期内容包括LifeCycle与Architecture的相关文章,以及新的JSON解析库Moshi的介绍 ...

  8. EOJ Monthly 2018.4

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

  9. [UOJ#276]【清华集训2016】汽水

    [UOJ#276][清华集训2016]汽水 试题描述 牛牛来到了一个盛产汽水的国度旅行. 这个国度的地图上有 \(n\) 个城市,这些城市之间用 \(n−1\) 条道路连接,任意两个城市之间,都存在一 ...

随机推荐

  1. 20155338《网络对抗》 Exp4 恶意代码分析

    20155338<网络对抗>恶意代码分析 实验过程 1.计划任务监控 在C盘根目录下建立一个netstatlog.bat文件(先把后缀设为txt,保存好内容后记得把后缀改为bat),内容如 ...

  2. 使用HibernateDaoSupport抽取BaseDao

            在开发采用Struts2+Spring+hibernate这三大框架的项目时,我们需要一个抽取一个BaseDao.这个Dao里面CRUD都给封装好,后续的其他Dao直接用它的功能就可以 ...

  3. Eclipse中Maven插件配置

    1. Maven插件配置 http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html 2. Ma ...

  4. kali安装后的网络设置教程(必需)

    本文只适用于kali安装完成后的网络设置,使用NAT模式,关于桥接模式设置在完成本教程后,可以自行百度,教程有很多,但前提是你已经执行完了本教程才能进行进一步的设置(但有些人的kali是可以直接联网的 ...

  5. ECMAScript6——异步操作之Promise

    Promise对象的参数为一个回调函数,这个回调函数有两个参数,分别是resolve, reject(这俩参数的名字可任取),resolve,reject分别表示异步操作执行成功后的回调函数和异步操作 ...

  6. ElasticSearch入门 第九篇:实现正则表达式查询的思路

    这是ElasticSearch 2.4 版本系列的第九篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  7. Spring+SpringMVC+MyBatis整合基础篇

    基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...

  8. pandas 初识(一)

    基本内容 Series: Series 是有一组数据(numpy的数据类型 numpy.ndarray)以及一组数据标签(即索引)组成,可以看成一个一个定长的有序字典(索引值到数据值的一个映射) ob ...

  9. 《杜增强讲Unity之Tanks坦克大战》4-坦克的移动和旋转

    4 坦克移动和旋转 本节课的目标是实现同时wsad和上下左右控制两个坦克分别移动和旋转 4.1 本节代码预览   image 将上节课场景s2另存为s3. 4.2 添加车轮扬沙效果 从Prefabs里 ...

  10. B1022. D进制的A+B

    除基取余法 #include<bits/stdc++.h> using namespace std; stack<int> s; int main(){ long long a ...