luogu11月月赛T3咕咕咕(组合数学)
题目描述
小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙。
比如,时间回溯到了 2018 年 11 月 3 日。小 F 望着自己的任务清单:
- 看 iG 夺冠;
- 补月赛题的锅。
小 F 虽然经常咕咕咕,但他完成任务也是很厉害的,他一次性可以完成剩余任务的任一非空子集。比如,他现在可以选择以下几种中的一种:
- 看 iG 夺冠;
- 补月赛题的锅;
- 一边看 iG 夺冠的直播,一边补锅。
当然,比赛实在是太精彩了,所以小 F 就去看比赛了。
不过,当金雨从天而降、IG 举起奖杯之时,小 F 突然心生愧疚——锅还没补呢!于是,小 F 的内心产生了一点歉意。
这时小 F 注意到,自己总是在某些情况下会产生歉意。每当他要检查自己的任务表来决定下一项任务的时候,如果当前他干了某些事情,但是没干另一些事情,那么他就会产生一定量的歉意——比如,无论他今天看没看比赛,只要没有补完月赛的锅,他都会在选择任务的时候产生 11 点歉意。小 F 完成所有任务后,他这一天的歉意值等于他每次选择任务时的歉意之和。
过高的歉意值让小 F 感到不安。现在,小 F 告诉你他还有 n 项任务,并告诉你在 m 种情况中的一种的情况下,小 F 会产生 ai 点歉意。请你帮忙计算一下,小 F 在那一天所有可能的完成所有任务方式的歉意值之和是多少。
由于答案可能很大,你只需要输出答案对 998244353 取模即可。
输入输出格式
输入格式:
输入一行两个整数 n, m,表示有 n 项任务,在 m 种情况中下小 F 会产生歉意值。
输入接下来 m 行,每行有一个长度为 n 的 0-1 串 和一个歉意值 ai,ai 为 0/1 表示第 j 项任务此时没做 / 已经做了。
详情请参考样例和样例解释。
输出格式:
输出一行一个整数,表示小 F 在那一天所有可能的完成任务方式的歉意值之和对 998244353 取模的结果。
思路:
一开始写的时候,把时间复杂度的(2^20*2^20)算成了(2^21)成功T飞
没T的那几个点也忘了取模……
其实这道题只用组合数就好
一个状态的贡献在于经过他有几种方案到达最终态
所以我们可以发现,这是一个组合数问题
比如说我们一共有5个任务,当前完成了3个任务
那么转移到完成3个任务的情况有
从00000转移到任选3个完成
从有1个转移到有3个
从有2个转移到有3个
我们发现,由于我并不用确定到底选的是哪个
只用考虑选了几个
所以选i个的情况总数就是

(原谅我直接搬了luogu的图)
然后对于每种有贡献的情况分别考虑即可
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<bitset>
#include<queue>
#include<cstdlib>
#include<algorithm>
#define p 998244353
#define rii register int i
#define rij register int j
#define int long long
using namespace std;
int zhs[][],n,m,opt[],ans,c[][];
void ycl()
{
c[][]=;
for(rii=;i<=;i++)
{
c[i][]=;
for(rij=;j<=;j++)
{
c[i][j]=c[i-][j-]+c[i-][j];
c[i][j]%=p;
}
}
opt[]=;
for(rii=;i<=;i++)
{
for(rij=;j<=i;j++)
{
opt[i]+=c[i][j]*opt[i-j];
opt[i]%=p;
}
}
}
signed main()
{
scanf("%lld%lld",&n,&m);
ycl();
for(rii=;i<=m;i++)
{
char ch=getchar();
int zt=,val;
while(!isdigit(ch))
{
ch=getchar();
}
while(isdigit(ch))
{
zt+=ch-'';
ch=getchar();
}
scanf("%lld",&val);
ans+=(((val*opt[zt])%p)*opt[n-zt])%p;
ans%=p;
}
cout<<ans;
}
luogu11月月赛T3咕咕咕(组合数学)的更多相关文章
- 洛谷2019 3月月赛 T3
题干 唯一AC T3 的大巨佬%%% 这题就是个大模拟吧. 题解
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- (转)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 ...
- 【LGR-065】洛谷11月月赛 III Div.2
临近$CSP$...... 下午打了一发月赛,感觉很爽. 非常菜的我只做了前两题......然而听说前两题人均过...... 写法不优秀被卡到$#1067$...... T1:基础字符串练习题: 前缀 ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
- 洛谷9月月赛round2
洛谷9月月赛2 t1 题意:懒得说了 分析:模拟 代码: program flag; var a:..,..]of char; n,i,m,j,x,y,ans,k:longint; begin ass ...
- [补档][Lydsy2017年4月月赛]抵制克苏恩
[Lydsy2017年4月月赛]抵制克苏恩 题目 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平. 如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节.炉石传说是这样的一 ...
随机推荐
- python 描述符 上下文管理协议 类装饰器 property metaclass
1.描述符 #!/usr/bin/python env # coding=utf-8 # 数据描述符__get__ __set__ __delete__ ''' 描述符总结 描述符是可以实现大部分py ...
- HTML5-入门2。
文本样式 <b>加粗</b> <i>倾斜</i> <u>下划线</u> <s>删除线</s> < ...
- Software Testing Techniques Homework 1
I have met some errors in recent years, one of them which impress me most. It happend when I try to ...
- c# 获取程序目录
取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirect ...
- [Swift] 使用Playground
使用Playground 1. 新建Playground 2. 写最简单的代码
- Java学习---下载文件并且对文件编码
import java.io.IOException; import java.net.URLEncoder; import sun.misc.BASE64Encoder; public class ...
- C#网络编程(一)基础篇
简介: C#网络编程API包含在System.Net和System.Net.Sockets命名空间下,大部分网络操作都可以在其中找到相应的类来实现:包括Socket的创建和连接,网络流收发方法的封装, ...
- Azure 负载均衡器的多个 VIP
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. Azure 负载均衡器 ...
- linux man指令问题
linux man指令问题 2010-1-13 13:33 提问者: 钟离伊轩 man命令执行时,可加入数值,来限制帮助级别. 这句话对不对啊???? 我记得man page是分章节的..好像可以加数 ...
- HTTP协议图--HTTP 协议基础
1.通过请求和响应的交换达成通信 应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色.仅从一条通信线路来说,服务器端和客服端的角色是确定的.HTTP 协议规定,请求从客户端发出, ...