题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2751

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

思路:假设没有限制不能取哪些值,那么答案ans为:

现在有了限制,那么有限制的那些位置不再是1到n的数字之和,而是除去某些数字,因此对于那些位置专门计算它们的和,再乘起来,没有限制的位置设有x个,则再乘以sum^x即可。

i64 a[N];
map<int,int> mp;
set<i64> S;
int n,m,K;

i64 mul(i64 a,i64 b)
{
    if(b<0) b=(b%mod+mod)%mod;
    i64 ans=0;
    while(b)
    {
        if(b&1) ans=(ans+a)%mod;
        a=(a+a)%mod;
        b>>=1;
    }
    return ans;
}

i64 Pow(i64 a,i64 b)
{
    i64 ans=1;
    while(b)
    {
        if(b&1) ans=mul(ans,a);
        a=mul(a,a);
        b>>=1;
    }
    return ans;
}

int main()
{
    RD(n,m,K);
    int x,y,id=0;
    i64 t;
    while(K--)
    {
        RD(x,y);
        t=(i64)x*INF+y;
        if(S.find(t)!=S.end()) continue;
        S.insert(t);
        if(mp.count(x)==0) mp[x]=++id;
        (a[mp[x]]+=y)%=mod;
    }
    i64 ans=1,s=(i64)n*(n+1)/2%mod,i;
    FOR1(i,id) ans=mul(ans,s-a[i]);
    ans=mul(ans,Pow(s,m-id));
    PR(ans);
}

BZOJ 2751 容易题的更多相关文章

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

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

  2. bzoj 前100题计划

    bzoj前100题计划 xz布置的巨大的坑.. 有空填题解... 1002 轮状病毒 用python手动matrixtree打表. #include<bits/stdc++.h> #def ...

  3. BZOJ的思维题

    5085:最大 给你一个n×m的矩形,要你找一个子矩形,价值为左上角左下角右上角右下角这四个数的最小值,要你最大化矩形 的价值. 关键点是要想到把这些值排序 值从小到大考虑,比如说现在最小的值是(x1 ...

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

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

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

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

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

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

  7. BZOJ 2683: 简单题

    2683: 简单题 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 913  Solved: 379[Submit][Status][Discuss] ...

  8. bzoj 4066: 简单题 kd-tree

    4066: 简单题 Time Limit: 50 Sec  Memory Limit: 20 MBSubmit: 234  Solved: 82[Submit][Status][Discuss] De ...

  9. bzoj 2510: 弱题 循环矩阵

    2510: 弱题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 124  Solved: 61[Submit][Status][Discuss] De ...

随机推荐

  1. 【BZOJ】【3207】花神的嘲讽计划 I

    字符串Hash+可持久化线段树 好神奇的转化…… 蒟蒻一开始还去想AC自动机去了……然而由于a[i]的范围是小于等于n,怎么也想不出一个时间复杂度合理的方法 膜拜了题解0.0原来是字符串Hash! 首 ...

  2. Leetcode#138 Copy List with Random Pointer

    原题地址 非常巧妙的方法,不需要用map,只需要O(1)的额外存储空间,分为3步: 1. 先复制链表,但是这个复制比较特殊,每个新复制的节点添加在原节点的后面,相当于"加塞"2. ...

  3. AVFoundation的使用

    AVFoundation的使用 2013-05-03 14:50:21|  分类: iphone_dev_note|举报|字号 订阅         相机相关应用一般会用到AVFoundation. ...

  4. 如何撰写SCI论文的讨论部分?——经典结构 – 俗称“倒漏斗型。

  5. 转 wince程序 中使用Listview显示图标问题 (C#) .

    思路: 1.窗体控件:lstaqgl [Listview控件名称]  imageList1[ImageList控件] 2.  图片路径添加到—imageList1——Listview显示图片从 ima ...

  6. HDU5008 Boring String Problem(后缀数组)

    练习一下字符串,做一下这道题. 首先是关于一个字符串有多少不同子串的问题,串由小到大排起序来应该是按照sa[i]的顺序排出来的产生的. 好像abbacd,排序出来的后缀是这样的 1---abbacd ...

  7. mvc5 @RenderSection("scripts", required: false) 什么意思

    在模板中 相当于占位符 使用方法如下 @section scripts{ //coding }

  8. hdu 4745 Two Rabbits

    思路:求最长回文子串的长度!代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #incl ...

  9. Android Non-UI to UI Thread Communications(Part 2 of 5)

    Original:http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-2-of-5/ his i ...

  10. Junit单元测试学习笔记二

    我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4. 一.     包含必要地Package ...