(当时写这篇题解的时候,,,不知道为什么,,,写的非常冗杂,,,不想改了...) 题意:一张有n个点的图,其中每天第i个点到第j个点的边都有$P_{i, j}$的概率开放,每天可以选择走一步或者留在原地,求从1号点到n号点的最优期望值.题解: $f(x)$表示从$x$出发,走到$n$的最优期望时间.因为在一个点x时,如果要选择后继节点,肯定要选$f$值越小的越好,因此考虑贪心的选择后继状态.$a_{i}$表示$f(x)$第$i$小的x.考虑分层DP,依次确定$a_{i}$的值,并同时维护$f$值…
CF605E Intergalaxy Trips 考虑你是不知道后来的边的出现情况的,所以可以这样做:每天你都选择一些点进行观察,知道某天往这些点里面的某条边可用了,你就往这条边走.这样贪心总是对的. 我们定义一个点的权值就是这个点到 $ n $ 的期望距离.同时它就是我们要算的答案. 但是注意到一个性质,我们总是从期望较大的点走向期望较小的点(显然的). 所以我们可以类似反过来的 dijkstra 的更新,维护当前权值的点,然后这个点当前的值就必然是最终这个点的答案.所以我们可以拿它去更新到达…
[CF605E]Intergalaxy Trips(贪心,动态规划) 题面 Codeforces 洛谷 有\(n\)个点,每个时刻第\(i\)个点和第\(j\)个点之间有\(p_{ij}\)的概率存在一条边.每个时刻可以沿着一条边走或者留在原地.求从\(1\)号点走到\(n\)号点的最优的期望时间. 题解 设\(E(x)\)表示从\(x\)走到\(n\)的最短期望时间,那么考虑当前停的这个点的下一步应该怎么走,首先,你一定会走向当前能够到达的所有点中,\(E(x)\)最小的那个,而如果所有可以到…
 Intergalaxy Trips time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The scientists have recently discovered wormholes — objects in space that allow to travel very long distances between gal…
[题目]1510 最小化序列 [题意]给定长度为n的数组A和数字k,要求重排列数组从而最小化: \[ans=\sum_{i=1}^{n-k}|A_i-A_{i+k}|\] 输出最小的ans,\(n \leq 3*10^5,k \leq 5000,-10^9 \leq A_i \leq 10^9\). [算法]贪心+动态规划 先对序列从小到大排序,通过贪心容易发现连续的段在一起时最优.所以实际上要求将序列分成\(k\)段,其中\(n%k\)个大段和其它小段,小段的段长是\(g=\frac{n}{k…
E. Intergalaxy Trips time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output The scientists have recently discovered wormholes — objects in space that allow to travel very long distances between g…
16-矩形嵌套 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:13 submit:28 题目描述: 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中.你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内. 输入描述: 第一…
描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于 第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间.因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗? 输入 第一行是一个整数T,表示输入数据一共有T组. 每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒.接下来的一行分别输入N个木棒的L,W(0 < L ,W <…
首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include <cstdio> #define F(i,j,k) for (int i=j;i<=k;++i) int main() { int n,m,a; scanf("%d",&n); a=0; m=n+1; F(i,0,30) a+=(m>>i)&1; pr…
最少拦截系统 HDOJ-1257 我做这题的思路就是采用暴力或者贪心.也就是每次循环选出从第一个未被选择的元素开始,依次把后面可以选择的元素作为一个系统.最后统计可以有多少个系统. 还有人的思路就是利用动态规划的思路,求解最长上升子序列,也就是反着题意来求.因为在这个最长上升子序列中,所有的元素不可能在同一个拦截系统中,所以子序列的长度就是最后的答案,也就是拦截系统的个数 https://blog.csdn.net/qq_29963431/article/details/49081409 还有博…