bzoj 2751
传送门: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的更多相关文章
- BZOJ 2751 容易题
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2751 题意:有一个数列A已知对于所有的A[i]都是1到n的自然数,并且知道对于一些A[i ...
- BZOJ 2751: [HAOI2012]容易题(easy) 数学
2751: [HAOI2012]容易题(easy) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...
- bzoj 2751 [HAOI2012]容易题(easy)(数学)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2751 [题意] m个位置,已知每个位置的可能取值,问所有可能情况的每个位置的乘积的和. ...
- BZOJ 2751: [HAOI2012]容易题(easy)( )
有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...
- BZOJ 2751 容易题(easy) 快速幂+快速乘
2751: [HAOI2012]容易题(easy) Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i] ...
- bzoj 2751 快速幂
首先我们知道,对于所有种情况,我们可以将每一位可以放的 数的值加起来,所有位置的乘起来,等于的就是最后的答案,具体 为什么正确,可以根据乘法分配律来想一想. 那么对于所有不做要求的,快速幂直接算就行了 ...
- BZOJ刷题指南(转)
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
随机推荐
- DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍
背景 2016 年 10 月 21 日,DNS 服务商 dyn 的服务器遭遇黑客大流量的 ddos 攻击,使得美国大量互联网公司如 twitter,github等都出现解析失败,无法提供服务.如下图可 ...
- WebBug靶场介绍篇 — 01
今天是星期天,干点啥,反正一天没事,我也不想继续去搞 msf 的那些什么浏览器提权啊,PDF 提权啊,快捷方式提取啊,或者木马免杀什么的,毕竟现在我也不是为了去找工作而去学那些工具了,,, 说开这个靶 ...
- VC内联汇编,引用程序中的变量
int a=5; //变量a _asm { mov eax,a; //将变量a的值放入寄存器eax add eax,eax; //相当于a=a+a mov a,eax; // ...
- TeleportPoint可瞬移的目标位置
TeleportPoint.png 最外部的组件: Animation: 包含了该装置的几个动画Teleport Point: 点传送的脚本 teleport_marker_mesh: 外部的圆柱形光 ...
- Python 多线程同步队列模型
Python 多线程同步队列模型 我面临的问题是有个非常慢的处理逻辑(比如分词.句法),有大量的语料,想用多线程来处理. 这一个过程可以抽象成一个叫“同步队列”的模型. 具体来讲,有一个生产者(Dis ...
- Useful code snippets with C++ boost
Useful code snippets with C++ boost Is Punctuation It’s very straight forward to use boost.regex as ...
- java lambda filter写法
datas.stream().filter(m->!m.getSerialId().equals(setting.getSerialId())).collect(Collectors.toLis ...
- 【前端控件】JQuery datepicker 日期控件设置
datepicker控件可通过参数设置进行语言切换,以下可实现,系统所有日期控件默认为中文,在特定页面或者特定条件下可切换成英语!~ HTML: <!DOCTYPE html> <h ...
- HDU 6656 Kejin Player (期望DP 逆元)
2019 杭电多校 7 1011 题目链接:HDU 6656 比赛链接:2019 Multi-University Training Contest 7 Problem Description Cub ...
- POJ 1269 Intersecting Lines (判断直线位置关系)
题目链接:POJ 1269 Problem Description We all know that a pair of distinct points on a plane defines a li ...