传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2751

稍微推一下就知道是每一位置可取的值的和乘起来

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std; typedef long long qword;
const qword maxn = ;
const qword mod = ;
const qword Mx = ;
qword M, m, n; struct node {
qword pos, v;
}e[maxn]; bool cmp(node a, node b) {
if(a.pos == b.pos) return a.v < b.v;
else return a.pos < b.pos;
} void read() {
scanf("%lld%lld%lld", &M, &m, &n);
for(qword i = ; i <= n; ++ i) scanf("%lld%lld", &e[i].pos, &e[i].v);
} qword Pow(qword a, qword b) {
qword ret = ; qword now = a % mod;
while(b) {
if(b & ) ret = ret * now % mod;
b >>= , now = now * now % mod;
}
return ret;
} qword ans = ; void sov() {
sort(e + , e + + n, cmp);
qword pre = ;
qword S = M * (M + ) % mod * Mx % mod;
for(qword i = ; i <= n; ++ i) {
qword ls, rs; ls = i, rs = i;
while(e[rs + ].pos == e[ls].pos) rs ++;
ans = ans * Pow(S, e[ls].pos - pre - ) % mod; pre = e[ls].pos;
qword Tmp = S;
for(qword j = ls; j <= rs; ++ j) {
if(e[j].pos == e[j - ].pos && e[j].v == e[j - ].v) continue;
Tmp = (Tmp - e[j].v) % mod;
}
Tmp = (Tmp % mod + mod) % mod;
ans = ans * Tmp % mod;
i = rs;
}
if(pre != m) ans = ans * Pow(S, m - pre) % mod;
printf("%lld\n", ans);
} int main() {
//freopen("test.in", "r", stdin);
read(), sov();
return ;
}

bzoj 2751的更多相关文章

  1. BZOJ 2751 容易题

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2751 题意:有一个数列A已知对于所有的A[i]都是1到n的自然数,并且知道对于一些A[i ...

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

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

  3. bzoj 2751 [HAOI2012]容易题(easy)(数学)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2751 [题意] m个位置,已知每个位置的可能取值,问所有可能情况的每个位置的乘积的和. ...

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

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

  5. BZOJ 2751 容易题(easy) 快速幂+快速乘

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

  6. bzoj 2751 快速幂

    首先我们知道,对于所有种情况,我们可以将每一位可以放的 数的值加起来,所有位置的乘起来,等于的就是最后的答案,具体 为什么正确,可以根据乘法分配律来想一想. 那么对于所有不做要求的,快速幂直接算就行了 ...

  7. BZOJ刷题指南(转)

    基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...

  8. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  9. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

随机推荐

  1. Gym 102007I 二分 网络流

    题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可.我们还需要用二 ...

  2. 【LeetCode】贪心

    [452] Minimum Number of Arrows to Burst Balloons [Medium] 给一堆线段,使用最少的arrow,穿过所有的线段.陈题,第一条线段的终点. Inpu ...

  3. 【转载】网易极客战记官方攻略-地牢-严酷考验 B

    关卡连接:https://codecombat.163.com/play/level/the-gauntlet-b 免费试玩:https://codecombat.163.com/play 使用你的所 ...

  4. ToDoList 增删改查

    ToDoList 主要功能 增加数据 删除数据 修改数据 查寻数据渲染页面 1 . HTML页面 <!DOCTYPE html> <html lang="en"& ...

  5. clickhouse核心引擎MergeTree子引擎

    在clickhouse使用过程中,针对数据量和查询场景,MergeTree是最常用也是较为合适的表引擎.针对特定的业务,MergeTree的子引擎可以针对不同的业务而定,但都基于MergeTree引擎 ...

  6. flex: 1在ios10.2系统手机端的换行布局失败问题

    使用flex:1要追加flex-basis: auto;可以简写flex: 1 1 auto; 表格不可以用flex布局

  7. 云栖PPT下载 | 开源界大咖集体现身,开源数据库专场重点再回眸!

    阿里云开源数据库项目最新发布 阿里巴巴集团副总裁.阿里云智能数据库事业部总裁.高级研究员李飞飞(飞刀).阿里云数据库资深技术专家楼方鑫(黄忠)以及阿里云数据库技术专家傅宇(齐木)三位阿里云技术专家为大 ...

  8. linux POSIX信号量

    POSIX信号量机制是3种IPC机制之一,3种IPC机制源于POSIX.1的实时扩展. 创建一个新的命名信号量或者使用一个现有信号量 #include <fcntl.h> #include ...

  9. [NOIP模拟23]题解

    中间鸽了好几篇啊QAQ……有时间再补吧…… A.mine sbdp,考场上写的巨麻烦不过还是能A的(虽然MLE了……每一维都少开1就A掉了555).设$dp[i][j][k]$为枚举到第i位,第i位是 ...

  10. 16、使用jQuery的html5player播放器,进行播放

    <!-- Website Design By: www.happyworm.com --> <title>Demo : jPlayer as a video playlist ...