#动态规划,离散#洛谷 1052 codevs 1105 jzoj 1818(junior)1169 (senior)过河

news/2024/11/16 4:28:09/

题目

青蛙从0开始,不停的向终点跳跃。一次跳跃的距离是 S S S T T T之间的任意正整数(包括 S , T S,T S,T)。当青蛙跳到或跳过坐标为 L L L 的点时,就算青蛙已经跳出了独木桥。问最少要踩多少石子过去。


分析

动态规划,注意路径压缩,状态转移方程:
f [ i ] = min ⁡ { f [ i − j ] } + h a v e − s t o n e [ i ] f[i]=\min\{f[i-j]\}+have-stone[i] f[i]=min{f[ij]}+havestone[i]


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;
int l,s,t,n,a[101],f[252011],ans; bool stone[252011];
int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans;
}
int main(){in(); s=in(); t=in(); ans=n=in();for (int i=1;i<=n;i++) a[i]=in();stable_sort(a+1,a+1+n); int ls=0;for (int i=1;i<=n;i++){int lt=ls; ls=a[i];a[i]=a[i-1]+(a[i]-lt)%2520;//离散,因为最多走十步,所以肯定是1~10的最小公倍数stone[a[i]]=1;//标记有石头}l=a[n];for (int i=1;i<=l+t;i++) f[i]=n;//n个石头都走for (int i=1;i<=l+t;i++)for (int j=s;j<=t;j++){if (i-j>=0) f[i]=(f[i]<f[i-j])?f[i]:f[i-j];//怎样少走石头f[i]+=stone[i];//如果有石头要走一块}for (int i=l;i<l+t;i++) ans=(ans<f[i])?ans:f[i];return !printf("%d",ans);
}

http://www.ppmy.cn/news/244212.html

相关文章

python 力扣(LeetCode) 1818.绝对差值和

题目链接 力扣&#xff08;LeetCode&#xff09; 1818.绝对差值和 不想戳的看下图&#xff1a; 样例&#xff1a; 数据范围&#xff1a; 解题思路&#xff1a; 二分查找后进行排序。 代码如下&#xff1a; class Solution:def minAbsoluteSumDiff(self, nums1: List[int], …

vivo 1805的usb调试模式在哪里,开启vivo 1805usb调试模式的流程

经常我们使用安卓手机通过数据线连接上PC的时候&#xff0c;如果手机没有开启usb调试模式&#xff0c;PC则没办法成功识别我们的手机&#xff0c;部分软件也没办法正常使用&#xff0c;此情况我们需要找方法将手机的usb调试模式打开&#xff0c;下面我们讲解vivo 1805如何开启u…

[BZOJ1818][CQOI2010]内部白点

题目链接&#xff1a; BZOJ1818 首先&#xff0c;题目根本不会有\(-1\)的情况&#xff0c;且所有节点变色只发生在第一秒。 证明&#xff1f;如果一个节点\((x,y)\)在第二秒变色&#xff0c;那么一定有一个节点会在第一秒内于\((x,y)\)的四周生成。 假设在左边&#xff08;其他…

【bzoj1818】[Cqoi2010]内部白点

Description 无限大正方形网格里有n个黑色的顶点&#xff0c;所有其他顶点都是白色的&#xff08;网格的顶点即坐标为整数的点&#xff0c;又称整点&#xff09;。每秒钟&#xff0c;所有内部白点同时变黑&#xff0c;直到不存在内部白点为止。你的任务是统计最后网格中的黑点…

集合求交,51nod1818,根号分治

正题 Portal 这题发现总的元素数量不超过M&#xff0c;所以我们可以对一个集合内的元素数量来根号分治。 当询问的时&#xff0c;暴力维护每一个权值以位置为关键字的线段树&#xff08;动态开点&#xff09;&#xff0c;这部分的时间复杂度是。 当询问的时&#xff0c;我们对于…

HDU 1818 RP problem解题报告

一开始&#xff0c;我想的是建一个矩阵&#xff0c;然后尽量多的乘&#xff0c;做快速幂&#xff0c;做到后面会自然稳定&#xff0c;但是没去实现&#xff0c;考虑到一个问题&#xff0c;每个点的出度不一样&#xff0c;所以不是简单的求和&#xff0c;而且后面改边又要做矩阵…

BZOJ 1818: [Cqoi2010]内部白点

Description 如果一个点左右上下都有黑点&#xff0c;那么这个点也会变成黑点&#xff0c;问最后有多少个黑点\(n\leqslant 10^5\). Solution 扫描线. 显然变化后的点并不会产生新点&#xff0c;因为他的产生就需要他上下左右有点。 可以把他们转化成一些横纵的互不相交的直线.…

eoj1818 dijkstra求最短路及其条数

求出有n(1 < n < 100)个结点有向图中&#xff0c;结点1到结点n的最短路径&#xff0c;以及最短路径的条数。 Input 第一行有2个整数n和m( 0 < m < 3000)&#xff0c;接下来m行每行有三个整数u,v,w结点u到v之间有一条权为w的边(w<100000)。 Output 输出只有一…