uva 10118 - Free Candies-动态规划

uva 10118 Free Candies 出现了一点问题,题目不能复制过来,主要的大意是有4堆糖果,有一个篮子,这个篮子最多可以装5个糖果,从4堆糖果堆的顶部每次取一个糖果,如果篮子中有颜色相同的一对糖果那么就可以装进口袋里,否则口袋达到5个后就结束游戏。 https://vjudge.net/problem/UVA-10118 上代码: #include #include #include #define max(a,b) 阅读详情
//
//  main.cpp
//  uva 10118 - Free Candies-动态规划
/*
 这一题是多阶段决策问题.另外注意的就是状态压缩。即使用二进制表示当前的pocket具有的糖果的颜色。
 在每一步选择哪一个管道决定了下一步。
 我们设d[i][j][k][l] 表示依次从第一,第二个管道,第三个管道,第四个管道,当前已经到达的位置,剩下可以获得的candies对数。
 这里ans 表示d[i][j][k][l].
 则若选择从第一个管道取一个    ans = max(ans ,d[i+1][j][k][l]  +add ) .add表示从第一个管道选择一个candy的话,是否使得pocket具有相同的颜色的candy.
 */
#include <iostream>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <cstdio>
#define ll long long
using namespace std ;
int pile[4][50] ;
int  n ;

int d[45][45][45][45] ;

int dp(int  i , int j , int k , int l ,int  poc)
{
    int& ans =d[i][j][k][l];
    if (ans>=0) {
        return ans ;
    }
    else{
        int num = 0,t,add ;
        for(int i = 0 ; i < 20 ; i++)
        {
            if(poc&(1 << i )) num++ ;
        }
        
        if(num ==5)
        {
            ans = 0 ;
            return  0 ;
        }
        else{
            ans = 0;
        }
        if(i <n ) {
             t = poc^(1<<(pile[0][i+1]-1)) ;
             add = poc > t ? 1:0 ;
            ans = max(ans ,dp(i+1, j, k, l,t) + add) ;
        }
        if(j < n ) {
             t = poc^(1<<(pile[1][j+1]-1)) ;
             add = poc > t ? 1:0 ;
            ans = max(ans ,dp(i, j+1, k, l,t) + add) ;
        }if(k <n ) {
             t = poc^(1<<(pile[2][k+1]-1)) ;
             add = poc > t ? 1:0 ;
            ans = max(ans ,dp(i, j, k+1, l,t) + add) ;
        }if(l <n ) {
             t = poc^(1<<(pile[3][l+1]-1)) ;
             add = poc > t ? 1:0 ;
            ans = max(ans ,dp(i, j, k, l+1,t) + add) ;
        }
        return ans;
    }
}

int main(int argc, const char * argv[]) {
    while (scanf("%d" ,&n) , n ) {
        for (int i = 1; i <= n ; i++) {
            scanf("%d%d%d%d" ,&pile[0][i] ,&pile[1][i] ,&pile[2][i] ,&pile[3][i]) ;
        }
        memset(d, -1, sizeof(d)) ;
        cout<<dp(0, 0, 0, 0, 0)<<endl ;
    }
    return 0;
}

【DP 训练】Free Candies, UVa 10118 #include using namespace std; int n,dp[50][50][50][50],pile[5][50],top[5]; int dfs(int cur,int status) { if(cur==5)return 0; int& ans = dp[top[1]][top[2]][top[3]][top[4]]; if(ans!=-1)return ans; a 阅读详情

相关推荐

深入解析组合逻辑环(combinational loop)的成因与解决方案

本文深入解析了数字电路设计中组合逻辑环(combinational loop)的成因与危害。通过边沿检测和中断轮询(round_robin)仲裁器等实例,揭示了代码如何意外形成环路,并对比了插入触发器、重构逻辑以及状态机思维三种核心解决方案,帮助硬件工程师从根本上避免这一常见设计陷阱,确保电路稳定可靠。

weixin_28278377的博客 313

100道动态规划——5 UVA 10118 Free Candies 记忆化搜索 以及 证明状态

好吧,这道题目我没想出来。。。这道题我觉得和我之前做过的一道题目有点像,100道动态规划3 UVA 1625 http://blog.youkuaiyun.com/good_night_sion_/article/details/52918040   都是从顶部拿一些东西出来,只不过是代价函数不同而已。根据那道题目的思想,这道题的状态定义至少是4维的——需要把4个堆的顶部拿了多少个元素的这个状态包含进来。然后

Sion 626

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 618

【训练题29:动态规划+滚动数组】Free Candies | UVA10118 | HDU 1514

