• 大家一起做训练 第二场 E Cottage Village


    题目来源:CodeForce #15 A

    现在有 n 间正方形的房子,其中心点分布在 X轴 上,现在我需要新建一间边长为 t 的房子,要求新房子至少和一间房子相邻,但是不能和其他房子重合。请输出我有多少个位置可以选。

    先分析一下:

      因为现在要建一间边长为 t 的房子,而且要有一间房子与之相邻。所以,只有两种可能:第一种,在两端头。第二种,两间房子之间的间隔>= t。

    分析完之后,做法已经是显而易见的了。首先,最少能建2间房子(在两端头)。然后就是遍历所有中心点,来计算房子间的距离,来判断能不能建房子。特别的,如果距离=t,只有一种方法。如果>t那么有两种。

    时间效率:O( n * logn),主要用在排序上。

    附AC代码:

       1: #include <stdio.h>
       2: #include <iostream>
       3: #include <math.h>
       4: #include <stdlib.h>
       5: #include <string.h>
       6: #include <algorithm>
       7: #include <string>
       8: #include <vector>
       9: using namespace std;
      10:  
      11: int t, n, pri[29], res[29], tmp[29], sum = 0;
      12:     
      13: void dfs(int id)
      14: {
      15:     if (id > n)
      16:     {
      17:         int m = 0;
      18:         for (int i = 1; i <= n; i++)
      19:             if (tmp[i])
      20:                 m += pri[i];
      21:         if (m > sum && m <= t)
      22:         {
      23:             sum = m;
      24:             for (int i = 1; i <= n; i++)
      25:                 res[i] = tmp[i];
      26:         }
      27:         return;
      28:     }
      29:     else
      30:     {
      31:         tmp[id] = 1;
      32:         dp(id+1);
      33:         tmp[id] = 0;
      34:         dp(id+1);
      35:         return;
      36:     }
      37: }
      38:  
      39: int main()
      40: {
      41:     while (~scanf("%d%d", &t, &n))
      42:     {
      43:         memset(res, 0, sizeof(res));
      44:         memset(tmp, 0, sizeof(tmp));
      45:         memset(pri, 0, sizeof(pri));
      46:         sum = 0;
      47:         for (int i = 1; i <= n; i++)
      48:             scanf("%d", &pri[i]);
      49:         dfs(1);
      50:         for (int i = 1; i <= n; i++)
      51:             if (res[i])
      52:                 printf("%d ", pri[i]);
      53:         printf("sum:%d
    ", sum);
      54:     }
      55: }
  • 相关阅读:
    图片局部放大插件jquery.jQZoom.js
    FastCGI for iis6不能限制程序池的CPU
    技术普及帖:你刚才在淘宝上买了一件东西
    转载 ListView动态加载数据模板
    转载 Drawable、Bitmap、byte[]之间的转换
    转载 一个ImageView 点击时是一张图片,放开时换另一张图片
    转载 java抽象类与接口的区别
    转载 Android AsyncTask
    转载 Android实现ListView异步加载图片
    转载 Android权限大全
  • 原文地址:https://www.cnblogs.com/wuhenqs/p/3405499.html
Copyright © 2020-2023  润新知