【DP】poj1037

poj 1037 dp+排列计数(美妙的栅栏) 题意:N 个木棒, 长度分别为1, 2, ..., N。构成美妙的栅栏。要求满足:除了两端的木棒外,每一跟木棒,要么比它左右的两根都长,要么比它左右的两根都短。即木棒呈现波浪状分布,这一根比上一根长了,那下一根就比这一根短,或反过来。符合上述条件的栅栏建法有很多种,对于满足条件的所有栅栏, 按照字典序(从左到右, 从低到高) 排序。问给定一个栅栏的排序号,请输出对应的栅栏方案, 即每一个木棒的长度 阅读详情

有点麻烦的一个DP

一开始已经想到只跟顺序有关系,但是忘记了只要维护一个上升一个下降就可以解决转移的问题了

然后还有一个点就是其实把任意一个数拿出去的话剩下序列跟拿出的数的关系是能推导出的。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
long long f[31][31][3];
bool flag[31];
int n,t;
long long m;
void dfs(int x,int y,long long w,int d)
{
	int tmp_tot=0;
	for (int i=1;i<=n;i++)
	{
		if (flag[i]==true) tmp_tot++;
		if (tmp_tot==x) 
		{
			printf("%d",i);
			flag[i]=false;
			break;
		}
	}
	if (w==0) return;
	long long tmp=0;
	if (d==0)
		for (int i=1;i<x;i++)
		{
			tmp+=f[i][y][0];
			if (tmp>=w) 
			{
				printf(" ");
				dfs(i,y-1,w-(tmp-f[i][y][0]),1);
				return;
			}
		}
	else
		for (int i=x;i<=y;i++)
		{
			tmp+=f[i][y][1];
			if (tmp>=w)
			{
				printf(" ");
				dfs(i,y-1,w-(tmp-f[i][y][1]),0);
				return;
			}
		}
	return;
}
int main()
{
	freopen("test.in","r",stdin);
	freopen("test2.out","w",stdout);
	scanf("%d",&t);
	f[1][1][0]=1;
	f[1][1][1]=1;
	for (int i=2;i<=20;i++)
		for (int j=1;j<=i;j++)
		{
			for (int k=1;k<j;k++)
				f[j][i][1]+=f[k][i-1][0];
			for (int k=j;k<i;k++)
				f[j][i][0]+=f[k][i-1][1];
		}
	while (t--)
	{
		memset(flag,1,sizeof(flag));
		long long ans=0;
		scanf("%d%lld",&n,&m);
		for (int i=1;i<=n;i++)
		{
			ans+=f[i][n][1];
			if (ans>=m) 
			{
				dfs(i,n-1,m-(ans-f[i][n][1]),0);
				if (t) printf("\n");
				break;
			}
			ans+=f[i][n][0];
			if (ans>=m) 
			{
				dfs(i,n-1,m-(ans-f[i][n][0]),1);
				if (t) printf("\n");
				break;
			}
		}
	}
	return 0;
}

69、Dp入门,最短路径问题(C)-a.pdf 69、Dp入门,最短路径问题(C)-a 立即下载

相关推荐

【BLE】HID设备开发实战:从自拍杆到复合设备的蓝牙控制方案

本文深入解析了BLE HID(低功耗蓝牙人机接口设备)的开发实战,从蓝牙自拍杆的工作原理切入,详细阐述了HID Report Map的设计与实现。通过拆解自拍杆、键盘、鼠标等案例,指导开发者如何利用BLE的低功耗与即插即用特性,构建从单一功能到键盘鼠标复合设备的完整蓝牙控制方案。

weixin_29159613的博客 464

poj1037(dP+排列计数)

http://poj.org/problem?id=1037

u014236804的专栏 2402

告别手动改Hex!用Vector HexView命令行5分钟搞定固件数据“乾坤大挪移”

本文详细介绍了如何利用Vector HexView命令行工具快速实现嵌入式固件数据的自动化迁移,告别手动修改Hex文件的繁琐流程。通过实战案例和脚本示例,展示了如何5分钟内完成数据地址范围的重新映射,提升嵌入式开发效率,特别适用于烧录文件的内存布局调整。

weixin_30635053的博客 711

poj1037(计数dp)

题意:给定n个数字,规定一种 cute 排序:序列中的数字大小为严格的波浪形,即 a[0] > a[1] < a[2] > a[3] < .... 或者 a[0] < a[1] > a[2] < a[3] .....。对于N个数字来说,可以构成多个cute序列,这些序列按照字典序进行排序,求出第k个序列。 分析:《算法竞赛训练指南》P339-342。 ...

常胜将军的博客 363

Direct-LiNGAM算法理解

