zoukankan      html  css  js  c++  java
  • cf-Round542-Div2-B(贪心)

    题目链接:http://codeforces.com/contest/1130/problem/B

    思路:

    贪心题。定义结构体数组a,a[i].x[0],a[i].x[1]分别表示i出现的第一个下标和第二个下标。从i到i+1过程中,只有两种可能,即Sasha选择a[i+1].x[0]或Sasha选择a[i+1].x[1],仔细想一下,模拟一下,会发现选择其中需要步数最小的即可。详见代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 struct node{
     5     int x[2],k;
     6 }a[100005];
     7 
     8 int n,p1,p2,tmp;
     9 long long res;
    10 
    11 int main(){
    12     scanf("%d",&n);
    13     for(int i=1;i<=n;++i)
    14         a[i].k=0;
    15     for(int i=1;i<=2*n;++i){
    16         scanf("%d",&tmp);
    17         a[tmp].x[a[tmp].k++]=i;    
    18     }
    19     p1=p2=1;
    20     for(int i=1;i<=n;++i){
    21         int tmp1=abs(a[i].x[0]-p1)+abs(a[i].x[1]-p2),tmp2=abs(a[i].x[0]-p2)+abs(a[i].x[1]-p1);
    22         if(tmp1<tmp2)
    23             res+=tmp1,p1=a[i].x[0],p2=a[i].x[1];
    24         else
    25             res+=tmp2,p1=a[i].x[1],p2=a[i].x[0];
    26     }
    27     printf("%lld
    ",res);
    28     return 0;
    29 }
  • 相关阅读:
    迭代模型
    螺旋模型
    瀑布模型
    V模型
    codeforces411div.2
    专题1:记忆化搜索/DAG问题/基础动态规划
    Python
    字符串的相关操作方法
    Python基本数据类型
    编码
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/10432109.html
Copyright © 2011-2022 走看看