F. Wi-Fi(线段树实现dp)
题:http://codeforces.com/contest/1216/problem/F
dp[i][0]:表示第i个位置不装的最小代价
dp[i][1]:表示第i个位置装的最小代价
T1的线段树是维护装的最小代价
T2的线段树是维护装和不装的最小代价
#include<bits/stdc++.h>
using namespace std;
#define lson root<<1,l,midd
#define rson root<<1|1,midd+1,r
typedef long long ll;
const int M=2e5+;
const ll INF=0x3f3f3f3f3f3f3f3f;
ll dp[M][];
char s[M];
struct node{
ll tree[M<<];
T(){memset(tree,INF,sizeof(tree));}
void up(int root){
tree[root]=min(tree[root<<],tree[root<<|]);
}
void update(int pos,ll val,int root,int l,int r){
if(l==r){
tree[root]=min(tree[root],val);
return ;
}
int midd=(l+r)>>;
if(pos<=midd)
update(pos,val,lson);
else
update(pos,val,rson);
up(root);
}
ll query(int L,int R,int root,int l,int r){
if(L<=l&&r<=R){
return tree[root];
}
int midd=(l+r)>>;
ll ans=INF;
if(L<=midd)
ans=min(ans,query(L,R,lson));
if(R>midd)
ans=min(ans,query(L,R,rson));
return ans;
}
}T1,T2;
int main(){
int n,k;
scanf("%d%d",&n,&k);
scanf("%s",s+);
memset(dp,INF,sizeof(dp));
memset(T1.tree,INF,sizeof(T1.tree));
memset(T2.tree,INF,sizeof(T2.tree));
dp[][]=dp[][]=;
// cout<<dp[2][1]<<endl;
T2.update(,,,,n);
for(int i=;i<=n+;i++){
dp[i][]=T1.query(max(,i-k),i-,,,n);
if(s[i]=='')
dp[i][]=T2.query(max(,i-k-),i-,,,n)+i-;
else
dp[i][]=min(min(dp[i-][],dp[i-][]),T1.query(max(,i-k-),i-,,,n))+i-;
T2.update(i,min(dp[i][],dp[i][]),,,n);
if(s[i]=='')
T1.update(i,dp[i][],,,n);
}
printf("%I64d\n",min(dp[n+][],dp[n+][]));
return ;
}
F. Wi-Fi(线段树实现dp)的更多相关文章
- 【洛谷2605】[ZJOI2010] 基站选址(线段树维护DP)
点此看题面 大致题意: 有\(n\)个村庄,每个村庄有\(4\)个属性:\(D_i\)表示与村庄\(1\)的距离,\(C_i\)表示建立基站的费用,\(S_i\)表示能将其覆盖的建基站范围,\(W_i ...
- 4.11 省选模拟赛 序列 二分 线段树优化dp set优化dp 缩点
容易想到二分. 看到第一个条件容易想到缩点. 第二个条件自然是分段 然后让总和最小 容易想到dp. 缩点为先:我是采用了取了一个前缀最小值数组 二分+并查集缩点 当然也是可以直接采用 其他的奇奇怪怪的 ...
- Codeforces Round #271 (Div. 2) E题 Pillars(线段树维护DP)
题目地址:http://codeforces.com/contest/474/problem/E 第一次遇到这样的用线段树来维护DP的题目.ASC中也遇到过,当时也非常自然的想到了线段树维护DP,可是 ...
- 2018.09.12 poj2376Cleaning Shifts(线段树+简单dp)
传送门 貌似贪心能过啊%%%. 本蒟蒻写的线段树优化dp. 式子很好推啊. f[i]表示覆盖1~i所需的最小代价. 那么显然对于一个区间[li,ri]" role="present ...
- 2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)
小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...
- CF833B The Bakery 线段树,DP
CF833B The Bakery LG传送门 线段树优化DP. 其实这是很久以前就应该做了的一道题,由于颓废一直咕在那里,其实还是挺不错的一道题. 先考虑\(O(n^2k)\)做法:设\(f[i][ ...
- codeforces Good bye 2016 E 线段树维护dp区间合并
codeforces Good bye 2016 E 线段树维护dp区间合并 题目大意:给你一个字符串,范围为‘0’~'9',定义一个ugly的串,即串中的子串不能有2016,但是一定要有2017,问 ...
- 【题解】P4247 [清华集训]序列操作(线段树修改DP)
[题解]P4247 [清华集训]序列操作(线段树修改DP) 一道神仙数据结构(DP)题. 题目大意 给定你一个序列,会区间加和区间变相反数,要你支持查询一段区间内任意选择\(c\)个数乘起来的和.对1 ...
- 【bzoj3939】[Usaco2015 Feb]Cow Hopscotch 动态开点线段树优化dp
题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented a varian ...
- POJ 2376 Cleaning Shifts (线段树优化DP)
题目大意:给你很多条线段,开头结尾是$[l,r]$,让你覆盖整个区间$[1,T]$,求最少的线段数 题目传送门 线段树优化$DP$裸题.. 先去掉所有能被其他线段包含的线段,这种线段一定不在最优解里 ...
随机推荐
- MySQL数据类型使用总结,浮点使用注意事项
1.对于精度要求较高的应用中,建议使用定点数来存储数值,以保证结果的准确性. 2.对于字符类型,要根据存储引擎进行相应的选择 3.对含有TEXT和BOLB字段的表,如果经常做删除和修改记录的操作要定时 ...
- promise 核心 几个小问题
1.如何改变pending的壮体 抛出异常.pending变为rejected // throw new Error('fail') 内部抛出异常也这样 reason为抛出的error resol ...
- C++的一些知识点汇总
数组形参 数组形参 void test(const int arr[]); //arr中的值不能被改变 void test(const int *arr); //arr中的值不能被改变,包括arr[1 ...
- The full stack trace of the root cause is available in the Apache Tomcat/8.0.8 logs.
这个问题是版本冲突的问题 1.调低jdk 版本,不能让jdk版本太高,至少不能比tomcat高,要不然就会有这个错误. 2.如果看过我这篇博客的人(https://www.cnblogs.com/CH ...
- java课程之团队开发冲刺阶段1.9
一.总结昨天进度 1.学习了简单的消息推送方法,并且能够使用进行每日定时推送 二.遇到的困难 1.在每日推送的过程中,程序必须被正常关闭,如果程序是被切到后天然后直接结束进程的话,每日推送的线程服务也 ...
- 实验吧web-易-这个看起来有点简单
看url中有id=1,明显的sql注入,这里使用手工注入不适用sqlmap,想用的话参考文章(传送门) 1.首先测试有没有sql注入漏洞, http://ctf5.shiyanbar.com/8/in ...
- maven项目编译报错处理
1.问题一: [ERROR] Failed to execute goal on project data-common: Could not resolve dependencies for pro ...
- LeetCode No.166,167,168
No.166 FractionToDecimal 分数到小数 题目 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数 ...
- Fiddler 断点命令
Request 断点:bpu /priceCalculate 清除命令:bpu Response 断点:bpafter /priceCalculate 清除命令:bpafter
- vue项目 首页开发 part3
da当拖动图标时候,只有上部分可以,下部分无响应 swiper 为根页面引用,其中的css为独立,点击swiper标签可以看见其包裹区域只有部分 那么需要修改 就需要穿透样式 外部 >> ...