正解:状压dp+辅助dp

解题报告:

来还债辣!NOIp之后还是轻松很多了呢,可以一点点儿落实之前欠下的各种东西一点点提升自己!加油鸭!

是个好题,可以积累套路,启发性强,而且很难

哦而且状压它也是个好东西鸭,这次D2T2好像8以内的部分分就是用神仙状压做的呢,当然我是不会的只会傻逼地推数论QAQ还是可以落实学习一下那题的神仙状压部分分呢QAQ

ummm那这题因为最开始是没太懂的 所以和之前做疫情控制一样分几个板块慢慢梳理趴qwq

首先要确定这题用什么方法?

不要说是已经看到题解说用状压dp辣!

正儿八经说,如果没有题解,怎么思考这道题

关键点大概是在n<=20这个事儿,看到20应该就要敏感了,这个就很,状压dp是趴

好滴积累套路一:20这个范围很有可能是状压dp可以往上面想下

然后确定方法之后就一步步思考,先把题目描述给一点点扣了

首先碰到第一坑点:绝对值

这一个又是一个,典型套路!就是,如果我们按部就班地一点点考虑,我们完全没有办法搞绝对值这个小妖精

但是如果它不是绝对值,就单纯的+-还是有点可做性的感觉的?那我们就可以考虑去除绝对值

想到去除绝对值大概就会有点感觉了——按照大小顺序确定!不就可以直接解决绝对值了嘛!

好滴那套路二来啦:如果碰到绝对值的问题可以考虑从小到大or从大到小考虑然后就可以直接把绝对值删了

那我们现在就相当于是,从小到大考虑每个数在pi中的位置,然后再一点点做

恩然后按照状压dp的套路我们就可以得到肯定是设fi表示状态i的minans咯,考虑怎么转移

先考虑每确定pi中的一个数会有什么贡献

显然对于长度为m的那个序列中的每个数它只会对它左右的数造成贡献

然后我们可以预处理出来贡献的

大概说下预处理贡献趴毕竟你太蠢估计再看一遍又要理解半天呢QAQ