Free Candies | HDU 1514 难度 −317628-\frac{317}{628}−628317​ 看紫书上有→找到UVA→VJ+UVAOJ交不上→找到HDU原题看紫书上有\rightarrow找到UVA\rightarrow VJ+UVAOJ交不上\rightarrow找到HDU原题看紫书上有→找到UVA→VJ+UVAOJ交不上→找到HDU原题 ??? 题意 给定四个堆,每堆的糖果你只能从顶开始拿。 给你一个篮子,篮子最多装五个糖果。 如果篮子其中有两个糖果编号一样,则你获得一堆糖果,

溢流眼泪的博客 240

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间

scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。

2401_84140653的博客 1200

手把手教你用VSCode+SDL在Ubuntu上跑LVGL8.2模拟器(附插件清单)

本文详细介绍了在Ubuntu系统上使用VSCode和SDL库搭建LVGL8.2模拟器环境的完整流程,特别适合嵌入式开发者(如全志F1C100s平台)进行UI设计验证。从环境配置、项目编译到VSCode深度集成,提供了实用技巧和常见问题解决方案,帮助开发者实现'先模拟后真机'的高效开发模式。

weixin_33737134的博客 358

uva 10118 Free Candies+记忆化搜索

uva 10118 Free Candies 解决方案:dp思路为:dp[a1][a2][a3][a4]表示当取四堆的a1、a2、a3、a4之后最多获得多少对糖,由于只有20种糖,可以开一个20大的数组表示当前篮子中的存在不存在这种糖(只存不同的糖,相同的收回口袋),用cnt来记录篮子中的糖的个数,若cnt==5,且没有相同的糖,则dp[a1][a2][a3][a4]=0,表示当前状态无法再取,

u012870383的专栏 673

python 爬虫 xpath 存储到数据库

参考

我是张先生 1289

Free Candies UVA - 10118

题目:B - Free Candies  UVA - 10118  题意: 桌上有4堆糖果,每堆糖果高度不超过40,每颗糖果有一种颜色(一共20种,1,2,3...,20), 有一个篮子,一开始是空的,每当里面装有两颗颜色相同的糖果时,就可以从篮子里拿出这一对糖果。 如果篮子里的糖果数量为5个并且不能再拿时,篮子充满,游戏结束。问最多能拿走多少对糖果。 糖果堆上的所有糖果拿光了也算结束 思路:...

Qtt110的博客 278

在 SAP S/4HANA 本地部署和私有云里预览 RAP Travel App:为什么 ADT 发不出去,以及如何用 /IWFND/V4_ADMIN 正确发布 OData V4 Service

在SAP S/4HANA On-Premise/Private Cloud环境中,通过ADT直接发布RAP服务的本地端点常会失效。这是因为系统治理策略要求必须通过SAP Gateway Foundation(事务码/IWFND/V4_ADMIN)发布Service Group,而非开发者本机测试模式。本文详解了该流程的必要性:Service Group是OData V4服务的发布单元,涉及后端登记(/IWBEP/V4_ADMIN)和前端发布(/IWFND/V4_ADMIN)两个环节。提供了从ADT跳转SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 269

智能筛选栏 SmartFilterBar 全面解析与实战指南

SmartFilterBar 把复杂的检索界面“模板化”,让开发者聚焦业务逻辑与后端数据质量,而非 UI 小细节。通过精准运用 CDS 注解与 OData 元数据,它能在几毫秒内拼装出专业级筛选体验;结合事件钩子与控制配置,又足以满足极端个性化需求。拥抱 SmartFilterBar,意味着在 Fiori 生态中以最少代码赢得最快价值交付——这正是现代企业应用开发追求的极致效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 404

UVA 10118 Free Candies

https://vjudge.net/problem/UVA-10118 题目 桌上有4堆糖果,每堆有$N$($N\leqslant 40$)颗。有个熊孩子拿了个可以装5颗糖的篮子,开始玩无聊的装糖游戏。他每次选一堆糖,并把这堆最上面的糖装进篮子里面,如果篮子里有两个种类相同的糖,那么他就把这两个糖装进自己的口袋里。给出四堆糖中每一颗糖的种类(1..20),问最多能装多少对糖。 题...

193

PostgreSQL:Patroni 高可用架构,基于etcd的自动故障转移集群

本文详细介绍了基于Patroni和etcd构建PostgreSQL高可用集群的方案。Patroni作为外部守护进程,通过etcd分布式协调服务实现自动故障转移、主节点选举等关键功能,弥补了PostgreSQL原生缺乏自动故障转移的不足。文章涵盖核心架构(3节点PG+3节点etcd)、环境规划、etcd集群部署(包括配置验证)以及Patroni安装配置的关键步骤,特别强调了Patroni自动初始化PG实例、配置同步复制等生产级特性。该方案通过外部组件协同工作,在不修改PG源码的情况下实现了生产环境所需的高可用

