<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>digitDP on The Site of laekov</title>
    <link>/tags/digitdp/</link>
    <description>Recent content in digitDP on The Site of laekov</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>&amp;copy; laekov</copyright>
    <lastBuildDate>Wed, 11 Mar 2015 19:16:41 +0000</lastBuildDate><atom:link href="/tags/digitdp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BZOJ3598 [Scoi2014]方伯伯的商场之旅</title>
      <link>/oi/i11rimport_002/</link>
      <pubDate>Wed, 11 Mar 2015 19:16:41 +0000</pubDate>
      
      <guid>/oi/i11rimport_002/</guid>
      <description>&amp;lt;div class=&amp;quot;post_brief&amp;quot;&amp;gt;&amp;lt;p&amp;gt; 题目名字好长。&amp;lt;/p&amp;gt; &amp;nbsp;
当年在考场上只会分块打表的题。
&amp;nbsp;
前几天有人讲之后觉得大概可做。而且好像那个方法很优秀。
&amp;nbsp;
于是我难得地去写了一回不用记搜且不记上界的数位dp。感觉这个玩意写出来很短，但是思考和调试的复杂度变高了。我觉得是状态定义变得不明确的原因。也许再补一些题就好了。
&amp;nbsp;
考虑先让所有都合并到最低位，一个基础数位dp。（然后写丑了好久）
&amp;nbsp;
然后考虑如果把一个数字的集合位置从p移动到p+1，设这个数字从低位到高位是a[0]..a[n-1]，那么贡献就是∑a[0..p]-∑a[p+1..n-1]。显然当p从右往左移动的时候它是会先负后正的。如果它负的话就减，否则就不玩了。可以发现它们互相不影响。于是对于每一个p单独计算一遍贡献就行了。
&amp;nbsp;
然后还是没有原版跑得快。OTL。
&amp;nbsp;
#define PROC &#34;shop&#34; #include &amp;lt;cstdio&amp;gt; #include &amp;lt;cstring&amp;gt; #include &amp;lt;algorithm&amp;gt; using namespace std;
typedef long long dint; #ifdef WIN32 #define lld &amp;ldquo;%I64d&amp;rdquo; #else #define lld &amp;ldquo;%lld&amp;rdquo; #endif #define _l (long long int)
const int maxn = 53; const int maxm = 509; const int mb = 253;
dint l, r; int n, m, bs, a[maxn];</description>
    </item>
    
  </channel>
</rss>
