首页 > 其他分享 >P10886 【MX-S3-T2】「FeOI Round 1」Journey 题解

P10886 【MX-S3-T2】「FeOI Round 1」Journey 题解

时间:2024-08-17 21:26:23浏览次数:9  
标签:P10886 lceil ch S3 题解 right dfrac left mod

我们肯定是要先求出来一个位置被加的次数,然后和权值乘一下就行。

对于一个位置 \(i\),右端点 \(b\) 肯定是随便选,一共 \(n-i+1\) 种情况。再是对于每一种步长 \(c\),左端点 \(a\) 都有 \(\left\lceil\dfrac{i}{c}\right\rceil\) 种取值,暴力计算,时间复杂度 \(O(n^2)\)。(提交记录

考虑如何优化,对于第 \(i\) 个位置,设 $s_i = \sum_{c=1}^{n}{ \left\lceil\dfrac{i}{c}\right\rceil} $,那对于一个 \(c\),如果 \(\left\lceil\dfrac{i}{c}\right\rceil > \left\lceil\dfrac{i-1}{c}\right\rceil\),那么 \(i-1\) 一定是 \(c\) 的倍数。所以,\(i-1\) 有几个因数,\(s_{i}\) 就会变大多少,即 \(s_i = s_{i-1} + d_{i-1}\)。直接欧拉筛即可。

代码
#include<bits/stdc++.h>
using namespace std;
inline void rd(){}
template<typename T,typename ...U>
inline void rd(T &x,U &...args){
	char ch=getchar();
	T f=1;x=0;
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
	x*=f;rd(args...);
}
const int N=2e7+5,mod=1e9+7;
int n,a,b,c,gn;
int t[N],ans;
int pri[N],cnt,d[N],num[N];
bool vis[N];
inline void Euler(){
	d[1]=num[1]=1;
	for(int i=2;i<=n;i++){
		if(!vis[i]){
			pri[++cnt]=i;
			d[i]=2,num[i]=1;
		}
		for(int j=1;j<=cnt&&pri[j]*i<=n;j++){
			vis[pri[j]*i]=1;
			if(i%pri[j]==0){
				num[i*pri[j]]=num[i]+1;
				d[i*pri[j]]=d[i]/num[i*pri[j]]*(num[i*pri[j]]+1);
				break;
			}
			num[i*pri[j]]=1;
			d[i*pri[j]]=d[i]*2;
		}
	}
}
signed main(){
	rd(n,a,b,c,gn);
	t[1]=n;Euler();
	for(int i=2;i<=n;i++)t[i]=t[i-1]+d[i-1];
	ans=1ll*gn*t[n]%mod;
	for(int i=n-1;i>=1;i--){
		gn=(1ll*a*gn%mod*gn%mod+1ll*b*gn%mod+c)%mod;
		(ans+=1ll*gn*t[i]%mod*(n-i+1)%mod)%=mod;
	}printf("%d\n",ans);
	return 0;
}

标签:P10886,lceil,ch,S3,题解,right,dfrac,left,mod
From: https://www.cnblogs.com/11-twentythree/p/18364899

相关文章

  • P10888 【MX-S3-T4】「FeOI Round 1」醒餞の鳥 (feat. Feryquitous) 题解
    话说这题真的有紫吗(问号注意到数据范围中提到$\sum{nm}\le2\times10^5$,这里实际上是隐含了\(\min(n,m)\le\sqrt{2\times10^5}\)的。我们考虑根据\(n\)和\(m\)的大小关系设计出不同的算法。\(m<n\)一个比较直接的想法是对于每一个科目先按该科目的分数排序,这样......
  • 【MX-S3】梦熊周赛 · 提高组 3 & FeOI Round 1
    野心Journey题意:\(\text{range}(a,b,c)\)表示序列\[[a,a+c,a+2c,\cdots,a+kc]\]其中\(k\)是满足\(a+kc<b\)的最大非负整数。给定大小为\(n\le2\times10^7\)的数组\(g\),求\[\sum_{a=1}^n\sum_{b=a+1}^n\sum_{c=1}^n\sum_{i\in\tex......
  • 在相思树下 III 题解
    前言题目链接:洛谷。赛时脑子坨成一坨了,估计是T1的影响,写一篇题解来理清思路。题意简述给你一个长为\(n\)的序列\(a_{1\dotsn}\),你需要对它进行两种操作共\(n-1\)次。对一个长度为\(l\)的序列\(b_{1\dotsl}\)进行一次操作将会把序列变为一个长为\(l-1\)的序列......
  • n1gr tS0i 题解
    前言题目链接:洛谷。想了一个小时,想到后只用\(1\)分钟过了的题。官方题解过于晦涩,看到一篇很清晰的题解,于是写题解以记之。终于遇到时间瓶颈在输入的题目。题意简述有一个长度为\(n\)的\(\tt01\)串\(S\),你要对\(S\)进行恰好\(n\)次操作。每次操作选择\(1\leq......
  • 洛谷 B3735 B3736 B3787 题解
    嘿嘿我发烧已经好了!题目目录:No.1 B3735[信息与未来2018]圣诞树No.2 B3736[信息与未来2018]最大公约数No.3 B3787[信息与未来2023]精密计时 OK,开始正文!第一题:B3735[信息与未来2018]圣诞树 题目描述圣诞树共有 nn 层,从上向下数第 11 层有 11 个......
  • 题解:AT_arc181_b [ARC181B] Annoying String Problem
    思路首先我们可以根据两个字符串算出另外一个字符串\(T\)的长度。算出来之后,因为我们要满足等式两边完全相等,所以很容易得出这两个字符串应该都是由一些公共的字串拼接而成的。设\(S\)串中最小的周期为\(P\)。所以应该满足\(|P|\Large{\mid}\normalsize\gcd(|S|,|T|)\)......
  • 题解:AT_arc182_a [ARC182A] Chmax Rush!
    思路因为前面不允许出现比这次的替换的值还要大的情况,所以如果我们知道下标\(i,j\)满足\(i<j\)且\(V_i>V_j\)的话,我们就必须把它们两次修改分开。具体地:若\(P_i<P_j\):此时,我们只能将\([1,P_i]\)的值设为\(V_i\),将\([P_j,n]\)的值设为\(V_j\)。若\(P_i>P_j\):此......
  • P8735 蓝跳跳 题解
    Statement给出\(k,p,L\),数序列\(a\),满足如下条件:\(1\lea_i\lek\)\(\sum_ia_i=L\)\(\nexistsi,a_i\gep\landa_{i+1}\gep\)答案对\(20201114\)取模,\(p\lek\le1000,L\le10^{18}\).Solution30pts注意到可以dp,记\(f(i,0/1)\)为凑出\(i\)的方案......
  • INFS3208 – Cloud Computing
    SchoolofElectricalEngineeringandComputerScienceINFS3208–CloudComputingProgrammingAssignmentTaskI(10Marks)Taskdescription:Youareadeveloperataleadingsoftwaredevelopmentcompanytaskedwithcreatingascalableandefficientdeploy......
  • 信息学奥赛一本通编程启蒙题解(3011~3015)
    前言Hello大家好,我是文宇.正文3011#include<iostream>usingnamespacestd;intmain(){ inta,b,s; a=880; b=500; s=a*b; cout<<s; return0;}注:没有输入的都可以直接输出.3012#include<iostream>usingnamespacestd;inta,b,t;intmain(){ a=10;b=20......