大概就是,我们读入一个数处理完它之后就存给last,然后读入它的下一个数now,这样我们计算贡献就++glast2now ++gnow2last   (关于g的意义可能在这里还是会感觉比较难懂?可以往下翻呢后面又讲述了遍qwq

这样全部读完的时候我们就已经预处理出gij表示只确定了pj位然后这时候我们确定pi位的时候pi的系数是多少

但这当然不够我们肯定是要各种确定状况下确定pi位的贡献是趴,然后就读完之后再再再处理下嘛,就和dp差不多的转一下,就枚举状态j然后gij=gij-lowbitj+gilowbitj转移来就好辣,这样就能预处理出任意一个状态i时确定第j个数的系数是多少

昂预处理贡献港完就差不多把描述扣完辣,总算可以进入正式dp转移了 转移完就做完辣!激不激动!

总算进入正题的dp

就大力转移啊,枚举处理到p数列的i这个状态了然后一一枚举新加入的最大的数放在这个状态中确定了的位置j上

然后就转移是fi可以从(f没有确定j+确定j的贡献)转移来,当然也可以不转,就是如果把最大的数放在另一个位置上,我们发现,欸,更好,那我们就不用放这儿了嘛又不是傻逼

然后最后一个难点!确定j的贡献怎么计算

你意思意思理解下得了x

就是首先我们要知道新加入的这个最大的数它是第几大的,这个很好求吼,我们先当做我们知道了,它是第cjk大的然后它的值是data[cjk](。。。懒得想变量名了凑合着用就这样趴qwq)然后那就是我们预处理出的gji-gj2n-i)*(data[cjk]

关于g再解释下趴还是比较难理解的呢QAQ

就是我们现在相当于是说搞出状态j时插入i的系数,这个就是它的正系数,它在这里面都是被减数,相当于是加的

然后后面那个表示我现在已经确定了状态i,那它的补集就是2n-i对趴,这个补集就是还没有确定的数,这些数就都是比data[cjk]大的了,那就所有在data[cjk]旁边的数都会-它,它就成了减数了

我们就把它作为被减数时的系数-它作为减数时的系数就是它的实际系数了然后乘以它的data就是它的贡献了呢

明白了嘛!

哇我真滴觉得!!!太太太妙了!怎么这么妙呢!

over!

(还是忍不住再说句,真滴好妙啊!!!天呐!!!

牛客练习赛18E pocky游戏 状压dp的更多相关文章

  1. NowCoder110E Pocky游戏 状压DP

    传送门 题意:给出$N$个数和一个长为$M$.所有数在$[1,N]$范围之内的正整数序列$a_i$,求出这$N$个数的一种排列$p_1...p_N$使得$\sum\limits_{i=2}^M |p_ ...

  2. CDOJ 1402 三角形棋盘上的博弈游戏 状压DP

    三角形棋盘上的博弈游戏 题目连接: http://mozhu.today/#/problem/show/1402 Description 柱爷有天上课无聊,于是和同桌卿学姐一起下一种奇特的棋: 棋盘如 ...

  3. 牛客练习赛24题解(搜索,DP)

    A题,C题不讲,基础题(但是我要抨击一下这次比赛,卡cin,cout,卡的太狠了,根本就不让过的那种,QAQ) 链接:https://www.nowcoder.com/acm/contest/157/ ...

  4. 出题人的手环(牛客练习赛38D 离散化+树状数组)

    题目链接(https://ac.nowcoder.com/acm/contest/358/D) 题目描述 出题人的妹子送了出题人一个手环,这个手环上有 n 个珠子,每个珠子上有一个数. 有一天,出题人 ...

  5. [Usaco2007 Open]Fliptile 翻格子游戏 状压dp

    n,m<=15,直接搞肯定不行,考虑一行一行来, 每一行的状态只与三行有关,所以从第一行开始枚举,每一次让下面一行填上他上面那行的坑 最后一行必须要同时满足他自己和他上面那行,否则舍去 #inc ...

  6. 牛客练习赛 26 B题 烟花【DP】(经典)

    <题目链接> 题目描述 小a有个烟花,每个烟花代表着互不相同的颜色,对于第个烟花,它有的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生种颜色的概率 输入描述: ...

  7. JZYZOJ1384 种花小游戏 状压dp

    http://172.20.6.3/Problem_Show.asp?id=1384  最开始以为是dfs然后超时了,然后调了半天调成dp,还不如再写一遍... 代码 #include<iost ...

  8. 牛客练习赛32B Xor Path (树形dp)

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给定一棵n个点的树,每个点有权值.定义表示 ...

  9. 牛客练习赛79E-小G的数学难题【dp,单调队列】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11169/E 题目大意 给出\(n\)个三元组\((a_i,b_i,c_i)\). 要求选出一个集合\(S\) ...

随机推荐

  1. bodgeit测试平台

    下载war安装包:https://code.google.com/archive/p/bodgeit/downloads http://resources.infosecinstitute.com/t ...

  2. vmware 安装 Mac OS X 10.9 Mavericks

    This guide shows how to install fresh OS X 10.9 Mavericks on VMware workstation with Windows 7 or Wi ...

  3. 关于GDI+的一些使用基础设置

    一.新建一个MFC的单文档工程,例如工程名字叫GDIPLUSTEST1. 二.在工程的stdafx.h头文件中添加入 #include "gdiplus.h" using name ...

  4. RabbitMQ笔记四:Binding,Queue,Message概念

    Binding详解   黄线部分就是binding Exchange与Exchange,Queue之间的虚拟连接,Binding中可以包含Routing key或者参数   创建binding 注意: ...

  5. SVN的基本原理 配置自动更新WEB服务器

    SVN的基本原理 配置自动更新WEB服务器 最近有个小项目,需要用SVN来进行版本控制.项目组的同僚有8个人,大家都在本地开发,然后提交到服务器——服务器就是其中一台机器.专门安排一个测试员来进行项目 ...

  6. 安装windows7/8/10到U盘或移动硬盘

    https://jingyan.baidu.com/article/e52e36156f6ad240c60c518c.html jpg改rar

  7. C# GIF图片的分解以及合成

    dll下载的地址 http://www.codeproject.com/Articles/11505/NGif-Animated-GIF-Encoder-for-NET   使用主要调用的是Compo ...

  8. 【资源大全】.NET资源大全中文版(Awesome最新版)

    算法与数据结构(Algorithms and Data structures) 应用程序接口(API) 应用程序框架(Application Frameworks) 模板引擎(Application ...

  9. 【Phalapi2.0】 如何使用 source 通过 header 传参数

    做接口服务时候.有些场景会使用header 来传递参数. 查看官网文档说明 数据来源 source指定当前单个参数的数据来源,可以是post.get.cookie.server.request.hea ...

  10. c++ auto 理解

    for (auto i : b) Fuck(i); 是 for (auto bitch = std::begin(b); bitch != std::end(b); bitch++) { auto t ...