有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的值;

--by洛谷;

http://daniu.luogu.org/problem/show?pid=2220



简单题?呵呵

首先,她有个公式

我们先假设k=0;

ai为a位的可能;bi为b位的可能;ci为c位的可能...

则:

a1*b1*c1+a1*b1*c2+a1*b2*c1+a1*b2*c2+a2*b1*c1+a2*b1*c2+a2*b2*c1+a2*b2*c2;

你提公因式嘛;

a1*(b1*c1+b1*c2+b2*c1+b2*c2)+a2*(b1*c1+b1*c2+b2*c1+b2*c2);

再提

a1*[b1*(c1+c2)+b2*(c1+c2)]+a2*[b1*(c1+c2)+b2*(c1+c2)];

a1*(b1+b2)*(c1+c2)+a2*(b1+b2)*(c1+c2);

(a1+a2)*(b1+b2)*(c1+c2);

再通过k的存在,对每位的可能减zi;

(a1+a2-z1)*(b1+b2-z2)*(c1+c2-z3);

然后每一位在k=0一样,即a1+a2=b1+b2=c1+c2=sum(n);

(sum(n)-z1)*(sum(n)-z2)*(sum(n)-z3);

所以,这叫简单题?

就想预处理sum(n)然后O(n)乘,每次记得减z;

然而O(n)也过不了——n=1e9。。。

所以,这叫简单题?

但是我们发现,k比较小,1e5;

所以有限制的位置,小于等于1e5;

我们可以先算她们,然后剩下的写一个快速幂;

时间效率O(klogk+k+log(n-k));

(因为有个sort);

代码如下:

 #include<cstdio>
#include<algorithm>
#define mod 1000000007
using namespace std;
struct ss
{
int x,y;
}a[];
long long b[]; bool cmp(ss a,ss b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
long long sqr(long long ,int ); int main()
{
int n,m,k;
long long sz1=;
long long ans=;
int i,j,l;
scanf("%d%d%d",&n,&m,&k);
sz1=(long long)n*(n+)/%mod;
for(i=;i<=k;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a+,a+k+,cmp);
j=;
for(i=;i<=k;i++)
{
if(a[i].x!=a[i-].x)
b[++j]=a[i].y;
else
if(a[i].y!=a[i-].y)
b[j]=(b[j]+a[i].y)%mod;
}
for(i=;i<=j;i++)
ans=(ans*(sz1-b[i]+mod))%mod;
m=m-j;
ans=(ans*sqr(sz1,m))%mod;
printf("%lld",ans);
return ;
} long long sqr(long long sz,int m)
{
long long ans=;
while(m)
{
if(m&)
ans=(ans*sz)%mod;
sz=(sz*sz)%mod;
m=m>>;
}
return ans;
}

祝AC哟;

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

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

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

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

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

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

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

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

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

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

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

  6. 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂

    [bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...

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

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

  8. BZOJ2751 [HAOI2012]容易题

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

  9. 2018.11.07 bzoj2751: [HAOI2012]容易题(easy)(组合数学)

    传送门 组合数学一眼题. 感觉一直做这种题智商会降低. 利用组合数学的分步计数原理. 只用关心每个数不被限制的取值的总和然后乘起来就可以了. 对于大部分数都不会被限制,总和都是n(n+1)2\frac ...

随机推荐

  1. BZOJ 4027 [HEOI 2015] 兔子与樱花 解题报告

    这个题看起来好神的感觉.实际上也好神... 我们可以考虑设 $f_u$ 表示以 $u$ 为根的子树中最多能删多少个点, 再设 $g_u$ 表示以 $u$ 为根的子树中删了 $f_u$ 个点之后,$u$ ...

  2. hdu 4286

    splay 练手用: 杭电的oj要手动开栈: #include<cstdio> #pragma comment(linker, "/STACK:102400000,1024000 ...

  3. Unity3D热更新

    原地址:http://crazylights.cnblogs.com/ 下载在这个时代实在是太平常了,每个人都深刻的理解着下载到底是什么. 这一篇文字只是把下载的代码分享并介绍,而已. 首先,下载系统 ...

  4. 中国海洋大学第四届朗讯杯高级组 I Cuckoo for Hashing

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2719&cid=1203 题意 :意思就是哈希来的,具体大意就是说有两个哈希表,然后有这样 ...

  5. POJ 3352 Road Construction (边双连通分量)

    题目链接 题意 :有一个景点要修路,但是有些景点只有一条路可达,若是修路的话则有些景点就到不了,所以要临时搭一些路,以保证无论哪条路在修都能让游客到达任何一个景点 思路 :把景点看成点,路看成边,看要 ...

  6. HDU1395+快速幂

    #include<stdio.h> int fast_pow( int a,int b,int mod ){ ; ){ == ){ res = res*a%mod; } a = a*a%m ...

  7. easyui源码翻译1.32--SplitButton(分割按钮)

    前言 扩展自$.fn.linkbutton.defaults.用于$.fn.splitbutton.defaults重写默认值对象.下载该插件翻译源码 类似菜单按钮,分割按钮也与linkbutton和 ...

  8. 批量生成卡号密码的php程序

    <?php header('Content-Type:text/html; charset=utf-8'); function MakeCard() { set_time_limit(0); / ...

  9. 2013年最受欢迎的16个HTML5 WordPress主题

    本文中,我整理了16个最新.最受欢迎的WordPress主题,它们一致的特征是支持HTML5, 它们秉承最佳设计理念以及最新的流行趋势,将它们归纳与此,希望对喜欢HTML5,准备用WordPress做 ...

  10. 【HDOJ】5046 Airport

    DLX简单题目. /* 5046 */ #include <iostream> #include <string> #include <map> #include ...