zoukankan      html  css  js  c++  java
  • joj2308

     贪心,弄个2重循环,每次取最优就可以了。

    #include<iostream>
    #include<stdio.h>
    #include<math.h>
    #include <algorithm>
    using namespace std;
    int a[52];
    int main()
    {
        int n,k;
        while(scanf("%d%d",&n,&k)!=EOF)
        {
            int i,j;
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            int mark=0,maxx=10000,j1,j2;
            for(i=1;i<=n-1;i++)
               for(j=i+1;j<=n;j++)
               {
                   if(fabs(a[i]-a[j])>=k)
                   {
                      mark=1;
                      int a=min(i,j);
                      int b=max(i,j);
                      if(maxx==max(i,j))
                      {
                          if((a/2+1+(b-a+1)/2)<(j1/2+1+(j2-j1+1)/2))
                          {
                              j1=a;
                              j2=b;
                          }
                      }
                      else if(maxx>max(i,j))
                      {
                          maxx=max(i,j);
                          j1=min(i,j);
                          j2=max(i,j);
                      }
                   }
               }
            if(mark==0)
               printf("%d\n",n);
            else
               printf("%d\n",j1/2+1+(j2-j1+1)/2);
        }
    }

  • 相关阅读:
    C#定时执行任务
    C#判断数据库是否可连接(PING)
    Excel之导入数据
    JQuery之杂项方法$.grep()
    .Net EF 之代码生成策略
    平台与WeLink深度融合技术汇总
    Host is not allowed to connect to this MySQL
    excel中过长的数字怎么筛选重复项
    oracle 函数大全
    WinXP添加TLS1.1、TLS1.2支持
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985950.html
Copyright © 2011-2022 走看看