传送门

首先 $(\sum_{i=1}^{n}a_i)(\sum_{i=1}^{m}b_i)$ 展开以后包含了所有 $ab$ 两两相乘的情况并且每种组合只出现一次

发现展开后刚好和题目对序列价值的定义一样

考虑进一步的,由乘法分配率可以知道 $\prod_{i=1}^{n}(\sum_{j=1}^{m}j)$ 展开以后就是所有由 $1$ 到 $m$ 的数组成的数列的价值的和

对于题目中没有限制的位,我们可以直接快速幂求出贡献,考虑剩下有限制的位,

对于某一位,设合法的数的集合为 $S$ 那么这一位贡献就是 $\sum_{j \in S}j$,就是集合 $S$ 元素的和 ,对每一位分别计算然后乘起来即可

具体维护集合的和可以用总和减去不合法的数得到

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=2e5+,mo=1e9+;
inline int fk(int x) { return x>=mo ? x-mo : x; }
int n,m,K;
struct dat {
int x,y;
inline bool operator < (const dat &tmp) const {
return x!=tmp.x ? x<tmp.x : y<tmp.y;
}
}d[N];
int sum,Ans=;
inline int ksm(int x,int y)
{
int res=;
while(y)
{
if(y&) res=1ll*res*x%mo;
x=1ll*x*x%mo; y>>=;
}
return res;
}
int main()
{
m=read(),n=read(),K=read();
sum=(1ll*m*(m+)/)%mo;
for(int i=;i<=K;i++) d[i].x=read(),d[i].y=read();
sort(d+,d+K+); int now=sum,cnt=;
for(int i=;i<=K;i++)
{
if(i!=&&d[i].x!=d[i-].x) { cnt++; Ans=1ll*Ans*now%mo; now=sum; }
if(d[i].x!=d[i-].x||(d[i].x==d[i-].x&&d[i].y!=d[i-].y)) now=fk(now-d[i].y+mo);
}
if(now!=sum) { Ans=1ll*Ans*now%mo; cnt++; }
Ans=1ll*Ans*ksm(sum,n-cnt)%mo;
printf("%d\n",Ans);
return ;
}

P2220 [HAOI2012]容易题的更多相关文章

  1. 洛谷 P2220 [HAOI2012]容易题 数论

    洛谷 P2220 [HAOI2012]容易题 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数 ...

  2. P2220 [HAOI2012]容易题[小学数学]

    题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定 ...

  3. P2220 [HAOI2012]容易题(快速幂)

    Describe 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值 ...

  4. P2220 [HAOI2012]容易题【快速幂】

    题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定 ...

  5. BZOJ 2751: [HAOI2012]容易题(easy) 数学

    2751: [HAOI2012]容易题(easy) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...

  6. BZOJ2751: [HAOI2012]容易题(easy)

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 872  Solved: 377[Submit][S ...

  7. BZOJ 2751: [HAOI2012]容易题(easy)( )

    有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...

  8. 2751: [HAOI2012]容易题(easy)

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1087  Solved: 477[Submit][ ...

  9. [HAOI2012] 容易题[母函数]

    794. [HAOI2012] 容易题 ★★☆   输入文件:easy.in   输出文件:easy.out   简单对比时间限制:1 s   内存限制:128 MB 秒 输入:easy.in 输出: ...

随机推荐

  1. antd不可选择时间

    //不能选择今天之前的日期<DatePicker format={this.timeFormat} showTime placeholder="项目结束日期" disable ...

  2. python Tkinter 组件

    Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用.这些控件通常被称为控件或者部件. 目前有15种Tkinter的部件.我们提出这些部件以及一个简短的介绍,在下面的表: 控件 ...

  3. 牛客网 Chess ( 博弈 && 奇异局势 )

    题目链接 分析 : 发现如果一开始就在边界或者位于对角线的位置上肯定是必胜态 从终点逆推,画出胜负表格,填一填,就会发现和奇异局势的前几项一样 然后打个奇异局势的表就能 AC 了 #include&l ...

  4. new/delete和malloc/free区别与联系

    1.基本概念 malloc/free (1).函数原型及说明 void *malloc(long NumBytes): 该函数分配了NumBytes个字节,并返回了指向这块内存的指针.如果分配失败,则 ...

  5. sqli-labs(12)

    0X01摘要体现(小编这里傻逼了 可以直接用group_concat函数绕过显示问题我还在用limit绕过) 还是这个模块  我们很熟徐那么先来尝试一下 单引号加入 无报错信息 哦豁 加入双引号试试呐 ...

  6. 从三十而立的迷茫,到30K

    很标题党的标题,但是希望分享一下自己的经历,一份有点儿不寻常的经历. 12年创业,到17年末,举步维艰,没有项目,公司只剩下两个人,负债,现实给我这个每见过什么市面,却自命不凡的人狠狠的一个耳光.加上 ...

  7. python 调用c++类方法(1)

    myTest.cpp: #include<iostream> #include<vector> class MyTest { public: MyTest(); ~MyTest ...

  8. script标签defer与async的区别

    总结: async 会在文件下载完毕后立即执行 会阻止html parser defer 会下载完以后等html parser结束后执行,保证顺序

  9. Selenium学习之==>Xpath使用方法

    一.什么是Xpath XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 工具 Xpath的练习建议大家安装火狐浏览器后,下载插件,FireBug.由于最新版火狐不再支持 ...

  10. REST API (四)之Generic views

    通用的视图 Django’s generic views... were developed as a shortcut for common usage patterns... 它们采取一些常见的习 ...