当前位置: 首页 > news >正文

做网站渠道windows优化大师自动下载

做网站渠道,windows优化大师自动下载,保定专业网站建设公司,丹徒网站建设要多少钱这道题用的知识点是DFS剪枝。难的不在DFS上,而是在剪枝上如何选择。 思路:这道题我们看到是按照字典序排的,但是,我们注意到,看似是全排列的递归,实则不是。 我们前面也了解过,全排列的数字大…

这道题用的知识点是DFS+剪枝。难的不在DFS上,而是在剪枝上如何选择。

思路:这道题我们看到是按照字典序排的,但是,我们注意到,看似是全排列的递归,实则不是。

我们前面也了解过,全排列的数字大小是没有规则的,当然指数型也不可能,这并不涉及到选与不选的问题。而且,我们看到,这些数字有点像升序排列的,所以可能会是组合型递归。但是呢,我们又发现,它们的数字并不是严格单调的,而是有相同的数字在里面排序。这怎么办呢?

改进方法已经在代码里了,就是在进行下一次dfs的时候我们只需要写上i就行,而不是i+1,如果是i+1就会严格单调了。

只是这样写起来,会有数据点TLE。这是为什么呢?因为有些地方是需要剪枝的。那么这里我们怎么剪枝呢?如果你想说在求出来的和不是n的时候剪枝,那也是在全部数字枚举出来的时候才会判断的,仅仅是这样并不能完全剪枝。那该怎么办呢?这里,我们直接在循环里剪枝,也就是在枚举的过程中进行剪枝。怎么剪枝呢?举个例子:

当我们n=7,k=4时,这个时候假如我们已经列举到1,3了,现在正在第三个位置的dfs当中,这个时候按照我们的写法下一个数字肯定是3,最后一个数字也是3,这是对于自己编写的程序的理解。

我们看,如果这几个数字加起来是不是已经超过7了?也就是说,第四个位置我们根本不需要考虑了,前面已经=7了,后面再加就不行了,这里我们直接让循环不去dfs了,而是进行下一次循环。这就省了一次dfs函数的调用!那么,怎么实现这种想法呢?

我们在循环中改进循环条件就行,这和上几次的剪枝是不一样的,这里的剪枝涉及到的是对于在枚举过程中的剪枝,而不是对于全部枚举完之后的剪枝,这里是不同点。在上面的例子中,我们看到,其实知道了第三个数字我们也就知道了第四个数字了。所以,我们只需要循环到第二个位置后,判断后面两个位置的和与前面我们已经计算了的sum相加是不是<=n就行了,这就是优化的地方。

注意:这里的dfs有三个变量,第一个是位置,第二个是从哪个数开始枚举,第三个则是累加的数用来记录的。

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<map>
#include<limits.h>
#include<set>
#define MAX 100010
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
int arr[MAX];
LL n, m, counts, num;
void dfs(int  u,int st,int sum) {if (u > m) {if (sum<n || sum>n)return;else {counts++;}return;}for (int i = st; sum+(m-u+1)*i <= n; i++) {arr[u] = i;dfs(u + 1,i,sum+i);arr[u] = 0;}}
int main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n >> m;dfs(1,1,0);cout << counts << endl;return 0;
}

http://www.yidumall.com/news/62489.html

相关文章:

  • 怎么做网站最便宜seo刷排名公司
  • 写网站软件网络推广销售是做什么的
  • 做网站要用什么计算机语言宁波网站建设团队
  • 网络建设上市公司排名seo服务靠谱吗
  • 做网站挂广告赚多少钱广东今天新闻最新消息
  • 网站域名注册信息推广软文范例100字
  • 网站草图怎么做seoaoo
  • 网站加载进度条百度识图在线使用一下
  • python搭建网页汕头seo管理
  • 网站开发详细设计seo快速排名代理
  • 网站做的支付宝接口广告海外推广
  • 彩票做的最好是个网站好西安专业做网站公司
  • 动态域名可以做网站吗今日头条荆州新闻
  • wordpress带会员中心搜索引擎seo外包
  • 漳州市住房建设局网站起飞页自助建站平台
  • 怎样在电脑安装wordpress网站页面优化方案
  • 做网站美工的前途怎么样国外网站推广公司
  • 实惠的制作网站seo网络推广专员招聘
  • 网站推广目的制作网站的网址
  • 出口网站怎么做免费网站提交入口
  • 徐州做网站的公司哪些好24小时自助下单平台网站便宜
  • 计算机网络技术就业方向网站开发浏览器打开
  • 做网站如何分类产品长春疫情最新消息
  • 电话网站源码哪个搜索引擎最好
  • 帮助中心网站源码武汉seo和网络推广
  • 贵阳建设网站百度应用宝
  • 画册设计规范昆明seo技术培训
  • wdcp 配置网站上海谷歌推广
  • 网站建设 网站维护网页设计案例
  • 关于网站的建设百度seo关键词优化工具