题干:

Little White plays a game.There are n pieces of dominoes on the table in a row. He can choose a domino which hasn't fall down for at most k times, let it fall to the left or right. When a domino is toppled, it will knock down the erect domino. On the assumption that all of the tiles are fallen in the end, he can set the height of all dominoes, but he wants to minimize the sum of all dominoes height. The height of every domino is an integer and at least 1.

Input

The first line of input is an integer T ( 1≤T≤101≤T≤10) 
There are two lines of each test case. 
The first line has two integer n and k, respectively domino number and the number of opportunities.( 2≤k,n≤1000002≤k,n≤100000) 
The second line has n - 1 integers, the distance of adjacent domino d, 1≤d≤1000001≤d≤100000

Output

For each testcase, output of a line, the smallest sum of all dominoes height

Sample Input

1
4 2
2 3 4

Sample Output

9

题目大意:

桌子上有n张多米诺骨牌排成一列。它有k次机会,每次可以选一个还没有倒的骨牌,向左或者向右推倒。每个骨牌倒下的时候,若碰到了未倒下的骨牌,可以顺带把它推倒。现在可以随意设置骨牌的高度,但是骨牌高度为整数,且至少为1,并且 小白希望在能够推倒所有骨牌的前提下,使所有骨牌高度的和最小。(n,k<=1e5)

转化后的题意:

有n个炸弹排成一列。我现在有k次行动机会,每一次我可以选择一座未被摧毁的位置为a的炸弹,使其自爆并摧毁(a-Xa,a]或[a,a+Xa)内的所有炸弹,其中Xa表示它的充能值。我可以在所有行动前配置每一个炸弹的充能值,我想在配置的总充能值最小的情况下摧毁所有炸弹,请计算这个最小值。炸弹间的距离皆为整数,炸弹的充能值必须为整数且至少为1。

Input

输入第一行包含一个整数T(1≤T≤10),表示数据组数。

每一组数据第一行包含两个整数n,k(2≤n,k≤105),含义如题所述。

接下来包含n-1个整数,表示相邻炸弹的距离di(1≤di≤105)。

Output

对于每一组数据,输出可能的最小充能总和。

解题报告:

其实推倒可以连续,也就是说最后的答案肯定是最多min(n,K)个连续的区间,而且可以证明肯定不会有一个骨牌可以同时推倒多个骨牌的情况。因为那样的话需要多花一个高度。(画一画就看出来了)

而且这一段区间因为是连续推倒,所以肯定是往一边倒,也就是说往左和往右可以自己设定,都是等价的,这边我们默认往左倒。这样想的话,就是如何把这n-1个值分成 k 份,使得区间内的和最小,那么就是简单的排序,去掉前k-1大的。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
int n,k,a[MAX];
int main()
{int T;cin>>T; while(T--) {cin>>n>>k;for(int i = 1; i<=n-1; i++) scanf("%d",a+i);sort(a+1,a+n);if(k>=n) {printf("%d\n",n); continue;}ll ans = 0;for(int i = 1; i<=n-k; i++) ans += a[i];ans += n;printf("%lld\n",ans);}return 0 ;
}

【HDU - 5777】domino(贪心)相关推荐

  1. HDU 5777 domino

    贪心一下.有k次机会,也就是那些数字中,最大的k-1可以不选择.答案为:sum{a[i]}-sum{最大的k-1个a[i]}+n.注意:k>=n的时候直接输出n. #pragma comment ...

  2. hdu 5248(二分+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...

  3. hdu 5246(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5246 解题思路:先排序,在采用贪心的方法,先给百小度找到合适的初始战斗力,找到比初始战斗力上限小的中最 ...

  4. hdu 4296 Buildings (贪心)

    http://acm.hdu.edu.cn/showproblem.php?pid=4296 题意: 给出n个石板的重量w和它的承受能力s,将这n个石板累在一起,这样每个石板都有一个PDV = (Σw ...

  5. HDU - 6438(贪心+思维)

    链接:HDU - 6438 题意:给出 n ,表示 n 天.给出 n 个数,a[i] 表示第 i 天,物品的价格是多少.每天可以选择买一个物品,或者卖一个已有物品,也可以什么都不做,问最后最大能赚多少 ...

  6. HDU 4023 (博弈 贪心 模拟) Game

    如果硬要说这算是博弈题目的话,那这个博弈是不公平博弈(partizan games),因为双方面对同一个局面做出来的决策是不一样的. 我们平时做的博弈都是公平博弈(impartial games),所 ...

  7. HDU - 6746 Civilization(贪心+模拟)

    题目链接:点击查看 题目大意:中文题面 题目分析:一道比赛时写崩了的模拟,赛后参考别人的代码,发现原来这个题目可以写的如此简单 说会题目,n 只有 500 ,可以 n * n 枚举每个位置作为起点,对 ...

  8. 给我往死里贪!——24行代码AC_今年暑假不AC HDU - 2037(贪心模板讲解)

    励志用少的代码做高效表达 思路分析: 贪心算法模板题 贪心算法简单来讲即自顶向下,求解出每个子最优解,且每个子问题不会对下一个问题产生影响 该题算法模型为: 1.若每次选取开始时间最早的节目,无法求出 ...

  9. HDU 4864 Task(贪心或高斯消元)

    题意:n台机器工作时间为ai,等级bi,m个任务需要时间ai,等级bi,一台机器只能完成一个任务,完成一个任务收益为500*ai+2*bi,求最大收益:(n,m>100000) 思路:先从大到小 ...

最新文章

  1. Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
  2. Web网站的性能测试工具
  3. 借花献佛!docker讲解视频
  4. hdu4277 DFS+SET
  5. MySQL动态行转列
  6. JavaScript实现职责链模式
  7. 轻松学习 Flex 布局的小游戏
  8. 分析89万招聘数据后发现:华为平均月薪35K,Java需求下降
  9. 免费ftp网站服务器软件,免费ftp服务器软件,免费ftp服务器软件有哪些呢?好用推荐...
  10. cocos2d-基本概念(5)-Effects 效果
  11. java编译命令是什么_Java编译命令整理
  12. linux sata 3驱动下载,linux – SSD SATA3驱动器可能存在的问题
  13. 液晶显示器面板型号速查[转贴]
  14. 推荐几个无版权图片库,可免费使用
  15. 中国水疗产品行业市场供需与战略研究报告
  16. bi数据分析工具有哪些?
  17. c语言 多元一次方程,C++实现的求解多元一次方程示例
  18. 阿里支付系统就该这么设计(万能通用),稳的一批!
  19. 数电6_1——时序逻辑电路概述(很久整理的,没有下文)
  20. 人脸识别 ArcFace 实现

热门文章

  1. Java进阶07 嵌套类
  2. 博客诞生过程与变革:十年来谁是写博客第一人?
  3. [dp]Leetcode 5. Longest Palindromic Substring
  4. [项目经验]玩转开源项目
  5. apriori算法代码_sklearn(九)apriori 关联规则算法,以及FP-growth 算法
  6. 车载电脑中控软件_数字图书馆智能化系统集成-ipad中控软件
  7. java中write方法报错_Java中管道报错:Write end dead
  8. 计算机高办报名时间,前方高能!计算机信息技术证报名入口、考试时间已发布...
  9. 1x1 11b g n linux,基于RN1810下的2.4 GHz IEEE 802.11b/g/n无线模块
  10. dedecms模版php,dedecms专题模板怎么用