2014-05-02 15:53:50

题目连接

2013年南京现场赛的题目,现场的时候,排在我们前面的队伍基本都过了这题,我们后面的队伍也有不少过了这题,唯独我们没有。。

后来是Qingyu Shao想到了思路,然后就让他来敲,我记得当时是C(n,k)打表的时候出现了问题,好弱。。于是乎就开始吃东西了。

回来之后就一直想A掉这题,但是一直没有思路。半年之后......今天问了下TYS,然后他给我讲了大体思路,才有点感觉。

大体思路:记录每一位上1的个数(这里只需要32位),对于第i天,必须要选出奇数个1才能使该位异或结果位1,否则为0。我们来看样例,

4

1 2 10 1

这4个数的二进制表示分别为:

0001

0010

1010

0001

比如第2天的时候, 从4个中选出2个来做异或,第4位上只有1个1,所以有3中选法可以使得这一位异或之后结果为1,(也就是C(3,1) * C(1,1)),第3位的没有1,所以异或结果一定为0,第2位上又2个1,所以有4种选法,同理第一位上也是4种。

所以其结果就是 (1<<3)*C(3,1) + 0 * C(4,2) + (1<<1)*C(2,1)*C(2,1) + (1<<0)*C(2,1)*C(2,1)

附上代码:

 /*************************************************************************
> File Name: 4810.cpp
> Author: Stomach_ache
> Mail: sudaweitong@gmail.com
> Created Time: 2014年05月02日 星期五 15时20分16秒
> Propose:
************************************************************************/ #include <cmath>
#include <string>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
#define MOD (1000000+3)
#define MAX_N (1000+3) int n;
int a[MAX_N], ans[MAX_N], c[MAX_N][MAX_N]; void
init() {
c[][] = c[][] = c[][] = ;
for (int i = ; i < MAX_N; i++) {
c[i][] = ;
for (int j = ; j <= i; j++) {
c[i][j] = (c[i-][j] + c[i-][j-]) % MOD;
}
} return ;
} void
count(int x) {
for (int i = ; i < ; i++) {
if (x & (<<i)) {
a[i]++;
}
} return ;
} int
main(void) {
init();
while (~scanf("%d",&n)) {
memset(a, , sizeof(a));
for (int i = ; i < n; i++) {
int tmp;
scanf("%d", &tmp);
count(tmp);
} memset(ans, , sizeof(ans));
for (int i = ; i <= n; i++) {
for (int j = ; j < ; j++) {
for (int k = ; k <= a[j] && k <= i; k += ) {
ans[i] = (ans[i] + (LL)c[n-a[j]][i-k]*c[a[j]][k]%MOD*(( << j)%MOD) % MOD) % MOD;
}
}
} for (int i = ; i <= n; i++) {
printf("%d%c", ans[i], i == n ? '\n' : ' ');
}
} return ;
}

最新文章

  1. QML 从无到有 3 (自动更新)
  2. Linux安全基础:awk命令的使用
  3. android中的回调请求的个人理解
  4. Redis 入门练习
  5. MySQL 复制介绍及搭建
  6. 通过setDB2Client*来方便的使用TRACE调优jdbc程序
  7. IOS 网络浅析-(七 JSON解析之三方JSONKit)
  8. [转]ubuntu下安装程序的三种方法
  9. php ++a和a++
  10. Winform模拟post请求和get请求登录网站
  11. 常用的JQuery UI框架
  12. Python之路第八天,进阶-设计模式
  13. 设计模式的征途—3.工厂方法(Factory Method)模式
  14. Django 基本设置
  15. (网页)input框怎么覆盖掉数字英文的
  16. 设计模式C++学习笔记之十五(Composite组合模式)
  17. flask内容学习之蓝图以及单元测试
  18. Android 开发 框架系列 OkHttp使用详解
  19. Microsoft JET Database Engine 错误 &#39;80004005&#39; 未指定错误
  20. 简述 OAuth 2.0 的运作流程(转)

热门文章

  1. 原生JS实现简易计算器
  2. PAT甲级——A1051 Pop Sequence
  3. spotbus gradle-qulity-plugiin 多项目bug检查
  4. CesiumLab V1.2 新功能 倾斜数据处理
  5. python基础--模块的查找顺序以及相对导入和绝对导入
  6. 【CODEVS】2833 奇怪的梦境
  7. 优化 Tengine HTTPS 握手时间
  8. 当移动数据分析需求遇到Quick BI
  9. Python3 中 configparser 使用注意事项
  10. Python操作SQLite数据库的方法详解