暑假集训csp提高模拟10

news/2024/11/15 19:42:08/文章来源:https://www.cnblogs.com/hzoi-Cu/p/18328603

赛时 rank 19,T1 0,T2 25 T3 10 T4 100

T3 挂了10pts?

数学专场,套路专场,烧脑专场。

幸亏我还有缓存的李超树博客,最后一个小时就溜了去打数据结构。

数学好难,拜谢数学。

T1 黑暗型高松灯

Company Acquisitions

要用势能分析,鞅的停时定理。由于赛时这个放T1非常逆天,所以整场比赛的奖励也十分逆天。
image

不会做,跳了。

T2 速度型高松灯

[HNOI2011] 数学作业

按位考虑,矩阵快速幂。

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define infile(x) freopen(x,"r",stdin)
#define outfile(x) freopen(x,"w",stdout)
#define errfile(x) freopen(x,"w",stderr)
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
#ifdef LOCALFILE *InFile = infile("in.in"),*OutFile = outfile("out.out");// FILE *ErrFile=errfile("err.err");
#elseFILE *Infile = stdin,*OutFile = stdout;//FILE *ErrFile = stderr;
#endif
#define int long long
int n,mod;
struct matrix{int s[3][3];matrix operator*(matrix a){matrix ans;memset(ans.s,0,sizeof ans.s);for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++)ans.s[i][j]=((ans.s[i][j]+a.s[i][k]*s[k][j])%mod+mod)%mod;return ans;}
}ans,base,k;
inline matrix new_one(){matrix a;memset(a.s,0,sizeof a.s);for(int i=0;i<3;i++)a.s[i][i]=1;return a;
}
inline matrix ksm(matrix a,int b){matrix ans = new_one();for(;b;b >>= 1,a = a*a)if(b&1)ans = ans*a;return ans;
}
__int128_t ten[22];
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout.tie(nullptr)->sync_with_stdio(false);cin>>n>>mod;n++;ten[0]=1;for(int i=1;i<=20;i++)ten[i]=ten[i-1]*10;memset(base.s,0,sizeof base.s);k.s[0][0]=0,k.s[1][0]=0,k.s[2][0]=1;base.s[0][2]=1,base.s[1][2]=1,base.s[2][1]=-1,base.s[2][2]=2;for(int i=1;i<=(int)ceil(1+log(n)/log(10.0));i++){base.s[0][0]=ten[i]%mod;if(n<ten[i]){k=k*ksm(base,n-ten[i-1]);return cout<<k.s[0][0],0;}k=k*ksm(base,ten[i]-ten[i-1]);}
}

T3 力量型高松灯

简单题

莫反,有个恶心的\((i+j)^k\)

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\mu^2(\gcd(i,j))\gcd(i,j)\\ =&\sum_{d=1}^n\mu^2(d)d\sum_{i=1}^n\sum_{j=1}^n(i+j)^k[\gcd(i,j)=d]\\ =&\sum_{d=1}^n\mu^2(d)d^{k+1}\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}(i+j)^k[\gcd(i,j)=1]\\ =&\sum_{d=1}^n\mu^2(d)d^{k+1}\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac nd\rfloor}(i+j)^k\sum_{e|i,e|j}\mu(e)\\ =&\sum_{e=1}^n\mu(e)e^k\sum_{d=1}^{\lfloor\frac ne\rfloor}\mu^2(d)d^{k+1}\sum_{i=1}^{\lfloor\frac n{de}\rfloor}\sum_{j=1}^{\lfloor\frac n{de}\rfloor}(i+j)^k\\ =&\sum_{T=1}^nS\left(\left\lfloor\frac nT\right\rfloor\right)T^k\sum_{d|T}\mu^2(d)\mu\left(\frac Td\right)d \end{aligned} \]

其中 \(S(n)=\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\)

考虑如何求\(S(n)\)

\(F(n) = \sum_{i=1}^ni^k,G(n)=\sum_{i=1}^nF(i)\),那么\(S(n)=G(2n)-2G(n)\)

线筛加前缀和就可以了

考虑后面的\(\sum_{d|T}\mu^2(d)\mu\left(\frac Td\right)d\)怎么求

我们设T有一个质因数p,若\(T=p^{3\,or\,more }\times sth.\),那么后面的就是0。

然后就没了

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define infile(x) freopen(x,"r",stdin)
#define outfile(x) freopen(x,"w",stdout)
#define errfile(x) freopen(x,"w",stderr)
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
#ifdef LOCALFILE *InFile = infile("in.in"),*OutFile = outfile("out.out");// FILE *ErrFile=errfile("err.err");
#elseFILE *Infile = stdin,*OutFile = stdout;//FILE *ErrFile = stderr;
#endif
#define int long long
const int N = 1e7 + 10,mod = 998244353;
bitset<N> pd;
vector<int> prime;
int f[N],F[N],n,k;
inline int power(int a,int b,int mod){int res = 1;while(b){if(b&1) res = 1ll * res * a % mod;b >>= 1;a = 1ll * a * a % mod;}return res;
}
inline void Sieve(int n) {f[1] = F[1] = 1;for(int i = 2; i <= n; ++i) {if(!pd[i]) prime.push_back(i),f[i] = i - 1,F[i] = power(i,k,mod);for(auto j : prime) {if(i * j > n) break;int p = i * j;pd[p] = true;F[p] = 1ll * F[i] * F[j] % mod;if(i % j == 0) {int q = i / j;if(q % j) f[p] = 1ll * (mod - j) * f[q] % mod;break;} f[p] = 1ll * f[i] * (j - 1) % mod;}}for(int i = 2; i <= n; ++i) f[i] = (f[i - 1] + 1ll * f[i] * F[i] % mod) % mod,F[i] = (F[i] + F[i - 1]) % mod;for(int i = 2; i <= n; ++i) F[i] = (F[i] + F[i - 1]) % mod;
}
inline int solve(int n){return (F[n<<1] - 2ll*F[n]%mod + mod)%mod;}
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout.tie(nullptr)->sync_with_stdio(false);cin>>n>>k;k %= (mod-1);Sieve(n<<1);ll ans = 0;for(int l = 1,r;l <= n;l = r + 1){r = n / (n / l);ans = (ans + 1ll * (f[r]-f[l-1]+mod)%mod*solve(n/l)%mod)%mod;}cout<<ans;
}

