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同学会告诉你所有相关的细节.炉石传说是这样的一 ...
随机推荐
- Leetcode算法比赛---- Lexicographical Numbers
问题描述 Given an integer n, return 1 - n in lexicographical order. For example, given 13, return: [1,10 ...
- (PowerShell) 重命名文件
Get-ChildItem -Path C:\temp\test -Filter *.txt | Rename-Item -NewName {$_.Basename.Replace("Old ...
- CI框架去除index.php
打开apache的配置文件,conf/httpd.conf : LoadModule rewrite_module modules/mod_rewrite.so 把该行前的#去掉. 搜索 AllowO ...
- firewall 如何开放端口
转自官方网页:http://www.firewalld.org/documentation/howto/open-a-port-or-service.html How to open port 80/ ...
- eclipse直接使用tomcat安装程序的webapp目录调试
感谢此文:http://blog.csdn.net/soszou/article/details/23673133 本文很多技术及操作来源于此文 需求:因为微信方面的开发调试.为了测试方便,直接构建了 ...
- CopyrightHelper—开源VS插件辅助插入版权注释
前言 有很多时候,我们在写代码的时候需要在代码文件头加上描述和版权信息等,如果使用代码项目模板又得为每种文件定模板,而已不方便,如果从某个地方复制过来,又嫌麻烦... 为了能解决这种懒人的需求,我开始 ...
- December 31st 2016 Week 53rd Saturday
In every triumph, there's a lot of try. 每个胜利背后都有许多尝试. This Year is over, and let it be. It would be ...
- 【Alpha】总结 - (待更)
Alpha总结 1. 个人总结 PM & BackEnd - 胡武成 BackEnd - 吴松青 Web - 孙浩楷 Web - 练斐弘 App - 胡冰 App - 黄世辉 UI - 张旗 ...
- 021.12 IO流 ObjectStream对象序列化
内容:通过文件存储对象我们遇到的问题,需要保存对象到硬盘中,如何解决这个就是用来解决的 用法:1.创建流对象FileOutputstream2.创建ObjectOutputStream对象与FileO ...
- 由JDK源码学习ArrayList
ArrayList是实现了List接口的动态数组.与java中的数组相比,它的容量能动态增长.ArrayList的三大特点: ① 底层采用数组结构 ② 有序 ③ 非同步 下面我们从ArrayList的 ...