区间dp+ 滚动数组uva1632

使用网分对晶体ESR/L1/C1/C0进行测量计算 Use R&S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M... 阅读详情

转自:http://www.cnblogs.com/20143605--pcx/p/5200518.html


注意什么是状态,因为每次都要知道所处的位置,所以有0, 1 来表示在左边还是右边,,  对于判断会不会时间超限,就用本身的子结构(自然表示的时间)来判断。。

还有这个地方就像是背包一样可以用滚动数组优化,因为这个地方也是只由上一个状态决定,,所以用  ^  自然表示  奇偶性。



#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<stack>
#include<cmath>
#include<map>
#include<vector>
#define ll long long
#define inf 0x3f3f3f3f
#define INF 1000000000
#define bug1 cout<<"bug1"<<endl;
#define bug2 cout<<"bug2"<<endl;
#define bug3 cout<<"bug3"<<endl;
using namespace std;

const int maxn=10005;
int dp[2][maxn][2];
int x[maxn],t[maxn];
int main()
{   int n;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;++i){
            scanf("%d%d",x+i,t+i);
            dp[1][i][0]=dp[1][i][1]=dp[0][i][0]=dp[0][i][1]=(t[i]>0)?0:INF;
        }

        for(int i=n-2;i>=0;--i){
            for(int j=i+1;j<n;++j){
                dp[i&1][j][0]=dp[i&1][j][1]=inf;
                if(dp[(i&1)^1][j][0]!=inf&&dp[(i&1)^1][j][0]+x[i+1]-x[i]<t[i])
                    dp[i&1][j][0]=min(dp[i&1][j][0],dp[(i&1)^1][j][0]+x[i+1]-x[i]);
                if(dp[(i&1)^1][j][1]!=inf&&dp[(i&1)^1][j][1]+x[j]-x[i]<t[i])
                    dp[i&1][j][0]=min(dp[i&1][j][0],dp[(i&1)^1][j][1]+x[j]-x[i]);
                if(dp[i&1][j-1][0]!=inf&&dp[i&1][j-1][0]+x[j]-x[i]<t[j])
                    dp[i&1][j][1]=min(dp[i&1][j][1],dp[i&1][j-1][0]+x[j]-x[i]);
                if(dp[i&1][j-1][1]!=inf&&dp[i&1][j-1][1]+x[j]-x[j-1]<t[j])
                    dp[i&1][j][1]=min(dp[i&1][j][1],dp[i&1][j-1][1]+x[j]-x[j-1]);
            }
        }
        if(dp[0][n-1][1]==inf&&dp[0][n-1][0]==inf) printf("No solution\n");
        else printf("%d\n",min(dp[0][n-1][0],dp[0][n-1][1]));
    }
    return 0;
}


【007】C++编程必知:原码、补码、反码的全面解读 计算机存储的是数据的补码。原码:计算机中对数字的二进制定点表示方法。比如123的原码是0111 1011。无符号数:原码=反码=补码。有符号数:要分正数和负数,正数的最高位为0,负数的最高位为1。其中,正数的原码、反码、补码都是相同的;负数的反码等于原码的符号数(最高位)不变,其他位取反;补码等于反码+1。比如:-123的原码是1111 1011,反码为1000 0100,补码为1000 0101。原码、补码和反码都是用于计算机表示有符号整数的方法。 阅读详情

相关推荐

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 310

poj1159(区间dp+滚动数组)

题目链接 题意:给你一个字符串,可以在字符串任意位置添加字符,问最少需要添加多少个字符,使得原串变成回文串 解法一: 这是一个回文串问题,显然可以用区间dp来解。 这里有两个注意的地方: 由于状态转移时要用到i+1的状态,所以i从后往前遍历 数目范围是5000,开一个5000*5000的二维数组会爆,所以需要用到滚动数组 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<

weixin_51619205的博客 396

【SPI-NAND】Linux驱动移植实战:从规格书解析到内核适配

