poj1010 暴搜

POJ1010-STAMPS 算法竞赛题解与测试数据实战 邮票组合问题的核心输入包括两部分:一组有限的邮票面值集合和一个目标金额。设输入的邮票面值为 $ S = {s_1, s_2, …, s_n} $,其中每个 $ s_i \in \mathbb{Z}^+ $,且通常要求去重并按升序排列;目标金额为 $ T \in \mathbb{Z}^+ $。每种面值的邮票最多可以使用4张,即对于任意 $ i \in [1,n] $,其使用次数 $ c_i \in {0,1,2,3,4} $。该问题的关键约束条件如下:约束类型描述数量上限约束。 阅读详情

四重循环爆菊之!

#include <iostream>
#include <algorithm>
using namespace std;
int x,num,tot,kind,kk,kmax,hmax,n,stamp[110],best[5];
bool tie,ans,v[110],hash[110];
int cmp() {
    if (kind>kk) return 1;
    else if (kind==kk && tot<num) return 1;
    else if (kind==kk && tot==num && hmax>kmax) return 1;
    else if (kind==kk && tot==num && hmax==kmax) return 0;
    return -1;
}     
int main() {
    while (~scanf("%d",&x)) {
          n=0;
          while (x!=0) {
                stamp[++n]=x;
                scanf("%d",&x);
          }
          stamp[n+1] = 0;
          while (1) {
                scanf("%d",&x);
                if (x==0) break;
                memset(best,0,sizeof(best));
                num = 0;
                kk = 0;
                kmax = 0;
                memset(v,0,sizeof(v));
                memset(hash,0,sizeof(hash));
                ans = false;
                tie = false;
                for (int i=1;i<=n+1;i++)
                    for (int j=i;j<=n+1;j++)
                        for (int k=j;k<=n+1;k++)
                            for (int r=k;r<=n+1;r++) {
                                int total = 0, t1, t2, t3, t4, sol[5];
                                int h1, h2, h3, h4;
                                h1=h2=h3=h4=t1=t2=t3=t4=0;
                                tot = 0; kind = 0; hmax = 0;
                                if (i!=n+1) {
                                           total += stamp[i];
                                           sol[++tot] = stamp[i];
                                           h1 = i;
                                           hmax = max(hmax,stamp[i]);
                                           if (!hash[h1]) {
                                                          kind++;
                                                          hash[h1] = true;
                                           }
                                }
                                if (j!=n+1) {
                                           total += stamp[j];
                                           sol[++tot] = stamp[j];
                                           h2 = j;
                                           hmax = max(hmax,stamp[j]);
                                           if (!hash[h2]) {
                                                          kind++;
                                                          hash[h2] = true;
                                           }
                                }
                                if (k!=n+1) {
                                           total += stamp[k];
                                           sol[++tot] = stamp[k];
                                           h3 = k;
                                           hmax = max(hmax,stamp[k]);
                                           if (!hash[h3]) {
                                                          kind++;
                                                          hash[h3] = true;
                                           }
                                }
                                if (r!=n+1) {
                                           total += stamp[r];
                                           sol[++tot] = stamp[r];
                                           h4 = r;
                                           hmax = max(hmax,stamp[r]);
                                           if (!hash[h4]) {
                                                          kind++;
                                                          hash[h4] = true;
                                           }
                                }
                                hash[h1]=hash[h2]=hash[h3]=hash[h4]=false;
                                if (total == x) {
                                          ans = true;
                                          int p = cmp();
                                          if (p>0) {
                                                   tie = false;
                                                   for (int q=1;q<=tot;q++)
                                                       best[q] = sol[q];
                                                   num = tot;
                                                   kk = kind;
                                                   kmax = hmax;
                                          }
                                          else if (p==0) tie = true;
                                } 
                            }
                printf("%d ",x);
                if (!ans) printf("---- none\n");
                else if (tie) printf("(%d): tie\n",kk);
                else {
                     printf("(%d):",kk);
                     sort(best+1,best+num+1);
                     for (int i=1;i<=num;i++) printf(" %d",best[i]);
                     printf("\n");
                }        
          }
    }
    return 0;
}    


