www.cnblogs.com/shaokele/


bzoj5369: [PKUSC2018]最大前缀和

  Time Limit: 20 Sec
  Memory Limit: 512 MB
  
 
  
  

题目地址:  bzoj5369: [PKUSC2018]最大前缀和

题目大意:   全排列,求每次最大前缀之和

题解:

  考试时没A 哭唧唧
  
  其实就是一个状态压缩
  
  具体看代码
  


AC代码

#include <cstdio>
using namespace std;
const int N=21,mo=998244353;
int n;
int a[N],f[1<<N],g[1<<N];
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);//f[S] 表示取S的状态使前缀>0的方案数 //g[S] 表示取S的状态使前缀<=0的方案数for(int i=1;i<(1<<n);i++){int now=0,s=0;for(int j=1;j<=n;j++)if(i&(1<<(j-1)))now+=a[j],s++;if(s==1)f[i]=1;elsefor(int j=1;j<=n;j++)if((i&(1<<(j-1))) && now-a[j]>0)f[i]=(f[i]+f[i^(1<<(j-1))])%mo;    //当前i的情况可以从f[i^(1<<(j-1))]推过来 }g[0]=1;for(int i=1;i<(1<<n);i++){int now=0,s=0;for(int j=1;j<=n;j++)if(i&(1<<(j-1)))now+=a[j],s++;if(now>0)g[i]=0;else{if(s==1){g[i]=1;continue; } for(int j=1;j<=n;j++)if(i&(1<<(j-1)))g[i]=(g[i]+g[i^(1<<(j-1))])%mo;   //同 f }}int ans=0;for(int i=1;i<(1<<n);i++){ int now=0,del=(1ll*f[i]*g[(1<<n)-1-i])%mo;   //now:值  del:方案数 for(int j=1;j<=n;j++)if(i&(1<<(j-1)))now=(now+a[j]+mo)%mo;now=(1ll*now*del)%mo;ans=(ans+now)%mo;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/shaokele/p/9157644.html

bzoj5369: [PKUSC2018]最大前缀和 (状压dp)相关推荐

  1. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  2. 【BZOJ4416】阶乘字符串(SHOI2013)-状压DP

    测试地址:阶乘字符串 做法:本题需要用到状压DP. 首先,根据证明(直觉),满足条件的字符串的最小长度仅仅比n2n2n^2小一点点,因此当n>21n>21n>21时,直接输出NO即可 ...

  3. 【算法竞赛学习笔记】状压DP

    title : 状压DP date : 2022-3-5 tags : ACM,图论,动态规划 author : Linno 状压DP 状态压缩,是利用二进制数的性质对问题进行优化的一种算法,经常与搜 ...

  4. 状压dp个人刷题记录

    目录 一.普通型 蒙德里安的梦想 题意: 思路: code: #2153. 「SCOI2005」互不侵犯 题意: 思路: code: P1879 [USACO06NOV]Corn Fields G 题 ...

  5. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  6. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  7. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  8. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  9. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  10. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

最新文章

  1. Spark的三种伪分布式方式
  2. Python3--文件读取、写入、追加及seek()方法的使用
  3. 2022.4.9 mac os M1 芯片 12.3.1 Monterey 安装cocoapods
  4. 整理JS+FLASH幻灯片播放图片脚本代码
  5. go出现missing go.sum entry for module providing package 错误
  6. 社区智慧+机器智能=奇虎经验的知识机器人
  7. 配置VSS2005的Internet访问(转)
  8. office visio 2007 画流程图
  9. 笔记《Hbase 权威指南》
  10. 福昕阅读器中删除单个,多个注释,隐藏所有注释。
  11. windows聚焦失效的解决办法
  12. udp buffer 和reassemble buffer
  13. javascript禁用Backspace退格键(结合自己实际应用中遇到的textarea中退格造成页面假死问题做了修改)
  14. java取万位的值,excel表格数值如何取万位整数,来研究下吧
  15. DAVIS2016+Matlab+Win10使用指南
  16. 解决WIN10打开XBOX闪退问题(2022)
  17. 6种最常用恒流源电路的分析与比较
  18. python的idel下添加清屏功能
  19. bzoj 2844 albus就是要第一个出场
  20. 新人程序员必须知道的,不然等你回过神来的时候,一切已晚矣。

热门文章

  1. BMVC 2021 | 近距离观察少镜头视频分类
  2. java tif 转jpg_java 实现 tif图片(多页的)转换成jpg
  3. endnote快捷标注参考文献
  4. 判断二极管导通例题_如何判断开关电源变压器的好坏
  5. 虚拟机安装黑苹果mac 10.12系统安装教程
  6. canvas+vue实现60帧FPS的抢金币动画(类天猫红包雨)
  7. 游戏思考11:游戏服务器类型简单分类(有服务器的会讲的详细一点)
  8. 实验笔记:使用pycharm和github提交代码
  9. MySQL数据库实操教程(24)——用户管理
  10. 如何在微信窗口使用计算机,电脑微信窗口太大怎么办