本文详细解析了SPI-NAND Flash的Linux驱动移植实战,从规格书关键参数提取到内核MTD子系统适配。内容涵盖存储结构解析、命令集映射、设备树配置及厂商驱动开发,特别强调ECC校验、坏块管理等NAND特性处理,并提供了性能优化与测试验证的实用技巧。

weixin_27076351的博客 351

uva 1632——Alibaba

题意:直线上有n个点,其中第i个点的坐标是xi,且他会在di秒后消失,阿里巴巴可以从任意位置出发,求访问过所有节点的最短时间,不能输出-1; 思路:01背包问题,dp(i,j,0)表示遍历过i,j区间且最终落在i点的最短时间,dp(i,j,1)是落在j点,然后找到从i和j到达当前的最优值,到达之前点消失则置为INF; code: #include using namespa

坚持不懈 729

Halcon实战:5分钟搞定自定义直线卡尺工具(附完整代码下载)

本文详细介绍了如何使用Halcon快速开发自定义直线卡尺工具,通过交互式ROI绘制、边缘检测和直线拟合三个核心函数,实现高效工业视觉检测。文章包含完整代码下载,帮助开发者在5分钟内掌握这一实用工具的开发技巧,提升直线检测的精度和效率。

perl8的博客 250

Cursor+Playwright MCP实战:如何用自然语言一键生成UI自动化测试脚本

本文探讨了如何利用Cursor与Playwright MCP实现自然语言驱动的UI自动化测试脚本生成。通过智能IDE与浏览器自动化协议的结合,开发者可以高效创建稳定的测试脚本,显著提升测试效率与维护性。重点介绍了MCP架构的优势、项目结构最佳实践及团队协作规范,为自动化测试带来革命性改进。

k8l9m0n的博客 441

uva 1632 阿里巴巴

大意:直线上有n个点,其中第i个点的坐标为xi,且它会在di秒后消失。Alibaba可以从直线任意位置出发,求访问玩所有点的最短时间,无解输出No solution. 思路:对所有点按照坐标从小到大排序,发现访问过的点一定是一个连续区间,用d[i][j][0]表示访问了区间(i, j),Alibaba在左端点,d[i][j][1]表示访问了区间(i, j),Alibaba在右端点。 // C

chenhongwei6447的博客 379

第十二段:基于env的重用

现代芯片的验证通常分为两个层次, 一是模块级别( block level, 也称为IP级别、 unit级别) 验证, 二是芯片级别( 也称为SOC级别) 验证。 一个大的芯片在开发时, 是分成多个小的模块来开发的。 每个模块开发一套独立的验证环境, 通常每个模块有 一个专门的验证人员负责。 当在模块级别验证完成后, 需要做整个系统的验证。 假设某个系统分成了三个模块,如下图: 这三个模块在模块级别验证时, 分别有自己的driver和s...

年糕的博客 422

poj 1141(区间dp 滚动数组)

题意:有M个人,我们任选3个人组成一个队伍,可以组成C(M,3)种队伍,给出这些队伍之间的胜率。现在,需要你战胜N个队伍。战胜该队伍,你可选择用战胜的队伍来替换你现有的队伍。现在要求战胜这N个队伍的最大概率。 思路:因为对于战胜的队伍,我们可以选择替换还是不替换,这就像01背包。因为N非常大,我们需要考虑O(N)的递推方程。 如果我们从前向后递推,会存在一个后效性的问题,

黑码 641

优秀的 Verilog/FPGA开源项目介绍(六)- MIPI

MIPI的协议我就不详细介绍了(可以查看<下面的二维码>),这里和开源方案比较接近的即使FPGA实现MIPI物理层(DPHY)中电气属性相关的几种方案:MIPI DPHY RX...

OpenFPGA的博客 4457

基于STM32的六足机器人控制系统设计(项目资料ID:27)

六足机器人控制系统综合分析其结构、步态与控制算法,融合云端服务、Wi-Fi、蓝牙、语音识别及手势识别等多种技术,设计了多元化控制模式,并针对不同应用场景提出了差异化的构建方案。系统硬件采用分层设计,分为主控板与舵机控制板:主控板以 STM32F103VET6 为核心,负责各类控制模式的数据处理与状态显示;舵机控制板采用 STM32F103R8T6,专注于舵机角度的精确控制,两板通过串口实现数据交互。

