博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A Wasserstein Distance[贪心/模拟]
阅读量:6162 次
发布时间:2019-06-21

本文共 1498 字,大约阅读时间需要 4 分钟。

链接:

来源:牛客网

最近对抗生成网络(GAN)很火,其中有一种变体WGAN,引入了一种新的距离来提高生成图片的质量。这个距离就是Wasserstein距离,又名铲土距离。
这个问题可以描述如下:

有两堆泥土,每一堆有n个位置,标号从1~n。第一堆泥土的第i个位置有a
i克泥土,第二堆泥土的第i个位置有b
i克泥土。小埃可以在第一堆泥土中任意移挪动泥土,具体地从第i个位置移动k克泥土到第j个位置,但是会消耗
的体力。小埃的最终目的是通过在第一堆中挪动泥土,使得第一堆泥土最终的形态和第二堆相同,也就是a
i=b
i (1<=i<=n), 但是要求所花费的体力最小

左图为第一堆泥土的初始形态,右图为第二堆泥土的初始形态,颜色代表了一种可行的移动方案,使得第一堆泥土的形态变成第二堆泥土的形态

输入描述:

输入测试组数T,每组测试数据,第一行输入n,1<=n<=100000,紧接着输入两行,每行n个整数,
 

输出描述:

对于每组数据,输出一行,将a土堆的形态变成b土堆的形态所需要花费的最小体力

示例1

输入

230 0 90 2 731 7 66 6 2

输出

29

备注:

输入数据量较大,建议使用scanf/printf

【分析】:想要代价最小,控制k*|i-j|最小的办法是只移动相邻的。那么只要保证k最小并且从左到右累加k(k必定为正数,因为k>0&&|i-j|>0,故abs( a[i]-b[i] )。

首先这里有一个简化的思想。考虑到分好后所有的土堆数都等于bi,我们干脆以bi作为标准,让所有的ai减去bi,如果是正数表明需要移走这个正数数量的土堆,注意负数需要移走的土堆数就是这个负数本身,下文中把处理过的牌组就叫做简化后的土堆。

.可能会疑问那个差值可能是正可能是负(其实+/-可以看成移动的方向),这没有关系,差值为正表示 i 移到 i+1,为负表示从 i+1 移到 i,其答案数都是加abs( a[i]-b[i] ),所以可以等价。

贪心思想则是从左到右依次枚举,将每个土堆上简化后的数移动到右边的土堆(再说一遍,是负数的就移走负数),这样最后一组牌就自动变成bi了

但是如果简化后的土堆中有bi怎么办?第一个不为bi的土堆之前所有的土堆都不需要进行移动,否则步数偏大。但是在土堆中如果有bi,那没有关系,因为他左边的土堆一定会往他上面移动一定数量的土堆。

 【代码】:

#include 
using namespace std;const int maxn=1e5+100;int a[maxn],b[maxn];int main(){ int T; //cin>>T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); long long ans=0; for(int i=1;i

 【总结】:贪心选择性:全局最优解是由局部最优解产生。贪心法比较容易实现,但是不好证明。移动负数个土堆也是不违反题意的,因为那相当于逆向移动了正数个土堆。问题的规模被一步步地缩小。

转载于:https://www.cnblogs.com/Roni-i/p/8848999.html

你可能感兴趣的文章
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>