当前位置: 首页 > news >正文

秦皇岛网站制作公司深圳西乡租房

秦皇岛网站制作公司,深圳西乡租房,德州seo外包,天津高端网页制作传送门:CF [前题提要]:自定义偏序来优化dp的递推,感觉这个trick很好,故记录一下 考虑对于同一张专辑,显然有贡献的序列是一个递增序列,所以我们可以直接对此进行删减. 接下来我们就获得了一些专辑,并且每张专辑的价值都是递增的.我们现在需要解决的问题是如何排列我们的专辑使…传送门:CF [前题提要]:自定义偏序来优化dp的递推,感觉这个trick很好,故记录一下 考虑对于同一张专辑,显然有贡献的序列是一个递增序列,所以我们可以直接对此进行删减. 接下来我们就获得了一些专辑,并且每张专辑的价值都是递增的.我们现在需要解决的问题是如何排列我们的专辑使得最后的贡献最大. 其实此时是不难想到 d p dp dp的,但是该如何 d p dp dp呢. 不难发现当我们枚举到第 i i i个物品的时候,我们想将其加入到我们之前的序列中,我们需要知道前缀的最大值,这样我们才能知道此时的 i i i增加的贡献是多少,所以我们考虑用一个 d p [ i ] [ j ] dp[i][j] dp[i][j]来记录加入了前 i i i个专辑,前缀最大值为 j j j时的最大贡献,但是此时我们又会发现存在这样一个问题,我们此时将 i i i插入到 j j j的后面,此时我们 i i i的贡献不难算出了,但是此时的 i i i会影响到前缀最大值,也就是会导致后序的贡献改变了. 也就是对于任意一个专辑,我们将其放在一个位置,它的贡献既会影响到前驱又会影响到后继.此时就很难进行维护了.此时思维似乎陷入了死胡同. 此时想一下是什么导致我们无法继续进行下去,是因为当前插入的那个物品影响到了后序的贡献,那么有没有一种做法,我们不会影响到后面呢.诶,你会发现只要当前插入的那个物品的最大值是之前i个最大的,那么此时无论我们的物品插入到哪里,后续的贡献都是0,也就是说,此时后续的贡献就是固定为0,也就不难维护了.顺着这个思路,我们会想到按最大值进行排序,这样就可以保证每次插入的物品都是前缀最大值了.(此处不得不吐槽一下,几乎所有的题解对此处的排序的解释都是贪心性排序,反正博主觉得根本不是这么一回事,此处的排序纯纯的只是为了我们的dp的递推方便而已,至于为什么它们这么一致,那就智者见智了) 此时插入一条简单的证明:我们对加入物品的顺序进行排序,并不会影响我们最终的最优性策略.感性的想一下就是我们运用的方法是动态规划,也就是我们将所有的可能性都是保留的,在最后一刻才将所有的策略取一个最优解.理性的想一下:考虑对一串序列 a 1 , a 2 , a 3 , . . , a n a_1,a_2,a_3,..,a_n a1​,a2​,a3​,..,an​,我们此时分别需要插入 a n 1 , a n 2 a_{n1},a_{n2} an1​,an2​这两个数字,我们考虑先加入 a n 1 a_{n1} an1​再加入 a n 2 a_{n2} an2​,假设上述两个数字分别插在 p o s 1 , p o s 2 pos1,pos2 pos1,pos2的位置,显然这两个位置是互不影响的(也就是说第一个位置并不会影响第二个位置的存放),所以当我们先加入 a n 2 a_{n2} an2​的时候,我们此时仍然可以将其放在 p o s 2 pos2 pos2的位置.并且对于动态规划来说,上述四种状态都会被存下来,所以正确性是对的. 所以考虑先对其进行排序,然后考虑用一个 d p [ i ] [ j ] dp[i][j] dp[i][j]来记录加入了前 i i i个专辑,前缀最大值为 j j j时的最大贡献即可.为了快速的查找最大值,这是个 R M Q RMQ RMQ问题,我们可以使用多种数据结构来进行动态维护.博主使用的是权值线段树. 需要注意的一点细节是并不能对于每一个测试样例都建一棵树,这样的复杂度会假.(别问为什么我知道,因为我实现的时候就是这么实现的,然后T了.此时让我想起了之前每次实现权值线段树的时候要么是离线,要么没有多组数据,所以一直没有遇到过这种情况).当然如果你的dp方程稍微改一下,改成前i个专辑,前缀最大值的下标是j专辑的最大贡献,这样就可以每次都建一颗树了. 下面是具体的代码部分: #include bits/stdc.h using namespace std; typedef long long ll; #define root 1,n,1 #define ls (rt1) #define rs (rt1|1) #define lson l,mid,rt1 #define rson mid1,r,rt1|1 inline ll read() {ll x0,w1;char chgetchar();for(;ch9||ch0;chgetchar()) if(ch-) w-1;for(;ch0ch9;chgetchar()) xx*10ch-0;return x*w; } inline void print(__int128 x){if(x0) {putchar(-);x-x;}if(x9) print(x/10);putchar(x%100); } #define maxn 1000000 const double eps1e-8; #define int_INF 0x3f3f3f3f #define ll_INF 0x3f3f3f3f3f3f3f3f struct Segment_tree{int l,r,mx; }tree[maxn2]; void pushup(int rt) {tree[rt].mxmax(tree[ls].mx,tree[rs].mx); } void build(int l,int r,int rt) {tree[rt].ll;tree[rt].rr;tree[rt].mx-int_INF;if(lr) {return ;}int mid(lr)1;build(lson);build(rson);pushup(rt); } void update(int pos,int val,int rt) {if(tree[rt].lpostree[rt].rpos) {tree[rt].mxmax(tree[rt].mx,val);return ;}int mid(tree[rt].ltree[rt].r)1;if(posmid) update(pos,val,ls);else update(pos,val,rs);pushup(rt); } void reset(int pos,int val,int rt) {if(tree[rt].lpostree[rt].rpos) {tree[rt].mxval;return ;}int mid(tree[rt].ltree[rt].r)1;if(posmid) reset(pos,val,ls);else reset(pos,val,rs);pushup(rt); } int query(int l,int r,int rt) {if(tree[rt].lltree[rt].rr) {return tree[rt].mx;}int mid(tree[rt].ltree[rt].r)1;if(rmid) return query(l,r,ls);else if(lmid) return query(l,r,rs);else return max(query(l,mid,ls),query(mid1,r,rs)); } int k[maxn];vectorinta[maxn];int dp[maxn]; bool cmp(vectorintA,vectorintB) {return A.back()B.back(); } int main() {int Tread();build(1,2e5,1);while(T--) {int nread();for(int i1;in;i) {k[i]read();for(int j1;jk[i];j) {int numread();if((int)a[i].size()!0numa[i].back()) {continue;}else {a[i].push_back(num);}}k[i]a[i].size();} // build(1,2e5,1);这里复杂度假了,Tvlogvsort(a1,an1,cmp);for(int i1;in;i) {for(int j0;ja[i].size();j) {if(a[i][j]1) {dp[a[i].back()]max(dp[a[i].back()],(int)a[i].size()-j);}else {int numquery(1,a[i][j]-1,1);if(num-int_INF) num0;dp[a[i].back()]max(dp[a[i].back()],num(int)a[i].size()-j);}}update(a[i].back(),dp[a[i].back()],1);}int ans-int_INF;for(int i1;in;i) {ansmax(ans,dp[a[i].back()]);}printf(%d\n,ans);//clearfor(int i1;in;i) {reset(a[i].back(),-int_INF,1);dp[a[i].back()]0;a[i].clear();}}return 0; }
http://www.zqtcl.cn/news/711021/