以培养嵌入式工程师为己任 1万+

C - Palindrome——区间DP,巧妙的利用滚动数组

C - Palindrome Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description A palindrome is a symmetrical string, that is, a string read ident

你那么爱笑,家里人知道吗? 563

C# 的 Dapper 库高级进阶:刨根问底的深度解析

通过今天的探索,我们了解了 Dapper 的一些高级功能,包括如何处理复杂的查询、执行批量操作以及如何优化性能。希望这篇深入浅出的文章能帮助你在实际项目中更好地运用 Dapper!🎈好了,小伙伴们,今天的分享就到这里啦!如果你有任何疑问或者想要分享自己的经验,请在评论区留言。我们下次再见!👋上述示例代码仅供参考,实际使用时请根据项目需求进行适当调整。✨Dapper 官方文档Dapper 性能优化指南Dapper 动态参数使用来同时执行多个查询。利用Execute和Query方法来简化 SQL 调用。

java专栏 813

Alibaba UVA - 1632(区间dp+滚动数组)

题目链接:点击打开链接 题目思路:有点久没写区间dp了,居然在纠结选哪一个作为起点,被自己蠢死,对于这道题来说根本不用关心这个问题,因为区间dp本来就枚举了每一个从小到大的区间,想通这一点,剩下的就很无脑了,唯一需要学习的就是这里用滚动数组优化内存的方法,对于区间dp我们可以发现每一次转移都这跟上一次区间长度有关,也就是用区间长度的递增来递推的,那么就很容易知道前面的长度基本上没什么用了,所以可

w571523631的博客 277

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UVA-1632 Alibaba (区间DP+滚动数组)