T4 高松灯

贪心。

从低到高填9,计算答案即可。
特判第一位,如果后面的超限,那么就填第一位的数字-1,反之就填第一位的数字。

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define infile(x) freopen(x,"r",stdin)
#define outfile(x) freopen(x,"w",stdout)
#define errfile(x) freopen(x,"w",stderr)
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
#ifdef LOCALFILE *InFile = infile("in.in"),*OutFile = outfile("out.out");// FILE *ErrFile=errfile("err.err");
#elseFILE *Infile = stdin,*OutFile = stdout;//FILE *ErrFile = stderr;
#endif
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout.tie(nullptr)->sync_with_stdio(false);ll n;cin>>n;ll ans = 0;bool flag = true;while(n > 9){int x = n % 10;if(x != 9) flag = false;ans += 9;n /= 10;}ans += (flag?n:n-1);cout<<ans;
}

总结

逆天模拟赛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-002

final关键字 final 关键字是最终的意思,可以修饰(类、方法、变量) 修饰类:该类被称为最终类,特点是不能被继承了。 修饰方法:该方法被称为最终方法,特点是不能被重写了。 修饰变量:该变量只能被赋值一次。 final修饰的变量必须赋值,要么在定义时赋值,要么在构造器中赋…

Java-001

Java入门 IDEA优化idea插件 翻译、阿里巴巴代码规范指导IDEA debug使用 Step into:单步执行(一行一行代码执行),如果遇到子函数,就会进入子函数,并且继续单步执行。就是每一行需要执行的代码都不跳过,一行一行进行。 Step over:在单步执行的时候,如果遇到子函数,并不…

ComfyUI插件:ComfyUI Impact 节点(二)

前言: 学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修…

java-03

集合进阶 集合容器中只能存放对象,基本数据类型需要使用对应的包装类 Collection单列集合 collection集合体系 collection常用方法package com.itheima.d1_collection;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.…

Nuxt.js 路由管理:useRouter 方法与路由中间件应用

title: Nuxt.js 路由管理:useRouter 方法与路由中间件应用 date: 2024/7/28 updated: 2024/7/28 author: cmdragon excerpt: 摘要:本文介绍了Nuxt 3中useRouter方法及其在路由管理和中间件应用中的功能。内容包括使用useRouter添加、移除路由,获取路由信息,基于History …

java-01

Java入门 IDEA优化idea插件 翻译、阿里巴巴代码规范指导IDEA debug使用 Step into:单步执行(一行一行代码执行),如果遇到子函数,就会进入子函数,并且继续单步执行。就是每一行需要执行的代码都不跳过,一行一行进行。 Step over:在单步执行的时候,如果遇到子函数,并不…

帝国CMS后台登录错误5次限制的解决办法

第一步,打开 /e/config/config.php 文件找到:loginnum ,这一项,将值由5改大一点即可。loginnum=>5,logintime=>60,logintime 就是锁定时间。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Jav…

eyoucms如何搬家?易优cms搬家教程

1,本地备份数据库 2,删除install_********目录下的install.lock文件 3,再改名install_1540256968 为install 4,删除data/runtime所有文件夹 5,打包根目录下所有文件,上传空间解压即可安装扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉…

安装界面不能正常显示

错误记录: 安装界面不能正常显示错误原因: 运行环境有问题解决方案: 运行环境有问题,使用记事本打开PHP配置文件php.ini: 设置short_open_tag = On 然后重启apache或iis设置才能生效。扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种C…

织梦dedecms数据库连接文件位置

一、织梦CMS(dedecms)的数据库连接文件位置:织梦CMS V5.1 在include\config_base.php织梦CMS V5.3 在\data\common.inc.php织梦CMS V5.5 在\data\common.inc.php织梦CMS V5.6 在\data\common.inc.php织梦CMS V5.7 在\data\common.inc.php 二、织梦CMS(dedecms)的数据库连接文件…

Trends in Plant Science | 植物生物学中的大语言模型

分享一篇来自南洋理工大学Marek Mutwil团队发表在《Trends in Plant Science》上有关植物生物学方向的大语言模型综述:Large language models in plant biology。生物序列本身就是一种自然语言,与LLM是天作之合,实际上生物大模型已有很多开发,只是解释太过复杂,大多是学术…

严建兵 | 玉米基因组育种的理论与实践

来源:第一届全国作物杂种优势与生物育种学术大会,严建兵老师报告《玉米基因组育种的理论与实践》。 声明:本文仅用于学习交流,不用于任何商业用途。文中所有转载的图片、音频、视频文件等知识归该权利人所有。如不慎侵犯权益,请后台联络,我们将第一时间删除。本文来自博客…