正解:状压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. RF失败案例重跑

    1.1        失败案例重跑 该功能主要是针对上次连跑失败的案例需要重新执行测试的情况,可自动识别上次执行失败的案例并进行重跑,无需手动选择相应的案例,简单高效. 1.5.1.        重 ...

  2. Ansible 安装和管理服务

    ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...

  3. C++中class与struct的区别(struct的类型名同时可以作为变量名)

    通常我们知道的区别: (一)默认继承权限.如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理: (二)成员的默认访问权限.class的成员默 ...

  4. centos 安装 Vagrant

    使用的软件: 1. CentOS:  CentOS release 6.4 (Final) 2. Vagrant: vagrant_1.2.2_i686.rpm 3. Virtualbox: Virt ...

  5. 【大数据系列】安装Ambari

    一.Ambari简介 The Apache Ambari project is aimed at making Hadoop management simpler by developing soft ...

  6. js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器) 转

    1.阻止浏览器的默认行为 function stopDefault(e) { //如果提供了事件对象,则这是一个非IE浏览器 if(e && e.preventDefault) { / ...

  7. CSS3 渐变效果

    CSS3 渐变效果 background-image: -moz-linear-gradient(top, #8fa1ff, #3757fa); /* Firefox */ background-im ...

  8. 使用virtualbox 配置 linux host-only虚拟主机连接外网(转载)

    host-only 下的虚拟机之间可以互相访问,虚拟机和宿主机可以互相访问,但是虚拟机不能访问外网. 需要设置: 1.宿主机设置 先对宿主机(windows机器,我这里是win7系统)进行相关配置. ...

  9. 属性特性get/set

    get/set访问器是属性的特性: 特性只有内部才用,因此在javaScript中不能直接访问他们: (1)数据属性——包含一个数据值的位置.这个位置可以读入和写入值. 数据属性有描述其行为的四个特性 ...

  10. LeetCode 17 Letter Combinations of a Phone Number (电话号码字符组合)

    题目链接 https://leetcode.com/problems/letter-combinations-of-a-phone-number/?tab=Description HashMap< ...