poj 1980 dfs+剪枝(Unit Fraction Partition)

[题解]Unit Fraction Partition C++ Unit Fraction Partition例题DescriptionInputOutputSample InputSample OutputHINT思路代码 例题 Description 给出数字P,Q,A,N,代表将分数P/Q分解成至多N个分数之和,这些分数的分子全为1,且分母的乘积不超过A。例如当输入数据为2 3 120 3时,我们可以得到以下几种分法: Input 本题含有多组测试数据,... 阅读详情

题意:给定一个分数,问用分子为1的分数加和来构成这个分数有多少种方式。要求每种情况分数的个数不超过n,分母乘积不超过a。

思路:搜索。一开始做犯了一个错误导致一直TLE,就是把当前分数和的分子和分母存为全局变量,导致每次dfs之后还要把当前加上的分数剪掉,浪费了太多时间。具体细节见注释!

#include <cstdio>
#include <cstring>
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;
int p,q,a,n,res;
int gcd(int x,int y){
    if(!y)
        return x;
    return gcd(y, x%y);
}
int exd(int np,int nq){//判断是否超过了目标值
	return q*np>p*nq;
}
void dfs(int d,int from,int mul,int fz,int fm){
	//五个参数:1、搜索深度(最多还可以使用多少个分数);
	//2、从哪个数开始搜索当前分数;
    //3、前面选出的分数的分母乘积
	//4、前面选出的分数之和的分子
	//5、前面选出的分数之和的分母
	int i,j,nfz,nfm,lcm;
    if(!d)//分母不能超过d个
        return;
    for(i = from;i*mul<=a;i++){//从小到大搜索当前分数的分母
		lcm = fm*i/gcd(fm,i);//求最小公倍数,作为分数和的分母
        nfm = lcm;
		nfz = lcm/fm*fz+lcm/i;//分数和的分子
		j = gcd(nfm,nfz);//化简分数
		nfm /= j;
		nfz /= j;
		if(p*nfm>q*(lcm/fm*fz+lcm/i*d))//后面的分数都取最大的情况仍然达不到目标值,重要剪枝
			return;
		if(nfz==p && nfm==q){//达到目标值,注意不是返回而是继续
            res++;
			continue;
		}
        if(exd(nfz,nfm))//如果和已经超过了目标值,重要剪枝
            continue;
        dfs(d-1, i, mul*i, nfz,nfm);
    }
}
int main(){
//	freopen("a.txt","r",stdin);
    while(scanf("%d %d %d %d",&p,&q,&a,&n) && (p+q+a+n)){
        int i;
        res=0;
        i = gcd(p,q);
        p /= i;
        q /= i;
        dfs(n,1,1,0,1);
        printf("%d\n",res);
    }
    return 0;
}


从理论到实践:基于Zemax的高分辨率生物显微镜光学系统仿真与优化指南 本文详细介绍了基于Zemax的高分辨率生物显微镜光学系统仿真与优化全流程。从阿贝分辨率公式、柯勒照明等理论基础出发,逐步讲解Zemax建模、像差优化、制造可行性分析等核心步骤,并提供常见问题解决方案。通过实际案例展示如何将理论设计转化为可制造的优化方案,帮助工程师掌握从仿真到实际应用的关键技术。 阅读详情

相关推荐

S32K344 Bootloader实战:一个按键实现从Boot到App的无缝跳转(附完整代码)

本文详细介绍了基于NXP S32K344微控制器的Bootloader开发实战,重点解析如何通过一个硬件按键实现从Boot到App的可靠跳转。内容涵盖内存分区规划、中断向量表重映射、外设初始状态管理等核心要素,并提供了完整的代码示例和调试技巧,适用于汽车电子和工业控制等高可靠性应用场景。

weixin_29192365的博客 307

POJ 1980 Unit Fraction Partition(dfs)

Description 给定一个分数,问用分子为1的分数加和来构成这个分数有多少种方式。要求每种情况分数的个数不超过n,分母乘积不超过a Input 多组用例,每组用例包括四个整数p,q,a,n分别表示给出分数的分子,分母,组成该分数的数个分数的分母乘积上限与个数上限,以0 0 0 0结束输入 Output 对于每组用例,输出满足条件的方法数 Sample Input 2 3 120

ZSQ 1110

告别偏色!手把手教你用i1Profiler 3.5为喷墨打印机制作专属ICC曲线(附D50/D65光源选择指南)

