题目描述 数轴上有\(n\)个点,你要从位置\(0\)去位置\(B\),你每秒钟可以移动\(1\)单位.还有\(m\)个限制,每个限制\((x,y)\)表示你要在第\(t\)秒之后(可以是第\(t\)秒)经过位置\(y\).问你最少需要几秒. \(n\leq 1000\). 题解 可以发现如果\(B\leq x_i\leq x_j\)且\(y_i\leq y_j\)那么第\(i\)个限制就没有效果.所以我们每次一定是选择当前还没走过的最边上两个端点之一,走过去,然后等待. 这样就可以DP了. 设…
题目描述 数轴上有C个点,每个点有一个坐标和一个访问时间,必须在这个时间后到达这个点才算访问完成.可以在某个位置停留.每在数轴上走一个单位长度消耗一个单位的时间,问:访问所有点并最终到B花费的最小时间. 输入 第1行输入三个整数C,H,B,B是出口的位置.之后C行每行输入两个整数,分别表示一个老师所在的教室和他的下课时间. 输出 贝茜最早能够到达出口的时间. 样例输入 4 10 3 8 9 4 21 3 16 8 12 样例输出 22 题解 区间dp 考试题...考挂了... (以下内容复制自题…
Description 一个数轴上有 \(n \le 1000\) 个位置, 每个位置有一个时间 \(t_i\) 要求在 时刻 \(t_i\) 后, 至少经过该位置一次. (去交作业) 求从 \(0\) 号点出发前往 \(B\) 号点, 满足上述条件的最小需要时间 Solution 1 CQzhangyu的做法. 非常的妙啊 \(\ge t\) 不好做, 走过的位置以后可能又会突然冒出一个人, 决策的顺序位置. 考虑反着来, 先二分答案 \(Ans\), 并从 \(B\) 往 \(0\) 走.…
[BZOJ3379][Usaco2004 Open]Turning in Homework 交作业 Description     贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶牛同学回家. 每门科目的老师所在的教室排列在一条长为H(1≤H≤1000)的走廊上,他们只在课后接收作业.交作业不需要时间.贝茜现在在位置0,她会告诉你每个教室所在的位置,以及走廊出口的位置.她每走1个单位的路程,就要用1秒.她希望你计算最快多久以后她能交完作业并到达出口. Input  第1行输入…
Description     贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶牛同学回家. 每门科目的老师所在的教室排列在一条长为H(1≤H≤1000)的走廊上,他们只在课后接收作业.交作业不需要时间.贝茜现在在位置0,她会告诉你每个教室所在的位置,以及走廊出口的位置.她每走1个单位的路程,就要用1秒.她希望你计算最快多久以后她能交完作业并到达出口. Input  第1行输入三个整数C,H,B,B是出口的位置.之后C行每行输入两个整数,分别表示一个老师所在的教室和他的下课时…
P2339 提交作业usaco 题目背景 usaco 题目描述 贝西在哞哞大学选修了 C 门课,她要把所有作业分别交给每门课的老师,然后去车站和同学们一起回家.每个老师在各自的办公室里,办公室要等他们下课后才开,第 i 门课的办公室将在 Ti 分钟后开放. 所有的办公室都在一条笔直的走廊上,这条走廊长 H 个单位,一开始贝西在走廊的尽头一侧,位于坐标为 0 的地方.第 i 门课的办公室坐标位于坐标为 Xi 的地方,车站的坐标为 B.贝西可在走廊上自由行走,每分钟可以向右或者向左移动一个单位,也可…
区间\(dp\)提升复习 不得不说这波题真的不简单... 技巧总结: 1.有时候转移可以利用背包累和 2.如果遇到类似区间添加限制的题可以直接把限制扔在区间上,每次只考虑\([l,r]\)被\([i,j]\)完全包含的情况 [BZOJ4897] [Thu Summer Camp2016] 成绩单 典型的利用背包转移,\(dp[i][j]\)表示处理完这段\([i,j]\)区间的答案 转移时一段区间可以被先处理掉或者直接从已经处理完的\(dp[i][j]\)中取过来,这个可以用一个背包维护 con…
题目链接 Turning in Homework 考虑区间DP $f[i][j][0]$为只考虑区间$[i, j]$且最后在$a[i]$位置交作业的答案. $f[i][j][1]$为只考虑区间$[i, j]$且最后在$a[j]$位置交作业的答案. 首先对$a[i]$升序排序(位置第一关键字,时间第二关键字) 然后就是区间DP了 $f[i][j]$可以从$f[i][j + 1]$, $f[i - 1][j]$推过来. 即 $f[i][j][0] = min(f[i][j][0], max(f[i]…
题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成b的次数 ans[i]:a从(0,i)变成b(0,i)所需的最小次数 初始化ans[i]=dp[0][i] 如果a[i]==b[i],则ans[i]=ans[i-1]; 由小区间更新到大区间 //#pragma comment(linker, "/STACK:167772160")//手动…
题意:有一家快餐店送外卖,现在同时有n个家庭打进电话订购,送货员得以V-1的速度一家一家的运送,但是每一个家庭都有一个不开心的值,每分钟都会增加一倍,值达到一定程度,该家庭将不会再订购外卖了,现在为了以后有更多的家庭订购,要将外卖送到的情况下使得所有用户的不开心值总和达到最小 思路:区间DP dp[i][j][0] :表示i到j这段区间内的最小值且留在i点 dp[i][j][1]:表示i到j这段区间内的最小值且留在j点 那么转移方程就是 sum[i]表示1到i的累加和,在枚举i到j的时候(0,i…