POJ:1738

poj 1738--石子合并 [GarsiaWachs算法] 石子合并算是一道比较经典的题目了,这里讨论一下朴素的动态规划和GarsiaWachs算法。最简单的就区间动态规划了。设f(i, j)(i (需要枚举一个p)以区间长度为阶段,时间复杂度为三次方的。一个对决策的优化,可以把转移优化为O(1)的。设g(i, j)为f(i, j)枚举的决策最优的p,那么显然有:这样子枚举的p的范围就大大缩小了,p的取值范围是比较小的,只有一两个左右。然而,该算法的时间和 阅读详情

楼教主男人八题第二题,5W个叶子节点合并最小费用

最小权费和二叉树:GW算法

#include <cstdio>
#include <cstring>

using namespace std;

#define maxn 50050
#define maxV 1000000001

int S = 1;
int L = 0;
long long V[maxn];
int LAST[maxn];
int NEXT[maxn];

int main(){
    int n;
    while(scanf("%d",&n)!=EOF && n){
        memset(V,0,sizeof(V));
        memset(LAST,0,sizeof(LAST));
        memset(NEXT,0,sizeof(NEXT));
        L = n;
        S = 1;
        for(int i=1;i<=L;i++){
            scanf("%lld",&V[i]);
            LAST[i] = i-1;
            NEXT[i] = i+1;
        }
        NEXT[L] = 0;
        V[0] = maxV;
        V[L+1] = maxV;
        long long ans = 0;
        int st = S;
        while(L>2){
            int i = st;
            while(i!=0){
                int a = LAST[i];
                int b = NEXT[i];
                if(V[a] <= V[b]){
                    V[a] += V[i];
                    ans += V[a];
                    NEXT[a] = b;
                    LAST[b] = a;
                    i = a;
                    break;
                }
                i = NEXT[i];
            }
            L--;
            int j = i;
            while(j!=0){
                int j_last = LAST[j];
                if(V[j_last] >= V[i]){
                    if(i==j) break;
                    int a = LAST[i];
                    int b = NEXT[i];
                    NEXT[a] = b;
                    LAST[b] = a;
                    NEXT[i] = j;
                    LAST[i] = j_last;
                    LAST[j] = i;
                    NEXT[j_last] = i;
                    if(j_last == 0) S = i;
                    break;
                }
                j = LAST[j];
            }
            for(int k=0;k<2;k++){
                if(i==S) break;
                i = LAST[i];
            }
            st = i;
        }
        if(L==2) printf("%lld\n",ans+V[S]+V[NEXT[S]]);
        if(L==1) printf("0\n");
    }
    return 0;
}
poj1738 An old Stone Game 石子合并(归并) GarsiaWachs算法 Description There is an old stone game.At the beginning of the game the player picks n(1<=n<=50000) piles of stones in a line. The goal is to merge the stones in one pile observing the following ru 阅读详情

相关推荐

Coze平台智能体开发实战:打造测试工程师的AI助手

智能体是具备特定身份和能力的AI实体,由大语言模型(LLM)驱动,并通过插件、知识库和工作流扩展其能力。明确的角色定位:可以设定特定身份和专业领域扩展能力:通过插件连接外部工具和服务记忆能力:通过知识库存储和检索专属信息流程化处理:通过工作流执行复杂多步任务通过Coze平台创建测试工程师智能体,可以显著提升测试效率和质量。明确的角色定位:聚焦测试工程师的实际需求丰富的知识库:提供准确的领域知识支持合适的工具集成:通过插件连接现有工具链持续迭代优化:根据反馈不断改进智能体行为自动化测试生成。

hogwarts_beibei的博客 1005

POJ 1738 An old Stone Game(石子合并)

题目链接:http://poj.org/problem?id=1738 题意:给出n堆石子,每次合并相邻的两堆石子,代价为这两堆石子的重量和,把所有石子合并为一堆,求最小代价。 思路:原始的DP方程为:f[i][j]=min(f[i][k]+f[k+1][j]+sum[j]-sum[i-1])。这个方法在这里是超时的。可以ac的解法是这样,道理目前不清楚: (1)每次找到一个最小的i使得A[...

weixin_34255793的博客 178

深入瑞芯微SDK:手把手解析Uboot、Kernel到Rootfs的镜像生成与烧录

本文深入解析瑞芯微SDK中从Uboot、Kernel到Rootfs的镜像生成与烧录全流程,揭示编译背后的技术细节。通过详细分析SDK架构、镜像生成流水线、分区表定制、Rootfs构建及烧录科学,帮助开发者从会编译进阶到懂原理,掌握系统级开发的关键技术。

weixin_29193359的博客 269

POJ_1738(GarsiaWachs算法)

POJ_1738,GarsiaWachs算法,代码有所参考。 #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> using namespace std; int n,ans,stone_num; in...

宫·商的博客 310

具身智能ACT模型在lerobot机械臂上的实践与优化

本文详细介绍了如何在低成本lerobot机械臂上实践与优化具身智能ACT模型。从环境搭建、数据采集到模型原理与代码实战,提供了完整的入门指南。重点分享了通过数据增强、混合开源数据集及模型微调等策略,有效提升模型在抓取放置任务中的泛化能力与鲁棒性,为机器人学习爱好者提供了宝贵的实战经验。

weixin_29081703的博客 168

Stata森林图进阶:个性化定制与高级技巧

本文详细介绍了Stata森林图的进阶技巧,包括个性化定制与高级应用。通过meta分析工具如metan命令,用户可以优化字体、颜色、坐标轴等视觉元素,提升森林图的专业性和可读性。文章还提供了黑白印刷设置、高分辨率导出等实用技巧,帮助科研人员制作符合学术出版要求的森林图。

ios99的博客 254

POJ 1738 石子合并2 GarsiaWachs算法

石子合并(GarsiaWachs算法) 只能用该算法过!!! 详解看代码 1 //#pragma comment(linker, "/STACK:167772160")//手动扩栈~~~~hdu 用c++交 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> ...

weixin_30530339的博客 317

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

POJ 1738 An old Stone Game 石子合并之GarsiaWachs算法

DP

NeighThorn的博客 1056

通达信K线主图指标公式实战:如何用颜色标记快速识别涨停与炸板信号

本文详细介绍了如何利用通达信K线主图指标公式,通过颜色标记快速识别涨停与炸板等关键信号。通过实战拆解公式源码,手把手教您构建直观的“视觉交易系统”,将复杂的K线形态转化为醒目的颜色信号,帮助投资者高效聚焦机会与风险,提升技术分析效率。

weixin_29302047的博客 1745

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

努力让自己发光,对的人才能迎着光而来 101万+

POJ 1738:An old Stone Game 石子归并(GarsiaWachs算法)

An old Stone Game Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 2981   Accepted: 796 Description There is an old stone game.At the beginning of the game

1462

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图、天地图)

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图)

