zoukankan      html  css  js  c++  java
  • codeforces 704B

     1 codeforces 704B - Ant Man 贪心
     2 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr
     3 向右跳:abs(b.x-a.x)+a.lr+b.rl,遍历完所有的点,问你最后的花费是多少
     4 思路:每次选一个点的时候,在当前确定的每个点比较一下,选最短的距离。
     5 为什么可以贪心?应为答案唯一,那么路径必定是唯一的,每个点所在的位置也一定是最短的。
     6 
     7 
     8 #include <bits/stdc++.h>
     9 using namespace std;
    10 #define LL long long
    11 const int inf = 0x3f3f3f3f;
    12 const int MOD =998244353;
    13 const int N =200010;
    14 #define clc(a,b) memset(a,b,sizeof(a))
    15 const double eps = 1e-7;
    16 void fre() {freopen("in.txt","r",stdin);}
    17 void freout() {freopen("out.txt","w",stdout);}
    18 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
    19 
    20 struct node{
    21     LL x;
    22     LL rl,rr,ll,lr;
    23 }p[5010];
    24 
    25 LL fun(node a,node b){
    26     if(b.x<a.x) return abs(b.x-a.x)+a.ll+b.rr;
    27     return abs(b.x-a.x)+a.lr+b.rl;
    28 }
    29 LL net[5010];
    30 int  main(){
    31     int n,a,b;
    32     scanf("%d%d%d",&n,&a,&b);
    33     for(int i=1;i<=n;i++) scanf("%I64d",&p[i].x);
    34     for(int i=1;i<=n;i++) scanf("%I64d",&p[i].rl);
    35     for(int i=1;i<=n;i++) scanf("%I64d",&p[i].rr);
    36     for(int i=1;i<=n;i++) scanf("%I64d",&p[i].ll);
    37     for(int i=1;i<=n;i++) scanf("%I64d",&p[i].lr);
    38     LL tem,sum,ans=0;
    39     int k;
    40     net[a]=b;
    41     ans+=fun(p[a],p[b]);
    42     for(int i=1;i<=n;i++){ 
    43         if(i==a||i==b) continue;
    44         sum=1e18;
    45         for(int j=a;j!=b;j=net[j]){
    46             tem=fun(p[j],p[i])+fun(p[i],p[net[j]])-fun(p[j],p[net[j]]);
    47             if(tem<sum){
    48                 sum=tem;
    49                 k=j;
    50             }
    51         }
    52         ans+=sum;
    53         net[i]=net[k];
    54         net[k]=i;
    55     }
    56     printf("%I64d
    ",ans);
    57     return 0;
    58 }
  • 相关阅读:
    软件命名规则
    从命令行git转到Tortoise
    如何让浏览器不解析html?
    说几点我觉得谷歌浏览器不好的地方
    移动端开发:使用jQuery Mobile还是Zepto
    开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    给大家讲个故事,感受一下什么叫CF。不知道的请认真听。
    cmd中utf-8编码的问题
    web前端关于html转义符的常用js函数
    js实例分析JavaScript中的事件委托和事件绑定
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5764606.html
Copyright © 2011-2022 走看看