相关文章:

  • 自己做网站怎么维护wordpress素材模板
  • 如何选择一个好的优质网站建设公司wordpress 主题小工具
  • mysql数据库做网站广州网站seo地址
  • 福建省住房和城乡建设厅网站电话网站开发项目步骤
  • 网站注册域名多少钱淘宝网商城
  • 做架构图的网站网站和网店的区别
  • 做红包网站简单个人网站设计
  • 新手学做网站pdf手wordpress修改搜索框
  • 做湲兔费网站视颍如何通过查询网站注册时间
  • 重庆cms建站模板南通网站建设推广优化
  • 合肥网站建设的公司新闻类网站如何做量化统计
  • 好用的在线地图网站十六局集团门户网
  • 网站开发数据库连接失败广州网站建站平台
  • 鄂尔多斯北京网站建设加盟网站建设的内容
  • 网站 被 抄袭不属于营销型网站的特点
  • 浙江英文网站建设互联网公司排名2021完整版
  • 完美代码的网站python开发工具
  • 餐饮网站开发参考文献网站建设500错误代码
  • 网站开发关键技术网站自动推广软件免费
  • 前端学习网站南阳东莞网站建设公司哪家好
  • 关于做网站的了解点wordpress小程序插曲
  • PHP网站开发与管理设计心得个人可以做聊天网站备案吗
  • 开公司可以在哪些网站做推广上海画册设计
  • 成都高新区规划建设局网站网络营销方式有哪些?举例说明
  • 国家企业信用公信系统入口seo服务
  • 个人网站网页模板室内装修设计自学软件
  • 什么网站可以做告白的网页网站模板套用湖南岚鸿
  • 膜结构网站推广怎么做怎样把网站上传到空间
  • 三维网站是怎么做的商城网站 运营
  • 程序员网站开发框架无锡网络公司网站建设app微信公众号平