数据知道的博客 2490

uva10118 Free Candies(DP)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=11&page=show_problem&problem=1059 此题的状态即为4个栈的顶部元素的位置 #include <iostream> #includ...

akk99296的博客 172

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

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

D - Free Candies UVA - 10118

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1059 题目大意:有四堆糖果,称矩阵排列,一共有n行,只能在每一堆的最上方取糖果,病放入篮子中,如果篮子中有相同的颜色的糖果则可以抵消,篮子中最多能盛放5个糖果...

baochuo7869的博客 230

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Uva 10118】Free Candies

【Link】: 【Description】 有4堆书; 每本书编号从1..20 每堆书都是N本; 然后每次只能从任意一堆的堆顶拿一本书装到自己的口袋里; 你的口袋最多容纳5本书; 当你的口袋里有两本一样的书的时候,那一对书就归你了; 但是一旦你的口袋装满了,就不能再装书了;游戏停止 问你最多能拿多少对书。 【Solution】 比较明显...

AWCXV 99

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UVA10118Free Candies

一开始看数据范围不大想直接暴力搜索,仔细考虑搜索的状态会有很多重复,搜索量仍然很大。 这就是传说中的记忆化搜索。。。number数组表示每一列取了多少个数,ans每一列取得相应数字个数时的最优解。 第九章前面的代码用了引用,在记忆化搜索里面很方便。这个题还要注意搜索的时候要回溯,搜不下去了要尝试另一种。 1 #include <stdio.h> 2 #incl...

188

UVA - 10118 Free Candies 递归记忆化搜索

问题 问题是给四个糖果堆(高度为n,n<=40),每次可以从任意一个堆的顶部取一个糖果放在容量为5的篮子中,若篮子中有两个颜色相同,就可以拿走,求最多可以拿走多少个糖果对 分析 状态是dp[a][b][c][d],a,b,c,d分别是从四个堆中拿走的的糖果个数,dp[0][0][0][0]是还没取的时候,可以得到的最多糖果对数量,dp[a][b][c][d]是已经取了a,b,c,d的时候还能...

zpf1998的博客 321

UVA-10118-Free Candies

链接:https://vjudge.net/problem/UVA-10118 题意: 给你四个柱子,每个柱子有n个不同颜色的糖果。 每次只能取柱子顶的一个糖果。 手上最多抓5个糖果。但是手上每有2个相同的的糖果的时候可以将这一对糖果放到口袋。 求最多能放几对糖果到口袋。 思路: 记忆化搜索。dp。 dp[a][b][c][d]记录第一个柱子取a个,第二个柱子取b个。。。。的能得到...

weixin_33671935的博客 195

uva 10118 ——Free Candies

题意:桌子上有4 堆糖果,要从这四堆糖果中取出5个,如果5个中有相同的颜色则把他们拿出来放到口袋,求最多放多少糖果。 思路:DAG最长路问题。需要把问题转化成DAG的问题,以个数作为转移的状态,当达到5的时候为0,否则就是选当前的和不选当前的最大值。 code: #include using namespace std; using namespace std; typ

坚持不懈 554

免费糖果 Free Candies

UVA10118 定义: dp[a][b][c][d]dp[a][b][c][d]dp[a][b][c][d]为第0列取了aaa颗糖果,第1列bbb颗,第二列ccc颗,第三列ddd后剩下的糖果还能最多再装进口袋多少个。那么答案就是dp[0][0][0][0]dp[0][0][0][0]dp[0][0][0][0],即考虑所有糖果。Candies[i][j]Candies[i][j]Candies[...

蒟蒻的博客 346

UVa10118 - Free Candies

题意:有4堆糖果,每堆有n个,按顺序排列。每次可以na

A Cube Master 774

uva 10118 (Free Candies)(DP)

Problem B. Free Candies The Problem Little Bob is playing a game. He wants to win some candies in it - as many as possible. There are 4 piles, each pile contains N candies. Bob is g

不戚的专栏 797

UVA - 10118 Free Candies 记忆化搜索

题目链接:UVA - 10118 题目是PDF就不贴了,大意就是有四堆糖果,每堆有n个,有个人有个能盛五个糖的篮子,每次可以任选一堆糖,取最上面的那个放到篮子里,如果篮子里有两个颜色相同的,就可以把这两个放到口袋里,篮子满了并且没有相同糖果的时候游戏结束,求他最多能拿到的糖果数。这道题的状态是每堆分别拿num个时,口袋里最多能有多少个糖,dp[num1][num2][num3][num4],也就

cout<<"Hello World!"; 659
上一篇: uva 1220 - Party at Hali-Bula
下一篇: uva 1336 - Fixing the Great Wall
LuckyqXd
博客等级 码龄12年 2粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值