现在是大数据的时代,数据即是财富。那么如何从数据中发现因果关系呢?这是我们促进我们更加高效利用数据的一个问题?本文介绍了一种方法,可以在符合条件的观察数据中恢复出数据背后的因果结构,帮助我们更好理解数据的产生机制。

小小程序猿的博客 4592

RK3588 buildroot 双网口bonding调试

本文介绍了Rockchip Buildroot中配置网络冗余的方法,通过bonding技术将多个物理网口合并为逻辑接口。主要内容包括:1)7种常见bonding模式的特点及适用场景;2)RK3588的具体配置流程,包括内核配置(启用bonding驱动、修改dts)、添加ifenslave工具;3)系统编译和网络状态检查。

501846585_QQAndroid_java 459

poj 1037解题报告

Poj 1037是一道很好的动态规划的题目。这道题也是想了很久才Accept。 下面分享一下解题思路, 记录一下自己的思想历程, 同时如果有错误的话希望大家能给予指导。 一、题目大意       题目的基本意思是这样的: 给定N个栅栏,这N栅栏的长度互不相同,1~N。N栅栏显然有很多不同的排列。在这些排列中,有一些排列被称为“cute”排列。这些排列有一下特点:      1.这些栅栏的长度

vally1989的博客 1024

无实习经验?IT应届生简历封神思路:把校园经历写成offer收割机

摘要: IT应届生无实习经历如何打造竞争力简历?本文揭秘“无实习简历封神指南”,通过四大步骤将校园经历转化为HR认可的硬核技能: 素材挖掘:课程设计、个人项目、社团活动、竞赛证书都是隐藏的“实战经验”,用STAR法则细化成果。 技能转化:匹配岗位JD关键词,用“动词+量化结果”包装经历(如“优化查询效率30%”)。 避坑指南:避免流水账、夸大技能或堆砌无关经历,聚焦技术能力与岗位需求。 核心逻辑:HR看重潜力而非经验,用校园经历证明学习能力、问题解决能力和技术落地能力。 无实习≠无竞争力,学会“翻译”经历,

通俗易懂学IT 421

poj解题报告——1037

题意:给定长度依次为1到n的木棒n个, 摆放规则为除了两边的木棒,剩下的木棒必须要比相邻的两个都高或者都低。求从小到大排列的第c个序列。         题解:状态方程dp[i][j][0]用来求在i个木棒中以第j根木棒打头且前两根为升序的排列方案数, dp[i][j][1]用来求在i个木棒中以第j根木棒打头且前两根为降序的排列方案数 #include #include #define m

Lingfu74的专栏 551

Google Earth Engine——使用STARFM 图像融合算法将Landsat 和 MODIS 融合得出2000-2023 NDVI长时序图(空间分辨率为 30 米、时间分辨率为 16 天)

非本地入侵物种是全球生态系统面临的主要威胁之一。野葛(Pueraria montana)是一种生长迅速的藤本植物,原产于亚洲,现已入侵美国一些地区,因此该物种的管理成为一个重要问题。利用 Landsat 和 MODIS 平台收集的数据,计算了 2000 年至 2015 年肯塔基州三个侵扰地点的归一化差异植被指数(NDVI)估算值。使用 STARFM 图像融合算法将大地遥感卫星和 MODIS 得出的 NDVI 结合成空间分辨率为 30 米、时间分辨率为 16 天的时间序列。

此星光明博客 2509

基于Simulink的鲸鱼优化算法(WOA)MPPT仿真

摘要:本文介绍了基于Simulink的鲸鱼优化算法(WOA)在光伏MPPT控制中的应用。WOA模拟座头鲸的"气泡网捕食策略",通过包围猎物、螺旋收缩和随机搜索三阶段动态平衡全局探索与局部开发能力,有效解决局部阴影导致的多峰P-V曲线问题。文章详细讲解了WOA-MPPT的Simulink建模过程,包括多峰光伏阵列建模、WOA控制器实现和Boost变换器控制。仿真结果显示,在三种典型工况下,WOA-MPPT的追踪效率>99.3%,动态响应时间<0.15s,性能优于传统算法。最后提出了混合WO

amy_mhd的博客 72

poj1037

【代码】poj1037。

2401_89287074的博客 162

智联招聘Python岗位数据采集:基于API请求的校园招聘信息爬取实战

本项目开发了一个智联招聘Python岗位校园招聘数据采集系统,采用requests库直接调用API接口获取结构化数据。系统通过分析API接口结构,配置完整的请求头、Cookie和身份验证参数,实现了10页数据的批量采集。采集内容包括工作名称、薪资范围、企业信息等10个关键字段,并存储为Excel格式。项目严格遵守网络爬虫规范,合理控制请求频率,数据仅用于技术学习和就业分析。技术实现涉及API逆向工程、JSON数据处理、防御性编程等核心技能,为学生职业规划和教育机构教学改革提供数据支持。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 626

