LuoGu P4996 咕咕咕
题目描述
小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙。
比如,时间回溯到了 2018 年 11 月 3 日。小 F 望着自己的任务清单:
看 iG 夺冠;
补月赛题的锅。
小 F 虽然经常咕咕咕,但他完成任务也是很厉害的,他一次性可以完成剩余任务的任一非空子集。比如,他现在可以选择以下几种中的一种:
看 iG 夺冠;
补月赛题的锅;
一边看 iG 夺冠的直播,一边补锅。
当然,比赛实在是太精彩了,所以小 F 就去看比赛了。
不过,当金雨从天而降、IG 举起奖杯之时,小 F 突然心生愧疚——锅还没补呢!于是,小 F 的内心产生了一点歉意。
这时小 F 注意到,自己总是在某些情况下会产生歉意。每当他要检查自己的任务表来决定下一项任务的时候,如果当前他干了某些事情,但是没干另一些事情,那么他就会产生一定量的歉意——比如,无论他今天看没看比赛,只要没有补完月赛的锅,他都会在选择任务的时候产生 11 点歉意。小 F 完成所有任务后,他这一天的歉意值等于他每次选择任务时的歉意之和。
过高的歉意值让小 F 感到不安。现在,小 F 告诉你他还有 \(n\) 项任务,并告诉你在 \(m\) 种情况中的一种 \(\mathrm{state}_i\) 的情况下,小 F 会产生 \(a_i\) 点歉意。请你帮忙计算一下,小 F 在那一天所有可能的完成所有任务方式的歉意值之和是多少.
由于答案可能很大,你只需要输出答案对 \(998244353\) 取模即可。
输入输出格式
输入格式:
输入一行两个整数 \(n, m\) 表示有 \(n\) 项任务,在 \(m\) 种情况中下小 F 会产生歉意值。
输入接下来 \(m\) 行,每行有一个长度为 \(n\) 的 \(0-1\) 串 $ \mathrm{state}_i $ 和一个歉意值 \(a_i ,\mathrm{state}_{i, j}\) 为 \(0/1\) 表示第 \(j\) 项任务此时没做 / 已经做了。
详情请参考样例和样例解释。
输出格式:
输出一行一个整数,表示小 F 在那一天所有可能的完成任务方式的歉意值之和对 \(998244353\) 取模的结果。
输入输出样例
输入样例#1:
2 2
00 1
10 1
输出样例#1:
4
输入样例#2:
3 4
000 16
001 9
110 4
111 1
输出样例#2:
260
说明
样例 1 解释:
$ 0−1 $ 串中第一个数字表示小 F 看没看比赛,第二个数字表示小 F 补没补锅。
我们用 $ \varnothing $ 表示小 F 什么都没干,$ A $ 表示小 F 看了比赛,$ B $ 表示小 F 补了锅,那么所有会产生愧疚的方式如下:
\(\varnothing: 1\)
\(\{A\}:1\)
那么所有可能的选择如下:
\(\varnothing\rightarrow\{A\}\rightarrow\{A,B\}:2\)
\(\varnothing\rightarrow\{B\}\rightarrow\{A,B\}:1\)
\(\varnothing\rightarrow\{A,B\}:1\)
所以答案是 \(2 + 1 + 1 = 4\)
数据范围
保证出现的 \(\mathrm{state}_i\)互不相同。
对于所有数据,有 $ 1 \leq n \leq 20, 1 \leq m \leq \min(2 ^ n, 10 ^ 5), 1 \leq a_i \leq 10 ^ 5$
本来想我这种蒟蒻是死活做不出来这种题的,结果听了讲评,最后是个组合数学,然后就差不多了
其实就是让你求从 $ n $ 个 $ 0 $ 到 $ n $ 个 $ 1 $ 的的方案嘛
然后它规定了某些01串有一定的权值,让你算,在上一个问题的基础上这些01串 出现次数*权值 的和
然后就考虑组合数学,因为一个串中如果01个数相同,那么这些串的出现次数也一样对吧
出现 $ i $ 个 $ 1 $ 就是 $ C_{n}^{i} $
设 $ f_i $ 表示出现 $ i $ 个 $ 1 $ 的方案数,有一点需要注意,出现了 $ i $ 个 $ 1 $ 的方案数就是出现了 $ n - i $ 个 $ 0 $ 的方案数
这个东西可以这么来递推:
$ f_i = \sum_{j = 1}^{i} f_{ i - j } \times C_{i}^{j}$
这个就是组合数学的基本意义....解释一下
你有 $ i $ 个 $ 1 $ 了,那么对于每一个 $ 1 $ 的出现次数小于 $ i $ 的状态都对你有贡献
这是第二层循环的由来,那么贡献是多少呢?就是在 $ 1 $ 较少的状态的 $ 0 $ 位填 $ 1 $ 使得它变成另一个状态的方案数
所以贡献是 $ f_{ i - j } \times C_{i}^{j} $
如果一个状态中出现了 $ k $ 个 $ 1 $ , 那么它的答案贡献就是 $ f_i $ 和 $ f_{ n - i } $ 为什么?
一个状态的方案可以用全0串到它的方案和它到全1串的方案作乘法得到(乘法原理)
然后对于每一个有权值的状态统计贡献累加和就行了
代码如下:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#define LL long long
const int N = 65 ;
const LL mod = 998244353 ;
char s[50];
int n , m , cnt;
LL x , f[N] , Flag ;
LL ans , C[N][N];
inline void init(){
C[0][0] = 1 ;
for (int i = 1 ; i <= n + 1 ; ++ i)
for (int j = 0 ; j <= i ; ++ j)
C[i][j] = ( C[i - 1][j - 1] + C[i - 1][j] ) % mod ;
f[0] = 1 ;
for (int i = 1 ; i <= n ; ++ i)
for (int j = 1 ; j <= i ; ++ j)
f[i] = ( f[i] + f[i - j] * C[i][j] ) % mod ;
return ;
}
int main(){
scanf ("%d%d" , & n , & m ) ; init() ;
while (m --){
cnt = 0 ;
scanf ("%s%lld" , s + 1 , & x );
for (int i = 1 ; i <= n ; ++ i) if( s[i] == '1' ) ++ cnt ;
ans = ( ans + ( ( x * f[cnt] ) % mod * f[n - cnt] ) % mod ) % mod ;
}
printf("%lld\n" , ans % mod );
return 0;
}
LuoGu P4996 咕咕咕的更多相关文章
- (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)
作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...
- u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)
新版本下载: 下面的链接提供了较新版本的源码 ver4.0源码下载:u-boot for tiny210 ver4.0 ver3.1源码下载: u-boot for tiny210 ver3.1 v ...
- linux多线程驱动中调用udelay()对整个系统造成的影响(by liukun321咕唧咕唧)
以前没考虑过这个问题,而且之前可能运气比较好,虽然用了udelay但也没出什么奇怪的问题,今天在 CSDN上看到了一篇关于此问题帖子,觉得很受用,再此做简要的记录和分析: 驱动开的是内核线程 跟普通进 ...
- 基于S5pv210流媒体server的实现之网络摄像头(by liukun321 咕唧咕唧)
这里仅介绍流媒体server端的实现思路.及编码注意问题,不会贴代码的详细实现. 直接入正题先介绍一下系统硬件框架: server端连接PC机用VLC播放例如以下图: server端应用程序能够分为图 ...
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
这是几个月以前的东西了,在彻底遗忘之前拿出来好好写写.做个笔记,也算是造福后来人了.在做这个项目之前,没有做过电容屏的驱动,印象中的电容触摸屏是不需要校正的.IC支持多大的屏就要配多大的屏.但是拿到需 ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 【组合数学】【P4996】 咕咕咕
Description 小 F 注意到,自己总是在某些情况下会产生歉意.每当他要检查自己的任务表来决定下一项任务的时候,如果当前他干了某些事情,但是没干另一些事情,那么他就会产生一定量的歉意--比如, ...
- $vjudge-dp$专题题解
因为感觉题解写不了多少,,,就懒得一道道题目慢慢写了,汇总了算了$QAQ$ 昂然后因为我估计以后还会有些什么$dp$专题啊$balabala$的,,,然后谢总肯定又会建一堆小组啥的,,,所以还是放个链 ...
- [zt]给你的Mp4大换血,精选Touch里3年收集的900多首歌,"经典不忍去的""最新近流行的",与你共享~~
如果你是音乐爱好者: 这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你的!!!!! (一)这些歌很温暖,没有金属味,适合有阳光的午后,很悠闲... [Anaesthesia]Maximi ...
随机推荐
- ES6类封装判断用户上下左右滑动事件!
/** * param 原生js方式实现判断用户的滑动方向 * 返回1 向上 * 返回2 向下 * 返回3 向左 * 返回4 向右 */ class juedgeSlide { constructor ...
- openstack搭建之-glance配置(9)
一. base节点配置 #设置数据库,创建glance数据库,并设置权限 mysql -u root -proot CREATE DATABASE glance; GRANT ALL PRIVILEG ...
- vue.js实战——购物车练习(包含全选功能)
vue.js实战第5章 54页的练习1 直接放代码好了,全选的部分搞了好久,代码好像有点啰嗦,好在实现功能了(*^▽^*) HTML: <!DOCTYPE html> <html l ...
- Java基础:Java变量、数据类型、运算符(2)
1. 标识符和关键字 1.1 标识符 标识符是用来标识类名.对象名.变量名.方法名.类型名.数组名.文件名的有效序列. Java规定,标识符由字母.数字.下划线“_”.美元符号“$”组成,并且首字母不 ...
- EntityFramework优化:第一次启动优化
1. 预先生成视图 通过代码的方式来预先生成视图,要求EntityFramework是6.0及以上版本. 控制台程序: using System.Data.Entity.Infrastructure; ...
- Python——Flask框架——程序的结构
一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...
- Sequence II HDU - 5919(主席树)
Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...
- 我眼中的支持向量机(SVM)
看吴恩达支持向量机的学习视频,看了好几遍,才有一点的理解,梳理一下相关知识. (1)优化目标: 支持向量机也是属于监督学习算法,先从优化目标开始. 优化目标是从Logistics regressi ...
- OS + CentOS / http_proxy / https_proxy / dalishangwang / repo
s OS + Linux RedHat / redhat7 / redhat 7 / redhat 6 / redhat 5 https://lindows.iteye.com/blog/456637 ...
- linux,pthread(转)
互斥量.条件变量与pthread_cond_wait()函数的使用,详解(二) 1.Linux“线程” 进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线程模型.Linu ...