题目大意:在一条直线上有n件珠宝,已知每件珠宝的位置,并且第 i 件珠宝在 ti 时刻就消失,问能否将所有的珠宝收集起来?如果能,求出最短时间。搜集能瞬间完成。 题目分析:区间DP。dp(i,j,0)表示搜集区间(i,j)并且停留在左端所需的最短时间,dp(i,j,1)表示搜集区间(i,j)并且停留在右端所需的最短时间。状态转移方程为 dp(i,j,0)=min(dp(i+1,j,0...

weixin_30332241的博客 128

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

UVa 1632 Alibaba

该问题要求在一维直线上收集所有宝藏,每个宝藏有位置和截止时间约束。采用动态规划方法,定义状态dp[i][j][0/1]表示收集区间[i,j]的宝藏且位于左/右端点的最小时间。算法步骤包括按位置排序、初始化单点区间、区间扩展DP转移并检查时间约束。最终时间复杂度O(n²),空间复杂度O(n)。若无法满足所有截止时间则输出无解,否则输出最小完成时间。

寂静山林 868

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

UVA - 1632 Alibaba (区间dp+常数优化)

题目链接 设$dp[l][r][p]$为走完区间$[l,r]$,在端点$p$时所需的最短时间($p=0$代表在左端点,$p=1$代表在右端点) 根据题意显然有状态转移方程$\left\{\begin{matrix}dp[l][r][0]=min(dp[l+1][r][0]+x[l+1]-x[l],dp[l+1][r][1]+x[r]-x[l]);\\ dp[l][r][1]=min(dp[l]...

weixin_30325971的博客 188

uva 1632 Alibaba

题目大意:lrj306页 习题9-8 想了很久,区间DP的状态意识到了,但是不知道这个怎么和deadline联系起来,最后看别人的解题报告,恍然大悟,原来如此,顺便练了一下滚动数组,还是很有收获的。 题目链接:https://vjudge.net/problem/UVA-1632 第一份代码没有使用滚动数组,第二份使用了滚动数组,第二份比第一份的速度要上不少。 #include #

算法虐我千百遍 547

Alibaba UVa 1632

动态规划的思想。同时需要注意一点,不论我们从哪一个点开始进行操作,任意时候为了得到最优的结果,那么我们操作的肯定是一个连续的区间。所以在这道题目当中我们就可以使用滚动数组来进行操作,并且能够优化内存。代码中 dp[i][j][k]其中i用来区分是当前待更新的数组还是上一次记录的状态数组,j代表着当前区间的左端点,k代表着当前的位置是在区间的左边还是右边,具体实现见如下代码: #include

zju2016的博客 306

UVA-1632 Alibaba (区间DP)

Alibaba the famous character of our childhood stories would like to be immortal in order to keepbringing happiness to children. In order to rich this status he needs to prove that he is still able t

lljjccsskk的专栏 414

UVa1632 dp 滚动数组 紫书习题9-8

dp[i][j][0]表示 走完区间[i,j]并且最后在i点的最小时间 dp[i][j][1]表示 走完区间[i,j]并且最后在j点的最小时间 dp(i,j,0)=min(dp(i+1,j,0)+t(i+1)-t(i),dp(i+1,j1,)+t(j)-t(i)) dp(i,j,1)=min(dp(i,j-1,0)+t(j)-t(i),dp(i,j-1,1)+t(j)-t(j-1))。 递推

CoderFly的博客 635

阿里巴巴 Alibaba

UVA1632 这是一个区间动态规划 定义:dp[i][j][0]dp[i][j][0]dp[i][j][0]为阿里巴巴收集完iii到jjj的宝藏后位于iii位置的最短耗时,dp[i][j][1]dp[i][j][1]dp[i][j][1]为阿里巴巴收集完iii到jjj的宝藏后位于jjj位置的最短耗时。(在最短耗时情况下,阿里巴巴收集完某个区间的宝藏后只能位于区间的边缘,不可能在内部,因为在内部的...

蒟蒻的博客 3231

UVA 1632-Alibaba(DP)

题目大意:在一条直线上有n(n a[i]表示第i个宝藏的位置,b[i]表示消失的时间。 首先注意到对于任意区间(i,j),拿完所有宝藏之后必然在i或j两者之一。所以用d[i][j][0]表示拿完第i个到第j个之间的所有宝藏,且最后位于i,用d[i][j][1]表示拿完第i个到第j个之间的所有宝藏且最后位于j。 程序用滚动数组优化内存消耗,递推是按照区间的宽度递增的顺序,所以也是按照这

dilemma的专栏 2544

需要再写一遍的题

二。codeforce 791 D 线段树维护矩阵快速幂。 代码很长,很锻炼写代码的能力,找个时间补一下。 六 CodeForces 311B Cats Transport || csu1693 斜率dp优化,不是很了解斜率优化,目前只能做到看懂别人代码的程度。。。。。 即使知道写的方法我也很难在不看标程的情况下实现它。 学习了斜率DP后再补(md,最近一直摸鱼,已经欠了这么多题了...

lifelike 414

LCS滚动数组解法

题意描述求两个字符串的最长公共子序列的长度思路:这是一个经典的LCS问题,动态转移方程如下,设有字符串X和字符串Y,dp[i,j]表示的是X的前i个字符与Y的前j个字符的最长公共子序列长度。如果X[i]==Y[j],那么这个字符与之前的LCS一定可以构成一个新的LCS;如果X[i]!=Y[j],则分别考查dp[i-1][j]、dp[i][j-1],选择其中较大者为LCS。即为:if(i==0||j...

FK103的专栏 1090

POJ3046 多重集组合数 dp+前缀和优化+滚动数组 (包含类似优化的小总结)

题意 T种数,每种有a[t]个,总共有A个数。问你取其中X个数作为子集,有多少种这样的子集。计算L<=X<=H的子集数之和,结果mod 1000000 1<=T<=1000, 1<=a[t] <= 100,即1 <= A <= 100000, L<=H<=A 思路 基本想法:可以类比为把求max改为求sum的多重背包,所以基本的递推关系很好写,dp(i,j) = sum dp(i-1)(j-k) 其

luke2834的专栏 1722
上一篇: uva1632 dp
下一篇: uva242, 完全背包||记忆化搜索,(类似广工校赛的一道题)
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值