题目链接:

zxa and wifi

Time Limit: 2000/1000 MS (Java/Others)    

Memory Limit: 65536/65536 K (Java/Others)

Problem Description
 
zxa went to Q town as a volunteer, and the town mayor intended to achieve network coverage for the n families living in the town. This n families are able to be seen as the points in the axis, and the families from east to west are numbered from 1 to n, where the distance between the i-th family and the (i+1)-th family is di(1≤i<n).

zxa was in charge of the planning of this project, and he was informed that the carriers were given two ways to set up the network. One way is using one wireless router and cables associated at the i-th family for some families network coverage, where the distance from the i-th family to each covered family (include the i-th family) is no more than ri , which needs ai costs. Another way is using one optical fiber cable at the i-th family for the i-th family network coverage, which needs bi costs.

zxa is interested to know, assuming that it is only permitted to use at most k wireless routers for network coverage in order to avoid too large Wi-Fi radiation, then what is the minimum cost for this n families network coverage, can you help him?

 
Input
 
The first line contains an positive integer T, represents there are T test cases.

For each test case:

The first line contains two positive integers n and k.

The second line contains (n−1) positive integers, represent d1,d2,⋯,dn−1.

The next n lines, the i-th line contains three positive integers ai,ri and bi.

There is a blank between each integer with no other extra space in one line.

1≤T≤100,2≤n≤2⋅10^4,1≤k≤min(n,100),1≤ai,bi,di,ri≤10^5,1≤∑n≤10^5

 
Output
 
For each test case, output in one line a positive integer, repersents the minimum cost for this n families network coverage.
 
Sample Input
 
2
2 1
1
12 11 3
1 7 4
5 5
7 4 8 6
13 6 3
14 2 3
3 6 4
11 12 2
9 14 4
 
Sample Output
 
1
12
 
 
 
题意:
 
第i户与第i+1户相距d[i],第i户装光缆需钱b[i],装WiFi需要a[i],且r[i]范围内的用户都可以用,WiFi的个数不超过k,问使全都能上网的最小花费;
 
思路:
 
dp[i][j]表示装i个WiFi使的前j户可以上网的最小花费;
对于第j户可以有两种选择,装光缆dp[i][j]=min(dp[i][j],dp[i][j-1]+b[j])
装WiFi  dp[i][r[j]]=min(dp[i][r[j]],dp[i][x]+a[j])  l[i]-1<=x<=j;
还有就是先处理出第i户装WiFi时它能作用的范围[l[i],r[i]];
ans=min(ans,dp[i][n])0<=i<=k;
 
 
AC代码:
 
//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
#define Riep(n) for(int i=1;i<=n;i++)
#define Riop(n) for(int i=0;i<n;i++)
#define Rjep(n) for(int j=1;j<=n;j++)
#define Rjop(n) for(int j=0;j<n;j++)
#define mst(ss,b) memset(ss,b,sizeof(ss));
typedef long long LL;
const LL mod=1e9+;
const double PI=acos(-1.0);
int inf=0x3f3f3f3f;
const int N=2e4+;
int n,k,a[N],b[N],sum[N],dis[N],l[N],r[N],d[N];
int dp[][N];
int main()
{
inf*=;
int t;
scanf("%d",&t);
while(t--)
{
mst(dp,inf);
scanf("%d%d",&n,&k);
sum[]=sum[]=;
Riep(n-)scanf("%d",&d[i]),sum[i+]=sum[i]+d[i];
Riep(n)scanf("%d%d%d",&a[i],&dis[i],&b[i]);
Riep(n)
{
int L=,R=i;
while(L<=R)
{
int mid=(L+R)>>;
if(sum[i]-sum[mid]>dis[i])L=mid+;
else R=mid-;
}
l[i]=L;
L=i,R=n;
while(L<=R)
{
int mid=(L+R)>>;
if(sum[mid]-sum[i]>dis[i])R=mid-;
else L=mid+;
}
r[i]=R;
}
for(int i=;i<=k;i++)dp[i][]=;
for(int i=;i<=n;i++)dp[][i]=min(dp[][i],dp[][i-]+b[i]);
for(int i=;i<=k;i++)
{
Rjep(n)
{
dp[i][j]=min(dp[i][j],dp[i][j-]+b[j]);
for(int x=l[j]-;x<=j;x++)
{
dp[i][r[j]]=min(dp[i][r[j]],dp[i-][x]+a[j]);
}
}
}
int ans=inf;
for(int i=;i<=k;i++)
{
ans=min(ans,dp[i][n]);
}
printf("%d\n",ans);
}
return ;
}

