2019.01.19-2018年6月NEYC集训counting
题目描述:
羽月最近发现,她发动能力的过程是这样的:
构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些边依次加入图中,每次加入之后计算当前图的强连通分量个数并记下来,最后得到一个长度为E 的序列,这个序列就是能力的效果。
注意到,可能存在边的序列不同而能力效果相同的情况,所以羽月想请你帮她计算能发动的不同能力个数,答案对 998244353 取模。你需要对于1<=E<=V*(V-1)的所有 E 计算答案。
算法标签:前缀和优化dp
思路:
考虑对于一个可行的序列,令组成方案表示成一个大的包含多个点的强连通分量,其余点都为单独的连通分量能表示所以情况。
我们考虑一次把x个点缩进大的连通分量,需要x+1条边。
对于已有j个点在大连通分量内时,边至多只有j*j+(n-j)*(n-j+1)/2+j*(n-j)条。
倘若令k为缩过几次点,则边至少有j+k-1条。
考虑dp
令f[i][j][k]表示加到第i条边,有j个点在大连通分量内,锁了k次点。
式子是:
f[i][j][k]=f[i-1][j][k]+∑f[i-1][j-p][k]
于是考虑前缀和优化,记sum[j-1][k]为∑f[i-1][j-p][k]
以下代码:
#include<bits/stdc++.h> #define il inline #define _(d) while(d(isdigit(ch=getchar()))) using namespace std; const int N=105,p=998244353; int n,f[2][N][N],op,sum[N][N]; il int read(){int x,f=1;char ch;_(!)ch=='-'?f=-1:f;x=ch^48;_()x=(x<<1)+(x<<3)+(ch^48);return f*x; } il int mu(int x,int y){if(x+y>=p)return x+y-p;return x+y; } int main() {n=read();f[0][1][0]=1;for(int i=0;i<=n;i++)sum[1][0]=1;for(int i=1;i<=n*(n-1);i++){op^=1;for(int j=1;j<=n;j++)for(int k=0;k<=n;k++)f[op][j][k]=0;for(int j=1;j<=n;j++){if(j*(j-1)+(n-j)*(n-j-1)/2+j*(n-j)<i)continue;for(int k=0;k<=n;k++){if(k+j-1>i)break;if(k)f[op][j][k]=mu(f[op^1][j][k],sum[j-1][k-1]);else f[op][j][k]=f[op^1][j][k];}}int ans=0;for(int j=1;j<=n;j++){for(int k=0;k<=n;k++){sum[j][k]=mu(sum[j-1][k],f[op][j][k]);ans=mu(ans,f[op][j][k]);}}printf("%d ",ans);}puts("");return 0; }
View Code
转载于:https://www.cnblogs.com/Jessie-/p/10291538.html
2019.01.19-2018年6月NEYC集训counting相关推荐
- 2019.01.19-2018年6月NEYC集训sequence
题目描述: 茉优最近研究发现,一个人的想愿能力可以认为是字符串S的一个子串S[l,r],而连接值可以认为是这个子串的本质不同子序列个数.现在她想验证她的结论是否正确,于是她给了你Q个询问,希望你帮她来 ...
- 数据库系统期末总结(三)(往届试卷2018年12月A卷、B卷、E卷,2019年5月A卷,选择题终篇)
接着上次的总结:https://blog.csdn.net/qq_41938259/article/details/103532401 这是我对<数据库系统基础>第三次期末总结.这次是剩下 ...
- IntelliJ IDEA 2018.3.3配置 Tomcat 9,控制台出现中文乱码 “淇℃伅”(2019/01/25)
转载:IntelliJ IDEA 2018.3.3配置 Tomcat 9,控制台出现中文乱码 "淇℃伅"(2019/01/25) - What'_up - 博客园(win10系统) ...
- 2018年11月26日到2019年4月26日工作汇总
2018年11月26日到2019年4月26日工作汇总 2018年11月26日-2017年11月30日 上午:各种协议的填写,已经有关表单的培训 下午:对公司目前做的项目的培训,以及明确我当前的工作 部 ...
- 2018年08月19日发烧诸事记
2018年08月19日发烧诸事记 关于发烧给敲响的警钟 八月十六日,中午突然觉的有发烧症状,会宿舍喝了些水便回去了,下午上课时情况愈加严重,浑身发冷,无法正常训练,三点多时便去永康街上的社区医疗服务中 ...
- a360desktop有用吗_A360 Desktop 停用 - 2018 年 6 月 19 日
发生了哪些变化及其原因? Autodesk 一直致力于面向设计人员提供出色的软件.为了确保尽可能提供优质服务,我们会定期检查我们的产品组合,确定应将精力和资源重点投入在哪些方面,以便更好地迎合客户需求 ...
- 5.5 C语言练习(数日子:要求输出三个整数,分别代表年月日。例如 2018 7 19 当2018年1月1日为第一天,那么7月19日是第多少天?)
[练习] 题目要求:数日子.要求输出三个整数,分别代表年月日.例如 2018 7 19 当2018年1月1日为第一天,那么7月19日是第多少天? #include <stdio.h>int ...
- NEO社区开发报告(2018年12月至2019年1月)
这是NEO News Today 发布的第二份NEO社区开发报告.本报告涵盖了在2018年12月和2019年1月期间,NEO核心协议和社区开发者创建的独立项目的主要贡献. 社区通过了一项新倡议,各NE ...
- 2018年7月19日日报
姓名:任光烨 日期:2018年7月19日 今日学习任务:学习Linux操作指令. 今日完成情况:都已完成,100~200代码. 今日开发中出现的问题汇总:无. 今日未解决问题:无. 今日开发收获:学习 ...
最新文章
- 不支持mac os x软件虚拟化。要运行mac os x,您需要主机VMware workstation支持硬
- python三层装饰器-python中自带的三个装饰器的实现
- 2021各国人均GDP(IMF2021年10月版)
- jvm jinfo 参数_jinfo:JVM运行时配置的命令行浏览
- MFC里NewWindow2Explorer1的一些常用处理代码
- 【我的物联网成长记7】物联网主流通信协议解读【华为云分享】
- MSE(Media Source Extensions)介绍
- 30 Essential Pieces Of Free (and Open) Software for Windows-windows系统30个开源软件
- 英语思维导图大全 数词(八)
- 国务院:同意浙江省实施施工图分类审查,低风险项目可不图审!
- c#使用office的墨迹书写工具
- 云从科技上市在即,或成为小一号的商汤科技?
- React Native 动画(Animated)笔记
- colojure语言基础入门
- 小学计算机上课课前导入视频教程,小学信息技术教学中微视频的导入实践分析...
- 商城电商day 06 三、商品详情业务需求分析
- 莱布尼兹普遍演算的定义注释--逻辑与算法之十八
- Oracle的trunc函数与MySQL(Maria)的truncate函数
- 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)
- maven打包时本地的jar包打不进去