poj1037 dp +排列计数

poj1037 dp +排列计数 今天学习dp  看的是北大培训的课件 看到了这道题  开始看的时候  就算知道是dp 也不知道怎么去写  后面看了ac代码 直接写思路  c[i][k][down]表示的是前i根木头中 以k打头阵的down总数                     //c[i][k][up]表示的是 前i根木头中 以k打头阵的up总数 再写这道题时  首

liyanfeng1996的博客 459

android 蓝牙通讯demo

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

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

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

POJ 1037 DP

题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!!          (参考于:http://blog.youkuaiyun.com/sj13051180/article/details/6669737 ) #include #include #include #include #include #include #include

PWZER 781

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

poj 1037(经典dp)

题目链接:http://poj.org/problem?id=1037 理解了牛人的代码才明白的,花了一晚上的功夫,orz....跪dp. 思路:dp[len[i][0]表示长度为len的以i开始的前两个下降的序列的个数,dp[len][i][1]表示长度为len的以i开始的前两个上升的序列的个数; 则有 dp[len][i][0]+=dp[len-1][j][1](j dp[len][

几百个教授的专栏 450

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[POJ 1037] A decorative fence

[题目链接] http://poj.org/problem?id=1037 [算法] DP [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> ...

89

POJ 1037 DP

题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.youkuaiyun.com/sj13051180/article/details/6669737 ) #include <iostream> #include <cstdio> #include <c...

weixin_30606669的博客 70

DP---基本思想 具体实现 经典题目 POJ1160 POJ1037

DP---基本思想 具体实现 经典题目 POJ1160 POJ1037 POJ1160, post office。动态规划的经典题目。呃,又是经典题目,DP部分的经典题目怎就这么多。木有办法,事实就这样。 求:在村庄内建邮局,要使村庄到邮局的距离和最小。 设有m个村庄,分别为 V1 V2 V3 … Vm, 要建n个邮局,...

weixin_30882895的博客 85

POJ 1037 动态规划 计数问题

POJ 1037 计数DP难题。 这个题真正的难点并不在求出总的组合数,而在于如何将解还原出来。首先我们建立状态转移方程。我们定义 高低高低高 为0型,定义 地高低高低高 为1型,假设S[i]为长度为i的可行方案的全部升序数列集合。S[i][j]是开头第j大的可行方案的全部数列集合 dp[...

chuizhuanrun0253的博客 266

Poj1037 A decorative fence(DP好题)

题目链接:http://poj.org/problem?id=1037 题意:给你N个板子,每个板子长度都不一样。长度为1~n,使板子排列成波浪形,即对于对于1#include <iostream> #include<algorithm> #include<cstring> using namespace std; #define LL long long LL dp[25][25][2];//0

Hawkeye_z的博客 871

poj1037 DP

转载:http://archive.cnblogs.com/a/2122079/ up[n][k]         长度为n以k开始的,前两个数呈上升趋势的数列的个数 down[n][k]     长度为n以k开始的,前两个数呈下降趋势的数列的个数 up[n][k] = sigma(down[n-1][i])      k down[n][k]= sigma(up[n-1][i])

浅空之下 2004

poj 1037 A decorative fence dp+序列构造

//poj 1037 //sep9 #include using namespace std; typedef long long ll; ll dp[32][32][2]; bool vis[32]; int main() { memset(dp,0,sizeof(dp)); dp[1][1][0]=dp[1][1][1]=1; for(int len=2;len<=20;++len)

sepNINE的专栏 869

POJ 1037 A decorative fence DP+排列计数 *

题目地址:http://poj.org/problem?id=1037  #include #include #include #include using namespace std; typedef long long LL; const int UP=0,DOWN=1,maxn=20+5; LL C[maxn][maxn][2],R; //C[i][k][DOWN] 是S(i)中以第k短的

BRCOCOLI的博客 309

poj 1037 DP

大致就是一位一位的遍历,比方说第一位,看1在最前有temp种情况,然后temp和C比较,如果比C大,第一位为1,否则C=C-temp,看2在第一位有多少种情况,然后和C比较,依次类推 long long DFS( int statu, int a, int b )   statu == 0 表示之前是递减,然后有a个大数,b个小数的个数 statu == 1 表示之前是递增,然后有a个大数,

马德里小铁匠的铁匠铺 717
上一篇: 【DP】hdu3507
下一篇: 【数论】Codeforces Round #334 (Div. 2) D
Pro_space
博客等级 码龄12年 1粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值