首页 > 其他分享 >AT_abc243_g [ABC243G] Sqrt 题解

AT_abc243_g [ABC243G] Sqrt 题解

时间:2024-02-01 20:14:17浏览次数:28  
标签:long limits int 题解 sum sqrt abc243 Sqrt 复杂度

可设 \(f_i\) 为以 \(i\) 开头的方案数,由于最后由于操作数很多所以不用考虑还剩多少次操作,显然可得状态转移方程 \(f_i=\sum\limits_{j=1}^{\sqrt i}f_j\),时间复杂度 \(O(T+ X\sqrt X)\),空间复杂度 \(O(X)\),无法接受。

考虑如何更优,可以发现在 \(T\) 次询问中,每次可以直接转移,因此仅需要预处理 \(1\sim \sqrt X\) 区间的 \(f\),这样让空间降下来了,但是时间复杂度无法接受。

既然 \(f_i=\sum\limits_{j=1}^{\sqrt i}f_j\),那么在每次询问中最好的情况是直接知道 \(\sum\limits_{j=1}^{\sqrt i}f_j\) 的值,考虑计算出 \(1\sim \sqrt[4]{X}\) 的值对所有 \(f_j\) 的影响,不难得出 \(k\) 的第一次造成影响应从 \(k^2\) 起至 \(\sqrt[4]{X}\),则将出现次数乘上方案数即为最终答案,答案为 \(\sum\limits_{k=1}^{\sqrt[4]{X}}(f_k\times(\sqrt X - k^2+1))\)。

注意需要提前预处理 \(1\sim \sqrt[4]{X}\) 的 \(f\) 值。此题由于数据范围过大,直接用 sqrt() 肯定有误差,需要先强制转 long double 类型。

#include<bits/stdc++.h>
#define N 2000005
#define mod 998244353
#define int long long
using namespace std;
int n,m,dp[N],f[N];
signed main(){
    int T;
    cin>>T;
    f[1]=1;
    for(int i=2;i<=500000;i++){
        for(int j=1;j<=sqrt((long double)i);j++) f[i]=(f[i]+f[j]);
    }
    while(T--){
        cin>>n;
        int res=0;
        int k=sqrt((long double)n);
        for(int i=1;i<=(int)sqrt((long double)k);i++){
            dp[i]=f[i]*(k-i*i+1);
            res=(res+dp[i]);
        }
        cout<<res<<endl;
    }
}

标签:long,limits,int,题解,sum,sqrt,abc243,Sqrt,复杂度
From: https://www.cnblogs.com/Telsif/p/18002016

相关文章

  • UVA12032 题解
    题意原题面一堆废话,其实这道题很简单。\(T\)组数据,每组数据给定你一个长度为\(n\)的序列\(a_1...a_n\),在定义\(a_0\)为\(0\)的情况下,假设\(k\)为你的力量系数,在\(\foralli\inn\)时\(a_i-a_{i-1}\lek\),且在按顺序\(1-n\)进行判断时,如果\(a_i-a_{i-1}=k\)......
  • 一般图最小匹配 题解
    首先进行排序,显然只有排序后相邻两个元素匹配才有可能成为答案。我们设\(b_i=a_i-a_{i-1}\),则问题转化为:在\(b\)数组中选\(m\)个数(显然一个\(b\)),两两不能相邻,求这些数和最小值。就和这道题一模一样了,使用反悔贪心。具体的,我们可以将所有\(b_i\)放进小根堆里,每次取出......
  • PMP-6.8 控制资源--问题解决
    一、控制资源基础内容 0.涉及领域:资源管理计划资源管理计划为如何使用、控制和最终释放实物资源提供指南。1.控制资源阶段需参照文档(1)问题日志问题日志用于识别有关缺乏资源、原材料供应延迟,或低等级原材料等问题。(2)经验教训登记册在项目早期获得的经验教训可......
  • CF1753D 题解
    因为最后要找的是“腾出空位”的最小代价。所以不妨把“障碍的移动”转化为“空位的移动”。令\(f_{x,y}\)为:使得\((x,y)\)为空,至少需要多少代价。下面来找转移方程,显然转移方程与空格子移动有关。所以观察空格子移动的规律。若当前格子\((x,y)\)为L。以\((x,y+1)\)......
  • P7031 [NWRRC2016] Anniversary Cake 题解
    作者还在想,居然没什么人写红题题解???咳咳。言归正传。本题没有想象中的那么复杂,咱分类讨论就行了。·若在属于蛋糕的平面直角坐标系中,两支蜡烛的横、纵轴不同,就会有多种切法。如图:           这样,我们随便找一种情况输出就行,反正有SpecialJudge......
  • A+B problem 题解
    先把一个单项式理解为:符号,系数的绝对值,字母,指数。为了方便操作,一口气读完整个字符串(数组),然后去扫描。因为如果第一项为整数的话没有符号,判一判。读入系数的绝对值像快读。如果有\(\texttt{^}\)这个符号,读一下之后的指数。由于只有三个字母,所以可以复制粘贴,不用写冗余的......
  • CEIT算法训练-双指针部分题解(T1-3)
    AnagramSearch题意简述两个字符串\(s\)和\(t\)相似的定义为:\(s\)可以打乱之后重新排列成为\(t\)。题目给出\(a\)和\(b\),问\(a\)中有多少子串(连续的一段)与\(b\)相似。同时,\(a\)中还含有\(?\)字符,他可以等价于任何字符(可以变成任何字符)解题思路实际上,根据题......
  • 题解 P6491 [COCI2010-2011#6] ABECEDA
    传送门。分析两个字符大小关系不变,并且具有传递性,我们可以联想到拓扑排序来解决。因此,我们就通过字符串的大小关系,推断出一些字符的大小关系,然后拓扑排序即可。#include<bits/stdc++.h>#include<vector>#include<string>#include<queue>//#defineintlonglongusing......
  • [ARC154E] Reverse and Inversion 题解
    题目链接点击打开链接题目解法\(\sumj-i\)是不好维护的,考虑把\(j-i\)拆成之和\(i,j\)相关的项可以得到:\(\sum\limits_{i<j}[p_i>p_j](j-i)=\sum\limits_{i=1}^ni(\sum\limits_{j=1}^{i-1}[p_j>p_i]-\sum\limits_{j=i+1}^n[p_j<p_i])=\sum\limits_{i=1}^ni(i-1-\sum\......
  • [AGC024E] Sequence Growing Hard 题解
    题目链接点击打开链接题目解法考虑如何添加数,使得\(\{a_1,...,a_i\}\)到\(\{a_1,...,x,a_j,...,a_i\}\)是合法的需要手玩一会才能发现合法条件很简单:\(x>a_j\)考虑对这个进行计数一个一个添元素是难维护的,现在假设有最终的序列,每个位置有\((v,dfn)\),分别为值和添加的次......