zoukankan      html  css  js  c++  java
  • 快快读 离散化 牛客题

    #include<bits/stdc++.h>
    //#define int long long
    #define ll long long
    using namespace std;
    struct FastIO {
        static const int S = 4e6;
        int wpos;
        char wbuf[S];
        FastIO() : wpos(0) {}
        inline int xchar() {
            static char buf[S];
            static int len = 0, pos = 0;
            if (pos == len)
                pos = 0, len = fread(buf, 1, S, stdin);
            if (pos == len) exit(0);
            return buf[pos++];
        }
        inline int xuint() {
            int c = xchar(), x = 0;
            while (c <= 32) c = xchar();
            for (; '0' <= c && c <= '9'; c = xchar()) x = x * 10 + c - '0';
            return x;
        }
        inline int xint()
        {
            int s = 1, c = xchar(), x = 0;
            while (c <= 32) c = xchar();
            if (c == '-') s = -1, c = xchar();
            for (; '0' <= c && c <= '9'; c = xchar()) x = x * 10 + c - '0';
            return x * s;
        }
        inline void xstring(char *s)
        {
            int c = xchar();
            while (c <= 32) c = xchar();
            for (; c > 32; c = xchar()) * s++ = c;
            *s = 0;
        }
        inline void wchar(int x)
        {
            if (wpos == S) fwrite(wbuf, 1, S, stdout), wpos = 0;
            wbuf[wpos++] = x;
        }
        inline void wint(int x)
        {
            if (x < 0) wchar('-'), x = -x;
            char s[24];
            int n = 0;
            while (x || !n) s[n++] = '0' + x % 10, x /= 10;
            while (n--) wchar(s[n]);
            wchar('
    ');
        }
        inline void wstring(const char *s)
        {
            while (*s) wchar(*s++);
        }
        ~FastIO()
        {
            if (wpos) fwrite(wbuf, 1, wpos, stdout), wpos = 0;
        }
    } io;
    const int maxn=2000+10;
    const int mod=1e9+7;
    int a[maxn][maxn];
    int num[maxn*maxn];
    int id[maxn];
    ll p[maxn];
    vector<int> vs;
    ll vp[maxn*maxn];
    int k[maxn*maxn];
    int32_t main()
    {
        //ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
        int n,m; n=io.xint(); m=io.xint();  p[0]=1;for(int i=1;i<=m;i++) { p[i]=p[i-1]*n; p[i]=p[i]%mod;}
        for(int i=1;i<=m;i++){
             for(int j=1;j<=n;j++){
               a[i][j]=io.xint();
                 vs.push_back(a[i][j]);
             }
        }
        sort(vs.begin(),vs.end());
        vs.erase(unique(vs.begin(),vs.end()),vs.end());
        for(int i=0;i<vs.size();i++) vp[i]=1;
        int tot=p[m];
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)  id[j]=lower_bound(vs.begin(),vs.end(),a[i][j])-vs.begin();
            for(int j=1;j<=n;j++)  num[id[j]]++;
            for(int j=1;j<=n;j++)
            {
                if(num[id[j]]==0) continue;
                vp[id[j]]*=(n-num[id[j]]); vp[id[j]]%=mod; k[id[j]]++;
                num[id[j]]=0;
            }
        }
        ll ans=0;
        for(int i=0;i<vs.size();i++)
        {
            vp[i]*=p[m-k[i]]; vp[i]%=mod;
            ans+=(tot-vp[i]+mod)%mod*vs[i];
            ans=ans%mod;
        }
        printf("%lld
    ",ans);
    }
  • 相关阅读:
    基于FPGA的均值滤波算法实现
    QuartusII 13.0 PLL IP Core调用及仿真
    varnish-4.x VCL之grace mode
    varnish-4.x VCL之cookie及缓存时间
    varnish-4.x VCL之强制cache miss
    Mariadb-Galera10二进制包安装
    MariaDB Replication
    MariaDB 使用CONNECT存储引擎
    MariaDB 使用TokuDB存储引擎
    Ubuntu启用VNC服务的配置
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/10543781.html
Copyright © 2011-2022 走看看