本文详细介绍了如何使用i1Profiler 3.5为喷墨打印机制作专属ICC曲线,解决设备偏色问题。从色彩管理基础、软件配置到色块打印与测量实战技巧,逐步指导用户完成曲线制作,并提供了D50/D65光源选择指南,确保色彩还原精准。适合摄影师和设计师提升打印质量。

weixin_30613343的博客 1万+

poj-1980-Unit Fraction Partition(DFS分数分解)

文章在我的新博客~欢迎~

AC是绝对不可能的 224

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

【Bug已解决】codex file edit fails / Write operation denied — CodeX CLI 文件编辑失败解决方案

CodeX CLI 编辑文件时报写入被拒绝,本质是沙箱限制或权限不足。文中给出配置允许目录、修复权限、Git stash 管理冲突等完整方案。

一键难忘的博客 4296

poj 1980 Unit Fraction Partition 分数划分,将分数分解为n个真分数之和,分母乘积不超过a

<br />Unit Fraction PartitionTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 2797 Accepted: 1077<br />DescriptionA fraction whose numerator is 1 and whose denominator is a positive integer is called a unit fraction. A representation of a positive

kongming_acm的专栏 2016

Prometheus+Grafana+alertmanager+PrometheusAlert监控告警 实现飞书告警

以上 是以grafana做的邮件告警,但是感觉邮件很少人看。下面是以webhook 可以接入。启动alertmanager (设置 开机在启动)下载prometheusalter 配置文件。这里的告警是基于grafana上搭建的。我们启动PrometheusAlert。写完之后进行重启Prometheus。prometheus 的告警规则。测试 基于我们生产环境做的文档。然后在grafana上导模板。上导入模板就可以 直接引用。访问 grafana页面。重启一下grafana。

墨痕诉清风的博客 854

poj1980

dfs+剪枝 题意:给定一个分数,问用分子为1的分数加和来构成这个分数有多少种方式。要求每种情况分数的个数不超过n,分母乘积不超过a。 分析:dfs+剪枝,记录当前剩余的需要构成的分数值,然后试图用所有的可以使用的名额平分这个剩余值,再试图用一个分数构成这个剩余值,这样就确定了我要枚举当前分母的范围。并随时检查所有分母的乘积是否超限。 View Code #include &lt;i...

weixin_34319374的博客 168

021、反激变换器的软启动设计

本文分享了反激变换器软启动设计的实践经验。作者通过一次上电炸机事故引出软启动的重要性,分析了启动瞬间电流冲击和环路饱和问题。介绍了三种软启动方案:效果差的RC电路、推荐使用的数字芯片方案以及分立元件实现方法,重点指出数字方案的一致性优势。文章还探讨了软启动与过流保护的配合问题,提供了实测波形、温度影响等调试要点,并总结出软启动时间选择、批量生产一致性等实用建议。最后强调软启动是电源可靠性的关键设计,不应为节省成本而忽略。全文包含多个工程实践细节,对电源设计人员具有重要参考价值。(149字)

Jack010169的博客 173

WPF 上位机可视化天花板:HandyControl 搭建 SCADA 系统

HandyControl 凭借「丰富的工业级控件、灵活的主题定制、优异的性能」,成为 WPF 开发 SCADA 系统的首选 UI 库。本文搭建的 SCADA 系统涵盖实时监控、设备控制、报警管理、趋势分析四大核心功能,通过 HandyControl 实现了工业级可视化效果,开发效率提升 60% 以上。控件开箱即用:无需自定义仪表盘、趋势图、指示灯等 SCADA 核心控件;可视化效果专业:工业风主题、动态颜色切换、清晰的状态呈现,契合工业场景需求;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1126

Letters比赛第六场1004 Unit Fraction Partition解题报告

1004UnitFractionPartition(POJ1980) 解题思路:DFS+剪枝。这题的剪枝条件还是比较严格的,很容易超时,我想到的需要剪枝的情况有以下几点:①前几项的和超过了最大值。②前几项的积超过了最大值。③深度超出。④提前“预测”剪枝:即如果剩余的项数乘以当前最小分数要大于剩余的值,则不应该往下搜索。第④点是至关重要的,没有考虑到的话一般会超时。还有可以优化的地...

weixin_30416871的博客 116

SAP UI5 百科全书的目录

笔者 12 年 SAP UI5 开发岁月中写下的 595 篇 SAP UI5 学习笔记,全部收录到《SAP UI5 百科全书》专栏中去,目录如下。请大家按照自己的学习需要,根据关键字搜索到对应的文章,然后进行学习。

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

POJ 1980【Unit Fraction Partition】

