hdu-4810 Wall Painting 2013ACM/ICPC亚洲区南京站现场赛

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4810

解题思路:

记录下每个数的各个位上1个数的和,根据题意,异或要产生数值,必须是取基数个1,通过组合数学的方法,比如要在6个1里面取三个1,则取得方法有C(6,3),那么如何可以快速取得C(6,3)呢?通过杨辉三角形打表即可

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;#define P 1000003
int n, c[1005][1005], sum[40], a, ans[1005], t;
// c[][]记录杨辉三角形// sum[]记录每位上有多少个1;// ans[]记录第k天有多少种方案
int main()
{// 杨辉三角形打表,记录C(m,n)
    for (int i =0; i <= 1000; i++)
    {
        c[i][0] = 1;
        c[i][i] = 1;
    }
    for (int i =1; i <= 1000; i++)
    {
        for (int j = 1; j < i; j++)
        {
            c[i][j] = (c[i - 1][j] % P + c[i-1][j-1] %P) %P;
        }
    }
    while (~scanf("%d", &n))
    {
        memset(sum, 0, sizeof(sum));
        memset(ans, 0, sizeof(ans));    // 将每位上有多少个1记录下来
        for (int i= 0; i < n; i++)
        {
            int t;
            scanf("%d", &t);
            for (int j = 0; t;++j,t>>=1)
            {
                if (t%2) sum[j]++; //该位上有1;
            }
        }
            for (int k = 1; k <= n; k++)
            {
                for (int i = 0; i < 32; i++)
                {

                    for (int j = 1; j <= sum[i] && j <= k; j += 2){
                        t = (long long )c[sum[i]][j]* c[n-sum[i]][k-j] %P*(1<<i)%P;
                        ans[k] = (ans[k] + t) % P;
                    }

                }

            }

        for (int k = 1; k <= n; k++)
                printf("%d%c", ans[k], k < n?‘ ‘:‘\n‘);
    }
}

原文地址:https://www.cnblogs.com/hulian425/p/12185812.html

时间: 2024-10-13 23:35:20

hdu-4810 Wall Painting 2013ACM/ICPC亚洲区南京站现场赛的相关文章

2013ACM/ICPC亚洲区南京站现场赛——题目重现

GPA http://acm.hdu.edu.cn/showproblem.php?pid=4802 签到题,输入两个表,注意细心点就行了. 1 #include<cstdio> 2 #include<cstring> 3 const int M=16; 4 char s[M],cp[M][M]={"A","A-","B+","B","B-","C+","

2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5984 Pocky 题意 给出一根棒子(可以吃的)的长度x和切割过程中不能小于的长度d,每次随机的选取一个位置切开,吃掉左边的一半,对右边的棒子同样操作,直至剩余的长度不大于d时停止.现在给出x和d,问切割次数的数学期望是多少. 解题思路 当看到第二个样例2 1时,结果是1.693147,联想到ln

【hdu 5521】【 2015ACM/ICPC亚洲区沈阳站重现赛】Meeting 题意&题解&代码

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5521 题意: 输入:输入n表示有n个点,输入m表示有m个点集. 接下来m行信息,每行先输入一个t表示这个点集中任意两点费时为t,再输入一个s,表示有s个点在这个点集中,接下来s个数表示这些数在这个点集之中. 现在有两个人,其中一个人住在点1,另一个人住在点n,如果两个人要见面,同时出发,可以走走停停,问需要最少时间是多少,有哪几个点能被当成见面点. 题解: 我们发现这道题如果建好图之后就直接是一个

【hdu 5510】【2015ACM/ICPC亚洲区沈阳站-重现赛 】Bazinga 题意&题解&代码(C++)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意: 给出n个字符串,求下标最大的字符串,存在下标小于它的字符串中有字符串不是他的子串. 题解: 首先能想到kmp+n^2暴力匹配,但是感觉会超时,因此我们需要加一些剪枝,水题,不要被他的数据范围吓到.. 代码: #include<iostream> #include<algorithm> #include<stdio.h> #include<string.

2014ACM/ICPC亚洲区西安站现场赛 F color(二项式反演)

题意:小球排成一排,从m种颜色中选取k种颜色给n个球上色,要求相邻的球的颜色不同,求可行的方案数,答案模1e9+7.T组数据,1<= n, m <= 1e9, 1 <= k <= 1e6, k <= n, m 分析: a(k)表示用不超过k种颜色染n个位置,两两相邻颜色不相同的总数,很简单a(k)=k(n-1)^(k-1) b(k)表示恰好用k种颜色 很显然a(k)=ΣC(k,i)b(i),我们知道a,想知道b,这里就用到二项式反演 那么b(k)=ΣC(k,i)*i*(-1)

hdu5512 Pagodas(2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学) )

Pagodas Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 14 Accepted Submission(s): 13 Problem Description n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai M

2014ACM/ICPC亚洲区鞍山赛区现场赛——题目重现

2014ACM/ICPC亚洲区鞍山赛区现场赛--题目重现 题目链接 5小时内就搞了5题B.C.D.E,I. H题想到要打表搞了,可惜时间不够,后面打出表试了几下过了- - K题过的人也比较多,感觉是个几何旋转+ploya,但是几何实在不行没什么想法 B:这题就是一个大模拟,直接数组去模拟即可,注意细节就能过 C:类似大白上一题红蓝三角形的, 每个数字找一个互质和一个不互质个数,除掉重复就直接除2,然后总的C(n, 3)减去即可,问题在怎么处理一个数字互质和不互质的,其实只要处理出不互质的即可,这

2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)HDU6225.Little Boxes-大数加法

整理代码... Little Boxes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2304    Accepted Submission(s): 818 Problem Description Little boxes on the hillside.Little boxes made of ticky-tacky.Littl

HDU - 4810 Wall Painting(组合数学)

Description Ms.Fang loves painting very much. She paints GFW(Great Funny Wall) every day. Every day before painting, she produces a wonderful color of pigments by mixing water and some bags of pigments. On the K-th day, she will select K specific bag