首页 > 其他分享 >solution-cf236b

solution-cf236b

时间:2024-03-06 17:02:48浏览次数:22  
标签:mry int 题解 solution cf236b 记忆

题解 CF236B 【Easy Number Challenge】

原题

此题一个暴力就可以过了。

看着别的大佬不加记忆化吸口氧就过了,而我的却死活TLE

可能因为我人丑常数大?

注意到i*j*k的值会出现重复,所以考虑记忆化。

时间复杂度\(O(n^3\sqrt n)\),跑得飞快

代码

const int N = 1e6 + 10,M = 1073741824;
int a,b,c;
int ans = 0;
int mry[N];
int d(int i , int j , int k)
{
	int n = i * j * k;
	if( !mry[n] ) // 未被记忆化过
	{
		int sum = 0;
		for(int i = 1;i * i <= n;i++) // 统计因数个数
			if(n % i == 0)
				if(i * i == n)
					++sum; // n有一个因数i
				else
					sum += 2; // n有两个因数i,n/i
		mry[n] = sum; // 记忆化
	}
	return mry[n];
}
int main()
{
	cin >> a >> b >> c;
	for(int i = 1;i <= a;i++) // 大力三重循环!
		for(int j = 1;j <= b;j++)
			for(int k = 1;k <= c;k++)
				ans = ( ans + d(i , j , k) ) % M;
	cout << ans << endl;
    return 0;
}

标签:mry,int,题解,solution,cf236b,记忆
From: https://www.cnblogs.com/iorit/p/18056991

相关文章

  • solution-cf120e
    题解CF120E【PutKnight!】原题我一开始以为这题\(n\)为奇数就是先手赢,偶数就是后手赢没想到还真是这样那么要怎么证明呢?一般地,在一个空棋盘上下出一枚棋,会有8个格子被这颗棋限制:XXXXKXXXX容易看......
  • solution-at4703
    题解AT4703【RedorBlue】原题来介绍一下三元运算符:A?B:C如果表达式A为真,则执行B语句,否则执行C语句。其作用就相当于:if(A){ B;}else{ C;}例如1+1>2?puts("IAKIOI"):puts("qwq");将会输出qwq。那么此题代码就可以变得极简。代码#include<iostr......
  • solution-at945
    题解AT945【高橋君とお肉】原题来一篇正经的题解QwQ显然我们要把肉分成耗费时间尽量平均的两堆。于是考虑二分答案那么怎么检测一个答案的正确性呢?我们可以跑一个背包dp,让第一个烤肉架烤尽可能多的肉,最后检测第二个烤肉架能不能烤完剩下的肉即可。时间复杂度\(O(nlog^2n)......
  • p7915-solution
    P7915Solutionlink考虑枚举第一个操作选L还是R。这样原序列就被分为了两个栈,用四个指针\(p1,p2,p3,p4\)分别指向这两个栈的栈顶栈底。感性理解一下,某一个栈的栈顶\(x\)可以被pop当且仅当某一个栈的栈底等于\(x\)。于是直接dfs,每次优先选L,同时确定第\(2n-i+1\)......
  • p7914-solution
    P7914Solutionlink先考虑Subtask\(4\)。设\(dp_i\)表示长度为\(i\)的方案数,按题目定义转移:AB,ASB:\(\displaystyledp_n\getsdp_n+\sum_{i=1}^{n-1}\sum_{j=0}^kdp_i\timesdp_{n-i-j}\)(A):\(\displaystyledp_n\getsdp_n+dp_{n-2}\)(SA),(AS):\(\displa......
  • p7913-solution
    P7913Solutionlink先考虑有\(n\)个廊桥的分配。假设廊桥编号为\(1\simn\),我们用两个堆\(h1,h2\)分别存当前空闲的廊桥编号和正在使用廊桥的飞机的离开时间。对于国内和国外的飞机分别做一次以下操作:先按到达时间排序,从左到右扫,到第\(i\)架飞机的到达、离开时间为\(l_......
  • p5384-solution
    P5384Solutionlink弱化这题空间\(\mathcalO(n\logn)\)会MLE。考虑怎么搞到\(\mathcalO(n)\)。首先求k级祖先用树剖空间是\(\mathcalO(n)\)的。然后看看我们建线段树的过程,我们发现每次查询都是在对应深度的线段树里查,那么考虑把询问离线,把节点、询问对应到深度......
  • p4845-solution
    P4845Solutionlink考虑树形dp,对于每个\(u\)直接钦定它的三种可能状态:有灯,没灯但是被其他灯照亮,没灯也没被照亮。这样钦定会导致一些需要被照亮的点在当前子树中还未被照亮,需要依靠子树外的灯来照亮。称这种点为闲置点。状态内只需要记录闲置点中最深的到子树根的距离,以及......
  • p4632-solution
    P4632Solutionlink对时间扫描线,就变成支持单点加入删除一个颜色点,求所有颜色距离某个点的距离最大值。考虑二分答案,现在就是要检验\([x-mid,x+mid]\)内是否有\(1\simk\)颜色的点各至少一个。数颜色可以考虑维护\(pre_i\)表示上一个与该点同色的位置。然后区间\([l,r]......
  • p4555-solution
    P4555Solutionlink双回文串的左右两半部分显然是互相独立的。于是考虑求出\(lm_i\)表示以\(i\)结尾的最长回文子串长度,\(rm_i\)表示以\(i\)开头的最长回文子串长度,最后扫一遍所有的分隔符求\(lm+rm\)的最大值即可。考虑如何求\(lm,rm\)。先用manacher拉出\(p\),......