建设营销型网站不足之处郑州付费系统网站开发建设
2026/4/18 11:38:59 网站建设 项目流程
建设营销型网站不足之处,郑州付费系统网站开发建设,wordpress打开空白,黄金网站大全免费动态规划难题 题目链接#xff1a;https://atcoder.jp/contests/abc439/tasks/abc439_f 题意#xff1a; 思路#xff1a;下面 和 含义相同#xff0c;ac代码用树状数组实现前缀和快速查询 通过观察得出的一个结论#xff0c;由于给出的是排列#xff08;permutation…动态规划难题题目链接https://atcoder.jp/contests/abc439/tasks/abc439_f题意思路下面和含义相同ac代码用树状数组实现前缀和快速查询通过观察得出的一个结论由于给出的是排列permutation 指一个长度为 n 的数组包含 1 到 n每个数恰好出现一次。所以发现每个数字都不一样每对数构成的几何关系么就是上升要么就是下降题目中要我们找合法的子序列也就是从原序列中随机抽出一些数字按原来的顺序排列的出的子序列满足“山谷”数量小于“山峰”数量山谷山峰就是题目中的y和x的含义枚举各种情况的子序列x1 x2 x3 x4 ...... xn-1 xn得出在一开始的两个数满足和最后两个数满足的子序列就是满足题意的现在考虑位置 i 上的数作为子序列中的对于我们只需要找比小的就行所以统计L[i]表示在i之前小于P[i]的个数由于是排列所以R[i]P[i]-1-L[i]表示在位置i之后小于P[i]的个数在考虑之前的序列的结构情况要么是一个比小的数也就是L[i]个数都满足情况还有就是存在两个数和满足和并且i j i还有存在其它多位数的情况构成的序列结构满足最终的子序列是满足题意的我们先考虑位置 i 前面仅有一个和两个元素的情况对于三个和四个元素的情况可以由一个和两个的情况继承而来。我们可以用变量pre表示位置i 前有多少个序列大于1个元素构成的前半部分序列满足使得最终选出的子序列满足题意那么对于每个位置上的能选出的合法的子序列的个数就是 ( pre L[i] ) * R[i]然后再更新 pre pre*2 L [ i ] pre* 2是在做什么假设在处理之前我们已经有了 3 个半成品序列,,。现在遇到了对于这每一个半成品我们都有两种选择不把放入序列,,依然是合格的半成品数量为 pre。把放入序列由于中间部分没有大小限制放入后它们变成了更长的半成品*,*,*数量也是pre。所以原本的pre就变成了 pre* 2。这本质上是在计算子集的数量每个元素选或不选。 L[i]是在做什么除了继承和扩展旧的半成品我们还会在当前位置新产生一批半成品。代表在 i 左边有多少个比小的数。每一个比小的数j i , 都可以和组成一对新的“开头”S*。由于这正好满足了“开头必须上升”的条件。所以我们要把这 L[i] 对新生产出来的“长度为 2 的半成品”加入到pre中。AC代码void solve() { ll n;cinn; vectorlla(n1),bit(n1,0),l(n1,0); auto up[](ll id) { while (idn)bit[id],idlowbit(id); }; auto sum[](ll id) { ll res0; while (id)resbit[id],id-lowbit(id); return res; }; ll pre0,ans0; rep(i,1,n) { cina[i];l[i]sum(a[i]);up(a[i]); ll ra[i]-1-l[i]; ansadd(ans,mul(add(pre,l[i]),r)); preadd(mul(pre,2),l[i]); } coutansendl; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询