【Atcoder Regular Contest 085F】 NRE

来源:互联网 发布:mac文档怎么转换格式 编辑:程序博客网 时间:2024/06/06 09:31

Description

设有一长度为n的初始每个位置均为0的序列A。再给定一个长度为n的01序列B。
有Q个特殊的区间[li,ri],你可以选择将A中li到ri这些位置都变为1,当然你可以选择不变。
现在你需要最小化A,B的海明距离。即最小化对应数值不同的位置数目。
这里写图片描述

Analysis

ans=i[a0b1]+[a1b0](用axby表示a[i]=xb[i]=y
=i[a0b1]+b0(i[a0b0])
f[i]=min(1<=ii[a0b1][a0b0]),答案即为f[n]+sum{b0}
考虑到a1已经没有用了,所以区间覆盖相当于整段跳过
我们只能按左端点排序,区间左端点往右端点转移,这样才能保证转移到的后面状态的值,一定是跳过了某段区间而转移过去的
如下

for(int i=1; i<=n; ++i)      {          for(int k=0;k<v[i].size();k++)          {             int j=v[i][k];            int mi = dp[i-1];              for(int o=max(i-1,1);o<=j;++o)                mi=min(mi,dp[o]);            //mi = min(mi, query(max(i-1,1), j, 1, n, 1));              if(mi < dp[j])            {                  dp[j] = mi;                  //update(j, mi, 1, n, 1);              }          }          dp[i] = min(dp[i], dp[i-1]+cost[i]);    }  
原创粉丝点击