链接:https://www.nowcoder.com/acm/contest/91/A
来源:牛客网

最近对抗生成网络(GAN)很火,其中有一种变体WGAN,引入了一种新的距离来提高生成图片的质量。这个距离就是Wasserstein距离,又名铲土距离。
这个问题可以描述如下:
有两堆泥土,每一堆有n个位置,标号从1~n。第一堆泥土的第i个位置有ai克泥土,第二堆泥土的第i个位置有bi克泥土。小埃可以在第一堆泥土中任意移挪动泥土,具体地从第i个位置移动k克泥土到第j个位置,但是会消耗的体力。小埃的最终目的是通过在第一堆中挪动泥土,使得第一堆泥土最终的形态和第二堆相同,也就是ai=bi (1<=i<=n), 但是要求所花费的体力最小

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

输入描述:

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

输出描述:

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

输入

2
3
0 0 9
0 2 7
3
1 7 6
6 6 2

输出

2
9

备注:

输入数据量较大,建议使用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 <bits/stdc++.h>
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<n;i++){ans += abs(a[i]-b[i]);//每次分配 答案+abs(a[i]-b[i])a[i+1] += a[i]-b[i];//a[i]-b[i]计算还差多少,后面的补上来,将该摞多余的土堆数放到下一摞
        }printf("%lld\n",ans);}return 0;
}

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

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

A Wasserstein Distance[贪心/模拟]相关推荐

  1. 推土机距离(Wasserstein distance)以及其他几种常用的分布差异度量方法(mark)

    文章目录 1. Wasserstein距离 2. KL散度 3. JS散度 参考资料 1. Wasserstein距离 1.1 方法简介 Wasserstein Distance也称为推土机距离(Ea ...

  2. 推土距离, Wasserstein distance

    在鲁棒优化中见到一个名词:Wasserstein distance, 又称作 earth mover's distance,推土距离.用来测量两个随机分布的距离. 之所以叫推土距离,是因为它的物理含义 ...

  3. Detecting tiny objects in aerial images: A normalized Wasserstein distance and a new benchmark(论文导读)

    A normalized Wasserstein distance and a new benchmark(论文导读) 论文链接 文章目录 A normalized Wasserstein dista ...

  4. 【CVPR 2021】基于Wasserstein Distance对比表示蒸馏方法:Wasserstein Contrastive Representation Distillation

    [CVPR 2021]基于Wasserstein Distance对比表示蒸馏方法:Wasserstein Contrastive Representation Distillation 论文地址: ...

  5. 校内hu测(10.6T2,T3)(乱搞+贪心+模拟)

    @liu_runda T2.便(then) [题目描述] 给出一个R*C的棋盘.共有R行C列,R*C个格子.现要在每个格子都填一个非负整数.使得任意一个2*2的正方形区域都满足这样的性质:左上角的数字 ...

  6. KL divergence,JS divergence,Wasserstein distance是什么

    文章目录 前言 KL divergence JS divergence Wasserstein distance 总结 前言 这三个东西都可以用来两个分布的差异.其中三最难,其本身是来自另外的领域,如 ...

  7. 【SPRS J P RS 2022】小目标检测模块:A Normalized Gaussian Wasserstein Distance for Tiny Object Detection

    [SPRS J P & RS 2022]A Normalized Gaussian Wasserstein Distance for Tiny Object Detection A Norma ...

  8. 【NOIP2013】积木大赛(差分数组,贪心模拟)

    题目 原题链接 问题描述 分析 直观思路--贪心模拟:每次都处理最长正整数区段. 以[2,3,4,1,2][2,3,4,1,2][2,3,4,1,2]为例: [2,3,4,1,2]⟹[1,2,3,0, ...

  9. Wasserstein distance vs Dynamic Time Warping

    这篇博客同时在我的wordpress上发布 In my internship with UCSF Neuroscape lab, I was faced with an important quest ...

最新文章

  1. Nature子刊:残留DNA在土壤中含量丰富并且模糊了对土壤生物多样性的估计
  2. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例
  3. FreeImage加速保存图像
  4. Xftp使用教程——问答方式
  5. 修改Chrome的UserAgent
  6. 字符串替换方法的优劣
  7. 从MongoDB2.4升级到3.0的详细步骤
  8. 一文看懂Stacking!(含Python代码)
  9. 麦子学院字符设备驱动201126
  10. When I’m old and dying
  11. Fractional Laplacian
  12. win10防火墙删除的文件在哪里_【微软】第42期分享:微软 Win10 仍存在删除个人配置文件数据 Bug!...
  13. WebP图片格式处理和兼容使用
  14. 怎么把PPT压缩到最小?
  15. Android获取正在运行的进程列表
  16. Kali无线渗透获取宿舍WiFi密码(WPA)
  17. 计算机制作灯笼,做灯笼日记
  18. 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
  19. 【photoshop】笔记之图层详解
  20. 最小生成树--还是畅通工程

热门文章

  1. 计算机中的进制和编码
  2. 历届试题 打印十字图
  3. Java IO流 、 Properties 、 枚举
  4. Ubuntu16.04 卸载Gazebo7 安装 Gazebo9
  5. 多种协议数据包的结构
  6. pano2vr怎么制作漫游_春节7天长假,在云南怎么玩?
  7. 是什么专业_自考什么专业容易就业
  8. java富文本编辑器wangEditor-3.1.1的使用流程
  9. 【HDU 2507】【ACM-ICPC算法基础训练教程 题1-6】迷瘴(贪心)
  10. 每天一道LeetCode-----给定一个矩阵,如果某个元素是0,就将所在行所在列上所有元素否置0