1万+

题解报告:poj 1738 An old Stone Game(区间dp)

Description There is an old stone game.At the beginning of the game the player picks n(1<=n<=50000) piles of stones in a line. The goal is to merge the stones in one pile observing the fol...

weixin_30439131的博客 194

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

poj 1738 石子合并升级版 好题!!!

#include #include #include using namespace std; const int maxn=50005; int a[maxn],n,cnt,i,res; void deal(int k) { int tmp=a[k]+a[k-1],j; res+=tmp; for(int i=k;i<cnt-1;i++) a[i]=a[i

fanbaobao829的博客 338

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

男人八题其二(POJ 1738) 石子合并 GarsiaWachs算法

为公主殿下而战!

Kiritow的学园 1327

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【poj1738】 An old Stone Game

http://poj.org/problem?id=1738(题目链接) 题意   一排n堆石子,合并两堆石子的代价为两堆石子总数之和。问将所有石子合并为一堆所需要的最小代价。 Solution   本来想用刚学的四边形不等式练练手的,没想到n的范围竟然是50000,数组都开不下啊。。只好去看了下那个不明觉厉的GarsiaWachs。具体做法参见:http://blog.youkuaiyun.com...

weixin_30596343的博客 127

POJ 1738

There is an old stone game.At the beginning of the game the player picks n(1 At each step of the game,the player can merge two adjoining piles to a new pile.The score is the number of stones in the n

白黑菜的博客 659

poj 1738

//#include //#include //#include // //using namespace std; //const int N = 50005; // //int stone[N]; //int n,t,ans; // //void combine(int k) //{ //    int tmp = stone[k] + stone[k-1];

u013570474的专栏 409

POJ1738

An old Stone Game Time Limit: 5000MS   Memory Limit: 30000K Total Submissions: 3686   Accepted: 1040 Description There is an old stone game.At the beginning of the game the

Dave_lzw的博客 561

poj 1738 取石子游戏 区间dpgarsiawachs算法

http://poj.org/problem?id=1738 Description There is an old stone game.At the beginning of the game the player picks n(1 At each step of the game,the player can merge two adjoining piles to a ne

ACM,再见! 904

poj 1738 dp 石子归并

这是一道区间类型的dp问题 令f[i,j]表示归并第i个数到第j数的最小代价,sum[i,j]表示第i个数到第j个数的和,这个可以事先计算出来。sum[i,j]可以在O(1)的时间内算出. 容易的到以下的动态转移方程: 阶段:以归并石子的长度为阶段,一共有n-1个阶段。 状态:每个阶段有多少堆石子要归并,当归并长度为2时,有n-1个状态; 当归并长度为3时,有n-2个状态; 当

u010840444的专栏 741

男人不易八题之POJ 1738 AN OLD STONE GAME解题报告

原题目传送门: http://poj.org/problem?id=1738 题目大意是有n堆石子放成一行,石子堆有各自的重量。要求把这些石子合并为一堆,规则为合并相邻的两堆石子,得分为合并后的石子堆重量,且得分累加。现求最小总得分。 很容易想到一种区间型dp的思路,可惜n的范围有点大,n 所以就发现了一种新的算法——GarsiaWachs算法。 大概意思就是在石子堆a1,a2,…,an中

C20161009的博客 974

poj 1738 石子合并(区间DP)

poj 1738 石子合并(区间DP)

for me ``the best 634
上一篇: windows:用bat脚本删除指定后缀的文件
下一篇: Scrapy:测试代理ip
ShellDawn
博客等级 码龄10年 75粉丝 756原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值