POJ1010-STAMPS 北大POJ1010-STAMPS 解题报告+AC代码 立即下载

相关推荐

【智能车学习】电磁循迹中的基本控制算法

今天心血来潮,突然想总结一下电磁车的一些基本算法,也希望可以给新手同学们一点帮助和参考。本篇主要讲述智能车电磁循迹中涉及到的基本算法,包括滤波算法,归一化算法,PID控制等

Carry_qing的博客 6万+

poj 1010(枚举 dfs)

给你一些邮票的面值,然后给你一些顾客给出的价钱,求出邮票的组合来满足每一位顾客,要求是最多四张邮票,每张可以用多次。 如果这些组合都能满足用户的的需求,那么 1.选种类最多的 2.如果种类相同,选总数最多的 3.如果总数相同,选邮票值组合最大值最大的那一组 4.如果连最大值也相同,那么就是tie 5。如果没有这样的组合,也就是不能用4张以内的邮票满足顾客,那么就是none 输出格式,...

weixin_30316097的博客 201

ESP32-P4实战:LVGL V9.4 PPA加速配置与性能对比

本文详细介绍了如何在ESP32-P4平台上配置LVGL V9.4的PPA硬件加速功能,通过启用PPA加速显著提升图形处理性能并降低CPU占用率。文章包含环境准备、配置步骤、性能对比及常见问题解决方案,帮助开发者高效利用ESP32-P4的PPA加速器优化嵌入式GUI应用。

rice5的博客 1190

动态规划解POJ1010

参考文章点击打开链接

clagla的专栏 460

实用工具抓取youtube热门数据

YouTube作为全球第二大搜索引擎,2024年日均视频播放量突破50亿次,头部创作者单月广告分成可达百万美元量级。但对数据分析者而言,其反爬机制堪称业界最严: ‌反爬技术升级‌:Google部署的Botguard系统可检测异常流量,触发机制包括: 单IP每小时请求超过50次即封禁 检测Headless浏览器指纹(如Chrome的navigator.webdriver属性) 动态加载内容(如评论数据需滚动页面3次后加载) ‌数据价值维度‌:某MCN机构研究显示,前100热门视频的标题关键词复用率高达67%

26万+

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1968

POJ1010

问题分析: 深度遍历(dfs)所有可能的组合,选择出最优组合。 组合选择条件: 1.邮票种类多的组合优先选择; 2.在邮票种类一样多的情况下,邮票张数少的组合优先选择; 3.前两个条件一样的情况下,组合中面值最大的邮票进行比较,面值更大的邮票对应的组合优先选择; 组合条件选择一个判断就够了,难点在于如何遍历得到所有可能的组合,然后再从这些组合中选择最优解。 c++代码: 如何用df...

路漫漫其修远兮,吾将上下而求索 658

链路状态路由协议 OSPF (一)

本章将会学习链路状态路由协议OSPF,理解OSPF的基本概念,工作原理,掌握OSPF配置基本命令。本章重点,OSPF的基本概念,OSPF配置。

yj11290301的博客 3475

POJ 1010--STAMPS

poj 1010

Hering_Linux的专栏 456

基于MATLAB的拉盖尔-高斯光束叠加相位模拟

首先,我们需要设置模拟所需的参数,如光腰半径、传播距离、光束的角动量等。其中,(U)表示光束的电场复振幅,(r)和(\phi)分别是极坐标系下的径向和角向坐标,(z)是传播距离,(A)是归一化系数,(w_p)是光束的光腰半径,(L_p^q)是拉盖尔多项式,(k)是波数,(l)是光束的角动量。通过修改模拟参数,如光腰半径、传播距离、角动量等,您可以进一步探索和理解拉盖尔-高斯光束的叠加相位效应。拉盖尔-高斯光束是一种特殊的光束模式,具有广泛的应用领域,包括光学信息处理、激光加工和量子光学等。

