大家一起做训练 第二场 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\n", sum);
54: }
55: }
大家一起做训练 第二场 E Cottage Village的更多相关文章
- 大家一起做训练 第一场 B Tournament
题目来源:CodeForce #27 B 有n个人比赛,两两之间都有一场比赛,一共 n * (n - 1) / 2 场比赛.每场比赛的记录方式是 a b,表示在a和b的比赛中,a胜出,b失败. 经过研 ...
- 大家一起做训练 第一场 E Number With The Given Amount Of Divisors
题目来源:CodeForce #27 E 题目意思和题目标题一样,给一个n,求约数的个数恰好为n个的最小的数.保证答案在1018内. Orz,这题训练的时候没写出来. 这道题目分析一下,1018的不大 ...
- 大家一起做训练 第一场 G CD
题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简 ...
- 大家一起做训练 第一场 A Next Test
题目来源:CodeForce #27 A 题目的意思简而言之就是要你输出一个没有出现过的最小的正整数. 题意如此简单明了,做法也很明了. 直接读入所有的数,然后排个序,设置个变量从1开始,出现过+1, ...
- CSU 多校训练第二场 J Pinemi Puzzles
传送门:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2279 题意: 代码: #include <set> #incl ...
- 2016summer 训练第二场
1.http://acm.hdu.edu.cn/showproblem.php?pid=5112 #define _CRT_SECURE_NO_DEPRECATE #include<iostre ...
- 2015多校训练第二场 hdu5305
把这题想复杂了,一直在考虑怎么快速的判断将选的边和已选的边无冲突,后来经人提醒发现这根本没必要,反正数据也不大开两个数组爆搜就OK了,搜索之前要先排除两种没必要搜的情况,这很容易想到,爆搜的时候注意几 ...
- 18牛客多校训练第二场 J farm
题意:一个n×m的农田, 每个小格子都有一种作物, 现在喷t次农药,每次农药覆盖一个矩形, 该矩形里面与农药类型不同的植物都会死掉, 求最后植物的死亡数是多少. 题解:二维树状数组. 每次喷农药的时候 ...
- 2019HDU多校训练第二场 Longest Subarray
题意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次. 思路:对于这类问题,常常转化为数据结构的询问问题.我们考虑枚举右端点,对于当前右端点 ...
随机推荐
- elementUI和iview兼容么
听说iview的作者居然是91年的,我要赶快加油了. https://zhuanlan.zhihu.com/p/25739512
- Contiguous Array with Equal Number of 0 & 1
2018-07-08 13:24:31 问题描述: 问题求解: 问题规模已经给出是50000量级,显然只能是O(n),至多O(nlogn)的复杂度.本题使用DP和滑动数组都比较棘手,这里给出的方案是p ...
- js插件---GoJS 如何去水印
js插件---GoJS 如何去水印 一.总结 一句话总结:把a.Kv=d[w.Jg("7eba17a4ca3b1a8346")][w.Jg("78a118b7" ...
- getpagesize.c:32: __getpagesize: Assertion `_rtld_global_ro._dl_pagesize != 0' failed
为arm 编译 mysql , 执行的时候出现了这个问题. 好像是个bug, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626379 重新编译 ...
- 一个表单里,如果有<button>标签存在,它会自动提交表单
可以用button代替input type=”submit”吗? 在ie下,<button>标记恐怕还存在几个不大不小的问题. 在一个表单里,如果有一个以上"submit&quo ...
- JS-Object (3) JSON; Event Object相关知识(事件冒泡,事件监听, stopPropagation()
通常用于在网站上表示和传输数据 使用JavaScript处理JSON的所有工作,包括访问JSON对象中的数据项并编写自己的JSON. JSON text基本上就像是一个JavaScript对象,这句话 ...
- 《图解Http》 10,11章:构建Web的技术, Web的攻击技术
10.2动态HTML 通过调用客户端脚本语言js,实现对web页面的动态改造.利用DOM文档对象模型,指定想发生变化的元素. 10.22 更容易控制的DOM 使用DOM可以将HTML内的元素当作对象操 ...
- Multi-target tracking by Lagrangian relaxation to min-cost network flow
Multi-target tracking by Lagrangian relaxation to min-cost network flow high-order constraints min-c ...
- C++虚函数与多态
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写.(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函 ...
- quartz---(1)
Quartz Quartz是什么? 简单的一些例子 Quartz是什么 简单的认为Quartz是是一个定时器. 1.1. 下载 http://www.quartz-scheduler.org/down ...