首页 > 其他分享 >P1464 Function

P1464 Function

时间:2024-04-10 10:35:48浏览次数:26  
标签:Function 20 P1464 LL && return dp lld

题目链接:

本题为一道极其经典的记忆化搜索模板题,务必搞懂并掌握记忆化搜索的常见书写格式。

主要思想就是用一个 \(dp\) 数组将每一个 \(w\) 函数的值存储起来,下一次检查 \(dp[a][b][c]\) 的值,如果已经算过就直接调用,可节省大量时间。

#include <cstdio>

using LL = long long;

LL dp[25][25][25];

LL w(LL a, LL b, LL c) {
	if (a <= 0 || b <= 0 || c <= 0) return 1;
	if (a > 20 || b > 20 || c > 20) return w(20, 20, 20);
	if (dp[a][b][c]) return dp[a][b][c];
	if (a < b && b < c) {
		return dp[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
	}
	return dp[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1);
}

int main()
{
	LL a, b, c;
	while (scanf("%lld%lld%lld", &a, &b, &c) != EOF) {
		if (a == -1 && b == -1 && c == -1) return 0;
		printf("w(%lld, %lld, %lld) = %lld\n", a, b, c, w(a, b, c));
	}
}

值得注意的一点是,若把判断语句写在函数一开始,还需先判断一下 \(a,b,c\) 是否合法。

LL w(LL a, LL b, LL c) {
    if (a >= 0 && a <= 25 && b >= 0 && b <= 25 && c >= 0 && c <= 25 && dp[a][b][c] != 0) return dp[a][b][c];
	if (a <= 0 || b <= 0 || c <= 0) return 1;
	if (a > 20 || b > 20 || c > 20) return w(20, 20, 20);
	if (a < b && b < c) {
		return dp[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
	}
	return dp[a][b][c] = w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1);
}

标签:Function,20,P1464,LL,&&,return,dp,lld
From: https://www.cnblogs.com/pangyou3s/p/18125490

相关文章

  • function ALV 获取OO ALV event ID
    SAPABAPALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例https://blog.csdn.net/zhongguomao/article/details/51775112 1.定义和注册事件接受器类*----------------------------------------------------------------------**CLASSLCL_EVENT_RECE......
  • xss.pwnfunction-Mafia
     这个是利用的构造函数用source来获取构造函数的源码并转化成小写Function(/ALERT(1337)/.source.toLowerCase())()或parseInt(string,radix)string:要被解析的字符串。radix:解析时使用的基数(进制)。可选参数,默认为10。用parseint将alert转成进制这里为什么用30因为在......
  • 题解 CF1942F【Farmer John's Favorite Function】
    萌萌F题,上大分。首先,如下定义\(g(i)\):\(g(1)=\lfloor\sqrt{a_1}\rfloor\);对于所有\(i>1\),\(g(i)=\lfloor\sqrt{g(i-1)+a_i}\rfloor\)。也就是将\(f(i)\)的每一步运算后都向下取整。注意到\(\lfloorf(i)\rfloor=g(i)\)恒成立,于是我们只需要转而求每次修改后\(g(n......
  • CF1942F Farmer John's Favorite Function
    题意简述定义\(f_i=\sqrt{f_{i-1}+a_i},f_0=0\)。有\(q\)次操作,每次操作单点修改一个\(a_i\)的值,每次修改后求\(\lfloorf_n\rfloor\)的值。\(n,q\le2\times10^5,0\lea_i\le10^{18}\)。分析发现这个\(f_i\)不是整数非常不利于我们做题,考虑将它变成整数。令新的......
  • flask 装饰器 AssertionError: View function mapping is overwriting an existing en
    1问题描述写了一个登陆认证装饰器,部分试图,只有用户登陆才能访问deflogin_wrapper(func):definner(*args,**kwargs):"""判断是否登陆若是进入视图函数否则重定向到登陆页面"""if......
  • CodeForces 1942F Farmer John's Favorite Function
    洛谷传送门CF传送门考虑一些复杂度带根号的做法。考虑分块,对于一个块,我们需要处理出一个数经过这个块会变成哪个数。以下假设块长\(\ge10\)(最后一个块块长可能\(<10\),暴力处理即可)。观察这个递推式\(f_i=\left\lfloor\sqrt{f_{i-1}+a_i}\right\rfloor\),发现对于一......
  • Anu Has a Function
    题目链接CodeforcesRound618(Div.1)A.AnuHasaFunction思路:我们把每个二进制位上的111看作是集合的不同的元素,二进制的位运算(按位与,按位或,按位异或)其实可以......
  • Javascript 变量类型 Object 和 Function 讲解
    在JavaScript中,Object 和 Function 是两种非常重要的类型,但它们之间也有一些关键的区别和联系。Object类型在JavaScript中,几乎所有的事物都是对象,包括原始值(如数字和字符串)的包装对象、数组、函数,以及使用字面量语法或构造函数创建的对象实例。对象是一个复合值,它可以包......
  • 【Azure Function & Application Insights】在Azure Function的日志中,发现DrainMode m
    问题描述ApplicaitonInsights收集了AzureFunction的日志,定期发现有”DrainModemodeenabledTraces“。DrainMode是什么意思呢? 问题解答排出模式(Drainmode) 属于FunctionApp 缩放机制中的一部分,当后台检测到FunctionApp请求量不再需要当前的instance时会停止对......
  • vue xxx.find is not a function;
    错误:1.后端获取数据集合,存到 vuex store 中和本地 window.localStorage;2.因为要解决刷新丢失问题在routeconfig中路由拦截重新 拿到本地数据window.localStorage 保存到store中;3.界面刷新报错:vuexxx.findisnotafunction分析:1.xxx类型确实不是数组;......