hdu-5681 zxa and wifi(dp)的更多相关文章

  1. HDU 1003 Max Sum --- 经典DP

    HDU 1003    相关链接   HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...

  2. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  3. hdu 2829 Lawrence(斜率优化DP)

    题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...

  4. hdu 4568 Hunter 最短路+dp

    Hunter Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  6. HDU 1078 FatMouse and Cheese ( DP, DFS)

    HDU 1078 FatMouse and Cheese ( DP, DFS) 题目大意 给定一个 n * n 的矩阵, 矩阵的每个格子里都有一个值. 每次水平或垂直可以走 [1, k] 步, 从 ( ...

  7. HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)

    HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包) 题意分析 裸的完全背包问题 代码总览 #include <iostream> #include <cstdio> ...

  8. HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    普通的数位DP计算回文串个数 /* HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 2-36进制下回文串个数 */ ...

  9. HDU 5682 zxa and leaf 二分 树形dp

    zxa and leaf 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5682 Description zxa have an unrooted t ...

随机推荐

  1. 【CSDN博客之星】2013年CSDN博客之星正在评选,希望大家支持,非常感谢!

    首先在此感谢 MoreWindows 秒杀多线程面试题系列让我成长和学习,同时也借鉴了很多优秀观点和示例! 请各位读者可以支持MoreWindows,让更优秀的文章陪伴我们! 各位读者好, 本人博客自 ...

  2. erlang启动参数

    出自: http://blog.sina.com.cn/s/blog_96b8a154010123cc.html

  3. 不用FTP使用SecureCRT上传下载文件,并解决rz、sz command not found异常

    使用SSH终端操作Linux/UNIX时,很多时候需要传一些文件到服务器上,或说从服务器上下载一些文件,这类文件传输动作一般使用FTP即可,但是需要架设FTP Server,每次传输不太方便,还要另外 ...

  4. Segger RTT : Real Time Terminal SRAM 调试解决方法

    http://segger.com/jlink-real-time-terminal.html Real Time Terminal SEGGER's Real Time Terminal (RTT) ...

  5. linux 下使rdate命令支持ipv6 ntp server 同步时间

    如果使用linux 下,busybox自带的rdate命令 去ipv6 的ntp server 同步时间的话,会提示invalid argument :无效参数. 那么现在下载rdate的源码并对其进 ...

  6. linux tar.gz zip 解压缩 压缩命令

    http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...

  7. hdu 5277 YJC counts stars 暴力

    YJC counts stars Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  8. 【JavaScript】JavaScript中的Timer是怎么工作的( setTimeout,setInterval)

    原文(http://www.yeeyan.org/articles/view/luosheng/24380) 作为入门者来说,了解JavaScript中timer的工作方式是很重要的.通常它们的表现行 ...

  9. 【JavaScript】Object.observe()带来的数据绑定变革

    Object.observe()带来的数据绑定变革 引言 一场变革即将到来.一项Javascript中的新特性将会改变你对于数据绑定的所有认识.它也将改变你所使用的MVC库观察模型中发生的修改以及更新 ...

  10. java课堂练习之可变參数与卫条件

    /*  有人邀请A,B,C,D,E,F 6个人參加一项会议,这6个人有些奇怪.由于他们有非常多要求,已知:  1)A,B两人至少有1人參加会议:  2)A,E,F 3人中有2人參加会议.  3)B和C ...