m0_47037246的博客 945

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:永磁同步电机(PMSM) PID转速控制仿真

*永磁同步电机(PMSM)因其高效、高功率密度和良好的动态响应特性,在现代工业自动化、电动汽车驱动系统等领域得到了广泛应用。为了实现对PMSM的速度精确控制,通常采用矢量控制(Field Oriented Control, FOC)**策略,其中PID控制器是实现速度环和电流环调节的关键组件。本教程将带你使用构建一个基于PID控制的永磁同步电机转速控制系统仿真模型PMSM电机建模矢量控制(FOC)策略实现PID控制器设计系统仿真与调试控制效果分析本文介绍了如何使用构建一个。

MHD0815的博客 6951

POJ 1010

code1#include<iostream>2usingnamespacestd;34intstamps[500];5ints[4];6intn;//numberofstamptypes7intm;//numberofcustomerrequest8intk;//numberofstampsso...

weixin_30919235的博客 250

【异常】安装hermes-agent时提示GnuTLS recv error (-110): The TLS connection was non-properly terminated.

Git克隆仓库时出现TLS连接异常报错的解决方案摘要: 当执行git clone命令时遇到"GnuTLS recv error (-110)"报错,通常由网络不稳定、缓冲区不足或证书验证问题导致。主要解决方案包括:1)增大Git HTTP缓冲区(git config --global http.postBuffer 524288000);2)使用GitHub镜像站加速克隆;3)临时禁用SSL验证进行测试;4)检查并调整代理配置;5)改用SSH协议克隆。建议优先尝试增大缓冲区和镜像站方案,

奶爸的编程之路,也就一周冷个三天 1350

POJ 1010 1020 DFS+剪枝

之所以要写这两题的解题报告,原因就是这两题是比较好的搜索题,必须记录一下。 另外,最近做题状态也不行,看见题目后没想法,然后看别人解题报告了,突然发现自己想过这方面,但是没深入去想,然后就做不出来了。 1.POJ 1010  题意晦涩难懂。从网上找了一个稍微能说清楚的题意  题意:   给出n种邮票,每种邮票有自己的面值(面值可能重复)   指定m种“总面值”,对每种“总面值”,

水 2648

Devexpress16.2.6破解工具

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

kmp2-HDU1358 HUST1010 POJ2406 POJ2752

HDU1358 http://acm.hdu.edu.cn/showproblem.php?pid=1358   先构造出 next[] 数组,下标为 i,定义一个变量 j = i - next[i] 就是next数组下标和下标对应值的差,如果这个差能整除下标 i,即 i%j==0 ,则说明下标i之前的字符串(周期性字符串长度为 i)一定可以由一个前缀周期性的表示出来,这个前缀的长度为刚才求...

少说,多做。 2960

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ1010(dfs)