描述   给出数字P,Q,A,N,代表将分数P/Q分解成至多N个分数之和,这些分数的分子全为1,且分母的乘积不超过A。例如当输入数据为2 3 120 3时,我们可以得到以下几种分法: 输入输出格式 输入   本题含有多组测试数据,每组给出四个数P,Q,A,N,其中 p,q <= 800, A <= 12000,N <= 7.当输入的四个数均为0时,代...

weixin_30412577的博客 190

android 蓝牙通讯demo

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

OV9734 DATASHEET,完整规格书

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

[POJ 1980] Unit Fraction Partition Dfs

http://poj.org/problem?id=1980题意:输入四个数 p, q, a, n 其中 p 是分子, q 是分母,将这个分数拆成不超过 n 个分子为 1 的分数相加,而且这些分子的乘积不能超过 a 。问拆分的总数 。思路:Dfs,主要是要剪枝。

AcmHonor的专栏 1146

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

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

POJ - 1980 Unit Fraction Partition

A fraction whose numerator is 1 and whose denominator is a positive integer is called a unit fraction. A representation of a positive rational number p/q as the sum of finitely many unit fractions is ...

GJLfly的博客 358

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

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

Unit Fraction Partition POJ - 1980

A fraction whose numerator is 1 and whose denominator is a positive integer is called a unit fraction. A representation of a positive rational number p/q as the sum of finitely many unit fractions is ...

Qtt110的博客 230

POJ_1980_Unit Fraction Partition

<br />//经过木棍,蛋糕等等剪枝要求较高的题目之后,这道题倒也不是很难了,还是要注意一下细节 //细节决定成败啊 #include<stdio.h> #include<string.h> int num[10]; int p,q,m,n; int ans; //求最小公倍数 int lcm(int x,int y) { int t,a=x,b=y; if(x<y) { t=x;x=y;y=t; } while(x%

fengyu0556的专栏 2916

poj 1980 Unit Fraction Partition 深搜剪枝

#include using namespace std; int p,q,a,n,ans; int gcd(int x,int y) { return x%y==0?y:gcd(y,x%y); } int lcm(int x,int y) { return x/gcd(x,y)*y; } void dfs(int cur,int pre,int up,int down,int pr

sepNINE的专栏 942

poj 1980 Unit Fraction Partition

终于靠自己A了一道比较难的题了(n_n) 据说是减枝题,不过我的剪枝还有待提高,以下做法竟然差点time limitted(985MS) 我自己的思路: DFS搜索题,按当前需要构造的分数值,当前分母的总乘积,已经有了的个数,上一层分母值 进行搜索,当遇到已经有了的个数等于a时,返回假,否则从上一层的分母值开始为下一个分数 进行检查是否满足条件,满足的话答案加一 #incl...

weixin_30488313的博客 89

Poj 1980 Unit Fraction Partition (分数分解 搜索)

题意:把一个给定分数划分为n个以内的单位分数之和,并要求这些单位分数的分母之积不大于a.求划分方案总数. 这是道1000ms的题,自己写了个调了半天907ms艰难水过……水平还是太弱。。。。 #include int ans; int p,q,a,n; void DFS (int cnt,int count,int tp,int tq,int mul) {//已搜索到分母,个数,分数当前

whyorwhnt的专栏 1521

[POJ1980]Unit Fraction Partition(搜索)

Unit Fraction Partition Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4571 Accepted: 1809 Description A fraction whose numerator is 1 and whose denominat...

weixin_30384031的博客 167

poj-1980 Unit Fraction Partition **

/* * 本以为这题剪枝会很难,没想到1A了。。32ms * 这个题的难点是分数的处理。。不要用double。。精度难以把握。。 * */#include &lt;cstdio&gt;#include &lt;cmath&gt;using namespace std;int p, q, a, n, tot; //如题目定义,tot为答案//p1/q1 和 p2/q2 比较大小int i...

weixin_33754913的博客 127

poj 1980 Unit Fraction Partition…

这个用了double来判断相等与否,精度不太好把握,而且需要注意的东西也多一些       搜索顺下,t从小到大 剪枝  tmp>sum  tmp为接下来所能选择的最大的分母,sum为剩下的值       (1/t)*n        当乘积大于a时 退出   #include #include #include #include using namespace std; int ans;

yrleep的专栏 794

Unit Fraction Partition (dfs)

A fraction whose numerator is 1 and whose denominator is a positive integer is called a unit fraction. A representation of a positive rational number p/q as the sum of finitely many unit fractions is ...

自渡的博客 674
上一篇: poj 2420/1379 随机/模拟退火(求费马点/最偏离点)
下一篇: poj 1190 dfs+剪枝(生日蛋糕)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值