【BZOJ2751】【codevs1853】容易题,快速幂+逆元
来源:互联网 发布:javascript分页代码 编辑:程序博客网 时间:2024/06/03 22:57
Time:2016.06.24
Author:xiaoyimi
转载注明出处谢谢
传送门1
传送门2
思路:
k=0时答案就是
每一种限制条件就是在乘的时候去除某个数
就比如说n=3,m=3时,答案就是
当k=1,限制条件为(1,1)时我们就把第一个括号里的1去掉,变成
k=2,限制条件为(1,1)(2,1)时答案就是
搞清楚这个原理接下来就很简单了
将k个限制条件排序,然后分开计算每一个位置里的数就好了,剩下的没被去掉的位置用快速幂
(思想如上,但代码表达上有点怪,仅供参考)
#include<cstdio>#include<iostream>#include<algorithm>#define M 100004#define LL long long#define mo 1000000007using namespace std;int in(){ int t=0;char ch=getchar(); while (ch>'9'||ch<'0') ch=getchar(); while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar(); return t;}LL qr(LL x,int y){ LL ans=1; for (;y;y>>=1,x=x*x%mo) if (y&1) ans=ans*x%mo; return ans;}int n,m,k;struct node{ int x,y; bool operator <(node other)const{ if(x!=other.x) return x<other.x; return y<other.y; } }Q[M];LL ans,sum,inv;main(){ n=in();m=in();k=in(); for (int i=1;i<=k;i++) Q[i].x=in(),Q[i].y=in(); LL nn=(LL)n*(n+1)/2%mo; ans=qr(nn,m); inv=qr(nn,mo-2); sort(Q+1,Q+k+1); sum=Q[1].y; for (int i=2;i<=k;i++) { if (Q[i].x==Q[i-1].x) if (Q[i].y!=Q[i-1].y) sum+=Q[i].y; else; else ans=ans*(nn-sum)%mo*inv%mo, sum=Q[i].y; } ans=ans*(nn-sum)%mo*inv%mo; printf("%d",ans<0?ans+mo:ans);}
0 0
- 【BZOJ2751】【codevs1853】容易题,快速幂+逆元
- bzoj2751&CodeVS1853 容易题
- 【BZOJ2751】【HAOI2012】容易题(easy) 快速幂快速乘
- [bzoj2751]: [HAOI2012]容易题(easy)(快速幂)
- bzoj2751 [HAOI2012]容易题(数学+快速幂)
- 【HAOI2012】bzoj2751 容易题
- bzoj2751 [HAOI2012]容易题(easy)
- bzoj2751 [HAOI2012]容易题(easy)
- 【HAOI2012】【BZOJ2751】容易题(easy)
- 【bzoj2751】【HAOI2012】【容易题】【数学】
- bzoj2751【haoi2012】容易题(easy)
- [bzoj2751][HAOI2012]容易题(easy)
- 【bzoj2751】 [HAOI2012]容易题(easy)
- bzoj2751 [HAOI2012]容易题 数学
- [BZOJ2751][HAOI2012]容易题(easy)(数学相关+stl)
- [bzoj2751][HAOI2012]容易题(easy)(STL+乱搞?)
- 快速幂 + 逆元
- 2751: [HAOI2012]容易题(easy) 快速幂
- 【NOIP2013模拟联考7】数列
- 正则表达式--------grep
- python websocket.WebSocketApp笔记
- 查看OpenGL版本
- 22. Generate Parentheses
- 【BZOJ2751】【codevs1853】容易题,快速幂+逆元
- 初学CentOS——常见小命令
- 阿里音乐预测 之 初探ODPS SQL
- linux 挂死问题定位分析
- matlab中uigetfile的用法
- js声明匿名函数
- 使用PHP导入和导出CSV文件
- 图像局部特征(二)--Harris角点检测子
- hibernate多列多为联合主键