ZR9.8普转提
ZR9.8普转提
A,B
打过的CF原题,不管了
C
确认过眼神,是我不会写的DP,
发现这个题目要求的过程类似与一个所有括号都不一样的括号匹配的过程
但是限制条件非常多,有点无从下手的感觉
我们设\(f_{i,j}\)表示当\(i\)出栈前,\(i\)在栈底,\(i\)和他上面的所有物品重量不超过\(j\)时的最大价值
但是这样很难统计贡献,因为最终状态的栈是空的
我们考虑在栈的底部放一个永远不会被弹出的东西
他的参数是\(in:0,out:2\times n+1,w:0.s:w,v:0\)
对于所有物品按照\(out\)从小到大排序,\(out\)相同的按照\(in\)从大到小排序
这样就能满足括号序列的性质,使得尽可能多的出现这种情况,便于统计答案

我们枚举是那个物品在\(i\)的上面
这样我们就能直接转移
但只这样只是枚举了\([((((()))))]\)这样的情况,忽略了\([()()()()()]\)这样的情况
我们考虑用另外一个DP去考虑这种情况的贡献
我们设\(g_{i,j}\)表示前\(i\)时刻,重量为\(j\)的方案数
这样我们就可以在求得\(g_{a_i.out,u}\)之后,直接用这个东西去更新\(f_{i,u}\)
另外我们在DP的过程中,绝对不允许这种情况发生

我们可以看做分段DP,这种情况是不会放到一起被转移的
所以我们DP数组\(f\)和\(g\)都是定义在要么被\(i\)包含,要么完全不交的前提之下的
D
首先考虑暴力SB容斥
我们设\(f_i\)表示\(i\)这个集合里的物品不能选择的方案数
设\(U\)为全集
那么则有
\[
ans = \sum_{T\subseteq U} (-1)^{|T|}f_{\complement_{U}^T}
\]
我们考虑如何计算\(f_i\)
设\(g_i\)表示包含的物品的对应二进制恰好为\(i\)的方案数,那么则有
\[
f_S = \sum_{T\subseteq S}g_T
\]
这样我们就得到了一个\(3^m\)的做法
之后发现,求\(f_S\)的过程可以用FMT进行优化
然后时间复杂度为\(m \times 2 ^ m\)
ZR9.8普转提的更多相关文章
- ZROI #364. 【2018普转提day18专题】嘤嘤嘤
ZROI #364. [2018普转提day18专题]嘤嘤嘤 直接贴代码 具体见注释 #include<stdio.h> #include<cstring> #include& ...
- ZROI #365. 【2018普转提day18专题】嘤嘤嘤嘤
ZROI #365. [2018普转提day18专题]嘤嘤嘤嘤 直接放代码 具体做法见注释 #include<stdio.h> #include<cstring> #inclu ...
- ZR普转提2
ZR普转提2 A 谢谢刁神教我A题 刚开始读错题了,以为是一个不可做的数位DP,然后就暴力滚粗 直到问了问刁神,发现自己题意是错的 然后成了比较简单的题目 直接暴力枚举每一位填什么,剩下的位数的数字都 ...
- ZROI2018普转提day6t1
传送门 分析 记录区间最大值,线段树上二分找比这个点大的最靠前位置即可 代码 #include<iostream> #include<cstdio> #include<c ...
- ZROI2018普转提day6t3
传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线 ...
- ZROI2018普转提day7t1
传送门 分析 一道有意思的小题... 我们发现如果$(1,1)$为白色,则将其变为白色需要偶数次操作,而如果为黑色则需要奇数次操作 我们知道要让A赢需要奇数次操作,所以我们只需要判断$(1,1)$的颜 ...
- ZROI2018普转提day7t2
传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子 ...
- ZROI2018普转提day1t4
传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上.我们用这种方 ...
- ZROI2018普转提day1t1
传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个 ...
随机推荐
- PLAY2.6-SCALA(二) Actions, Controllers ,Results,routes
一.Action(play.api.mvc.Action) 大多数的应用的请求都是由action进行处理,并生成一个结果给客户端,Action有多种创建方式: 1. Action {Ok(" ...
- 人生苦短,LET'S GO! GO语言目录
1.Golang开山篇,GO就是NB! 1-1.go开发工具安装 2.go-人生第一个go程序和基本语法 3.go-流程控制 4.go-函数 5.go-流程控制 6.go-复合类型 7.go-面向对象 ...
- Python学习之路2☞数据类型与变量
变量 变量作用:保存状态:说白了,程序运行的状态就是状态的变化,变量是用来保存状态的,变量值的不断变化就产生了运行程序的最终输出结果 一:声明变量 #!/usr/bin/env python # -* ...
- iOS 内存管理arc
http://www.tekuba.net/program/346/ ios自动释放池(autoreleasepool #import <Foundation/Foundation.h> ...
- Docker容器中安装新的程序
在容器里面安装一个简单的程序(ping). 之前下载的是ubuntu的镜像,则可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping. $docke ...
- Xcode无法退出,报错提示 The document “xxx.h” could not be saved. The file doesn’t exist.
记录一个问题 场景:Xcode编辑一个工程时直接在工程内部修改了某个目录的文件夹名字,而后删除了其下的某 .h.m 文件 之后总是提示上述错误且无法强制退出Xcode,clean等操作基本没用 查找本 ...
- Java练习 SDUT-1188_各位数字之和排序
C语言实验--各位数字之和排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给定n个正整数,根据各位数字之和从小到大 ...
- Python从文件中读取内容,包含中文和英文
读取文件内容使要和保存文件时的格式一致 以UTF-8格式保存文件,如: 读取: 在.py起始行写入:#-*- coding:utf-8 -*- filename = raw_input(u" ...
- Spring IoC 使用详解
在Spring中,依赖注入(DI)模式实现了控制反转(IoC)原理.让我们通过一个例子来帮助理解依赖注入.我们先看到java版的例子,然后在此基础上加上spring的功能.就例子而言,是相当地简单.Q ...
- 云原生生态周报 Vol. 6 | KubeCon EU 特刊
5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...