首页 > 其他分享 >CF1928E Modular Sequence

CF1928E Modular Sequence

时间:2024-02-12 18:00:14浏览次数:34  
标签:Sequence int 2y times Modular cdots CF1928E 操作 include

原题链接

设 \(p=x\bmod y\)。思考发现本质是 \(x,x+y,x+2y,\cdots,x+k_1y,p,p+y,p+2y,\cdots,p+k_2y,p,p+y,p+2y,\cdots,p+k_3y\cdots\),即每次二操作会使 \(y\) 的系数变为 \(0\)。

枚举第 \(i\) 次操作是第一次二操作,记 \(s_1=s-(i\times x+y\times\dfrac{i(i-1)}{2}+(n-i)\times p)\),也就是第一次二操作后通过若干个 \(y\) 凑出来的数,当 \(s1<0\) 或者 \(y\nmid s1\) 时不合法。

那么我们现在要使系数和为 \(\dfrac{s1}{y}\) 且操作次数不大于 \(n-i\) 次,所以可以用一个背包来找出凑出系数 \(j\) 的最小操作数。连续的 \(1\) 次二操作和 \(i-1\) 次一操作可以获得 \(\dfrac{i*(i-1)}{2}\) 的贡献,可知有用的 \(i\) 是根号级别的,直接背包,然后记录一下 DP 路径,最后就可以输出方案了。注意如果最少操作数小于 \(n-i\),那么要多进行几次二操作来补满。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=2e5+10,INF=1e9+7;
int T,n,x,y,s,f[MAXN],d[MAXN];
inline bool B(int k,int s)
{
    if(s<0||s%y) return false;
    if(f[s/y]>k) return false;
    s/=y;cout<<"Yes\n";
    for(int i=1;i<=n-k;++i) cout<<x+(i-1)*y<<' ';
    for(int i=1;i<=k-f[s];++i) cout<<x%y<<' ';
    while(s)
    {
        for(int i=1;i<=d[s];++i)
            cout<<x%y+(i-1)*y<<' ';
        s-=d[s]*(d[s]-1)/2;
    }
    cout<<'\n';return true;
}
inline void work()
{
    cin>>n>>x>>y>>s;bool flag=false;
    for(int i=1;i<=n;++i)
        if(B(n-i,s-(x*i+i*(i-1)/2*y+(n-i)*(x%y))))
            {flag=true;break;}
    if(!flag) cout<<"No\n";return ;
}
signed main()
{
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(0);
    for(int i=1;i<=200000;++i) f[i]=INF;
    for(int i=1;;++i)
    {
        int cur=i*(i-1)/2;if(cur>200000) break;
        for(int j=cur;j<=200000;++j)
        {
            if(f[j-cur]+i<f[j])
                f[j]=f[j-cur]+i,d[j]=i;
        }
    }
    cin>>T;while(T--) work();
    return 0;
}

标签:Sequence,int,2y,times,Modular,cdots,CF1928E,操作,include
From: https://www.cnblogs.com/int-R/p/18014004/CF1928E

相关文章

  • CF1928E 题解
    \(\textbf{ProblemStatement}\)给定\(n,x,y,s\),构造长度为\(n\)的序列\(a\),满足:\(a_1=x\)。\(\foralli\in[2,n],a_i=a_{i-1}+y\)或者\(a_i=a_{i-1}\bmody\)。\(\sum\limits_{i=1}^na_i=s\)。给出构造或报告无解。\(\sumn,\sums\le......
  • AT_abc270_g [ABC270G] Sequence in mod P 题解
    题目传送门前置知识大步小步算法解法递推式为\(x_{n}=(ax_{n-1}+b)\bmodp\),发现可以统一消去\(\bmodp\),只在最后参与计算。以下过程省去模运算。当\(x_{0}=t\)时,则\(n=0\)即为所求。当\(a=0,x_{0}\net\)时,递推式转化为\(x_{n}=b\bmodp\)。若\(b=t\),则......
  • CF1922E Increasing Subsequences 题解
    解题思路因为可以有空集,那么我们首先构造第一段最长的连续上升的序列,那么这段序列中共有\(2^{\mids\mid}\)个上升子序列。接下来我们考虑补全剩余的,我们不妨将剩余的部分全部设为连续不增序列,那么设当前位置在第一段中有\(k\)个小于它的,那么添加这个数后可以增加\(2^{k-1}......
  • ABC240Ex Sequence of Substrings
    题意简述有长度为\(n\)的01串,你现在要选出\(k\)个两两无交子串,使得将\(k\)个子串按照出现位置排序后,后者的字典序严格比前者大。最大化\(k\)。\(\bm{n\le2\times10^4}\)。分析首先的首先观察数据范围可知此题应该是个线性根号对数的时间复杂度首先有个显然的\(O(n......
  • [AGC024E] Sequence Growing Hard 题解
    题目链接点击打开链接题目解法考虑如何添加数,使得\(\{a_1,...,a_i\}\)到\(\{a_1,...,x,a_j,...,a_i\}\)是合法的需要手玩一会才能发现合法条件很简单:\(x>a_j\)考虑对这个进行计数一个一个添元素是难维护的,现在假设有最终的序列,每个位置有\((v,dfn)\),分别为值和添加的次......
  • CF1924D Balanced Subsequences
    题意简述有\(n\)个左括号和\(m\)个右括号,求最长合法括号子序列长度为\(2k\)的括号序列的数量,对\(10^9+7\)取模。多组数据。\(T\le3\times10^3,n,m,k\le2\times10^3\)分析可能需要的前置知识:如何求一个字符串的最长合法括号子序列?维护一个括号栈,若遇到左括号则直接......
  • CodeForces 1924D Balanced Subsequences
    洛谷传送门CF传送门发现去掉匹配的\(2k\)个括号后,剩下的串一定形如\())\ldots)((\ldots(\),其中右括号数量为\(a=m-k\),左括号数量为\(b=n-k\)。考虑把剩下的串像\())\ldots)\mid((\ldots(\)一样分成两半。枚举左半边加入了\(\frac{i}{2}\)对匹配,则......
  • [ARC170C] Prefix Mex Sequence
    给定\(n,m,S_1\simS_n\),当\(S_i=0\)时\(A_i\neq\mathrm{mex}(A_1\simA_{i-1})\),反之\(A_i=\mathrm{mex}(A_1\simA_{i-1})\),求值域为\([0,m]\)的\(A\)的数量\(\bmod\998244353\)。\(1\len\le5000,0\lem\le10^9\)。看到题目就会想到......
  • ARC170C Prefix Mex Sequence
    题意简述有长度为\(n\)的\(s_i=0/1\),求满足下列条件的长度为\(n\)的序列\(a\)的个数,对\(998244353\)取模:\(\foralli,0\lea_i\lem\)当\(s_i=0\)时,\(a_i\not=\operatorname{mex}(a_1,a_2,\cdots,a_{i-1})\)当\(s_i=1\)时,\(a_i=\operatorname{mex}(a_1,a_2,\......
  • B - Arithmetic Progression Subsequence
    B-ArithmeticProgressionSubsequenceProblemStatementYouaregivenasequence$A$oflength$N$consistingofintegersbetween$1$and$\textbf{10}$,inclusive.Apairofintegers$(l,r)$satisfying$1\leql\leqr\leqN$iscalledagoodpairif......