题目意思就是,给你一些邮票,要组合出K面值的,优先级:组成种类尽可能多>所需邮票数尽可能少>最大面值尽可能大。如果都相等,那么就输出tie。 这题目我一开始一直在想怎么可以用一个优秀的姿势在dfs的过程中满足上述要求第筛选…发现号困难,最后看大神的题解了。心碎。 /*****************************************************************

u011044759的专栏 1508

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【DFS + 剪枝】POJ 1010 STAMPS

这段时间要沉迷刷题一段时间了,就让优快云陪我一起吧! 一、题目大意 题目的大致意思就是有若干测试用例,每个测试用例包含两行输入,第一行是代表邮票不同种类的面值,第二行是代表顾客所需邮票的总面值,要求对于每个顾客所需邮票的总面值,给出不同种类邮票的组合来满足要求。当然组合的选择是有要求的,第一个选择条件是邮票的种类数应该尽可能的多,第二个选择条件是邮票的总张数应该尽可能的少,第三个选择条件是所...

Johnson的博客 312

poj1010-STAMPS

题目大意 给你一些邮票的面值,然后给你一些顾客给出的价钱,求出邮票的组合来满足每一位顾客,要求是最多四张邮票,每张可以用多次(其实最多也就四次,因为要求最多四张,否则就是none)。 如:邮票面值1 2 3 0;0代表这行结束 顾客的需求:7 4 0   结果: 7 (3): 1 1 2 3 4 (2): 1 3 解释一下: 由于每次有多种组合,那么如何取结果呢? 如果这些

zhang20072844的专栏 3502

poj 1010 STAMPS 枚举组合

//poj 1010 //sep9 #include #include using namespace std; int stamp[128],n,sum,ok,tie; struct SOL { int types; int high; int num; int v[8]; }best,now; int vis[128]; void judge() { if(now.types=

sepNINE的专栏 609

北大ACM(POJ1010-STAMPS)

Question:http://poj.org/problem?id=1010问题点:DFS、剪枝。 1 Memory: 220K Time: 32MS 2 Language: C++ Result: Accepted 3 4 #include <iostream> 5 using namespace std; 6 ...

aenv6574的博客 276

POJ 1010 - STAMPS + Python(DFS*)

题目链接: # https://blog.csdn.net/baoqiaoben/article/details/79844831 # https://exp-blog.com/algorithm/poj/poj1010-stamps/ 这道题目做了很久,需要注意的是: 1 dfs的递归过程中,当使用队列、字典传递参数时,队列、字典一经变化,其值将不再恢复。处理措施,将其值依次取出后,用for循环赋值给一个新的队列或者字典变量; 2 dfs的递归过程中,将队列或者字典直接赋值给其他变量后,当原队列

xxdragon126的博客 579

POJ1010-STAMPS 搜索

STAMPSTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 19490 Accepted: 5712DescriptionHave you done any Philately lately? You have been hired by the Ruritanian Postal Service (RPS) to design ...

imbabao的博客 570

POJ 3172 Scales (剪枝深搜)

POJ 3172 Scales  砝码的特点:f[n]>=f[n-2]+f[n-1],由斐波那契数列知N最多45、46项,题意说The balance has a maximum mass rating and will break if FJ uses more than a certain total mass C (1 如果用背包10^9数组开不出来,而且10^9*45超时

Kim0403的博客 517

POJ 1010 - STAMPS + Python(DFS*)重做

说明:第一版见:POJ 1010 - STAMPS + Python(DFS*)_xxdragon126的博客-优快云博客 原题链接:1010 -- STAMPS 为了巩固该题目,现对其重做;重做之后发现,编程思想与之前有所不同。看来,在经过了一段刷题训练之后,编程逻辑也发生了变化。此方案是原方案的简化版。 一问题描述 集邮者到邮局购买指定总额的邮票,银行根据总额需求,以实际库存派发邮票,并且一次最多派发4张。 邮票库存示例如下: 示例1:1 2 3;说名有三种邮票类型,其面值分别为1 2 .

xxdragon126的博客 641

POJ 1010 STAMPS 解题报告

这道题大神解释得很清楚,包括我根本没有意识到的优化(同面额的邮票种类大于5的情况解是一样的)。我一开始也是按照递归深搜做的,效果比较差,应该是剪枝的地方没有考虑情况。这道题剪枝同时考虑效率和正确性还是比较难的。后来按照最直观的四重循环做的。因为邮票组合最多四种。 具体分析可以移步大神的解题报告:http://blog.csdn.net/cugbliang/article/details/2742

thestoryofsnow的专栏 1211
上一篇: poj3460 ida*
下一篇: poj1020 暴搜暴的很有水平~
琴空
博客等级 码龄16年 48粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值