本场考试考的很撇,值得反思,暴露出很多问题,望及时的拨乱反正,改掉操之过急,心态不稳定的缺点

2021年10月8日模拟赛(保龄奇遇记)

太菜了

T1 话中有话

有些词是多义词。这就导致同一句话可能有多种解读,即话中有话。
何老板给你一个字符串AAA,同时给你一个单词BBB。单词有两种不同的含义。
何老板想知道,字符串AAA有多少种不同的解读?

solution:dp+kmp(ac自动机)dp+kmp(ac自动机)dp+kmp(ac自动机)
dp[i]=dp[i−1]+(fail[i]==lenb)?dp[i−lenb]:0;dp[i] = dp[i-1] + (fail[i]==lenb)?dp[i-lenb]:0; dp[i]=dp[i−1]+(fail[i]==lenb)?dp[i−lenb]:0;

T2岛中有桥

有一个岛国,该国由个nnn岛构成。该国政府想要在岛间建一些桥,把所有岛都连接起来。
何老板承包了该国的建桥工程。经过实地的测量,何老板发现,受地理条件的限制,有mmm对岛间是不能建桥的。其余的岛两两间都可以建桥。这样可能没法让所有岛都连通起来,只能形成若干相互连通的岛团。 该国政府决定把连通的岛团都设置为一个省,但希望省的个数尽量少。何老板想知道,最少能形成多少个省?每个省管辖的岛有几个?

solution:bfs+染色bfs+染色bfs+染色

我们可以将未染色的点存储起来,然后依次取出其中的点,然后可以进行bfs.

时间复杂度的分析:连通块内节点的个数为k,那么k个节点会向所有不在连通块内的所有节点连边,L = k*(n-k);

  • 当n = 200000,k = 1,剩下的节点在一个连通块中,所有最多进行两次bfs;
  • 当n = 1000,k = 200,剩下的节点也不会太多.

总结:此题最重要的就是时间复杂度的分析,因为一开始看到此题都会觉得不太可做,所以时间复杂的分析显得尤为重要,这样才可以让我们选择合适且高效的方法解题,该选择暴力的时候要胆大而心细.

T3 书中有学:

何老板给你两个整数aaa和nnn,请你帮忙计算:

∑x=1n∑y=1ngcd(ax−1,ay−1)\sum_{x=1}^{n}\sum_{y=1}^{n}{gcd(a^x-1,a^y-1)}∑x=1n​∑y=1n​gcd(ax−1,ay−1)

我们来化简这个式子(假设x>y)
gcd(ax−1,ay−1)=gcd(ax−ay,ay−1)gcd(a^x-1,a^y-1) = gcd(a^x-a^y,a^y-1) gcd(ax−1,ay−1)=gcd(ax−ay,ay−1)
=gcd(ay∗(ax−y−1),ay−1)=gcd(ax−y−1,ay−1)=gcd(a^y*(a^{x-y}-1),a^y-1) = gcd(a^{x-y}-1,a^y-1) =gcd(ay∗(ax−y−1),ay−1)=gcd(ax−y−1,ay−1)

=agcd(x,y)−1=a^{gcd(x,y)} - 1 =agcd(x,y)−1

  • 于是我们将原方程转化为∑x=1n∑y=1nagcd(x,y)−1\sum_{x=1}^{n}\sum_{y=1}^{n}{a^{gcd(x,y)}-1}∑x=1n​∑y=1n​agcd(x,y)−1

然后到这里我们可以用一个nlnnnln{n}nlnn的算法来得到70分.直接拿分走人(到本蒟蒻考试时的推进极限了)

  • 更近一步∑d=1nad∗∑x=1n∑y=1n[gcd(x,y)=d]−n2\sum_{d=1}^{n}{a^d*\sum_{x=1}^{n}\sum_{y=1}^{n}{[gcd(x,y)=d]}} - n^2∑d=1n​ad∗∑x=1n​∑y=1n​[gcd(x,y)=d]−n2

=∑d=1nad∗∑x=1⌊n/d⌋∑y=1⌊n/d⌋[gcd(x,y)=1]−n2=\sum_{d=1}^{n}{a^d*\sum_{x=1}^{\lfloor{n/d}\rfloor}\sum_{y=1}^{\lfloor{n/d}\rfloor}{[gcd(x,y)=1]}} - n^2=∑d=1n​ad∗∑x=1⌊n/d⌋​∑y=1⌊n/d⌋​[gcd(x,y)=1]−n2

  • 继续化简(欧拉函数)本蒟蒻不太会只有直接看题解上的解析了后面的明天再推进吧
  • 最后化简成=∑d=1nad∗2∗∑x=1⌊n/d⌋ϕ(x)−n2=\sum_{d=1}^{n}{a^d* 2*\sum_{x=1}^{\lfloor{n/d}\rfloor} {\phi(x) }} - n^2=∑d=1n​ad∗2∗∑x=1⌊n/d⌋​ϕ(x)−n2

solution:欧拉筛(求欧拉函数)+整数分块+等比数列求前缀和欧拉筛(求欧拉函数)+整数分块+等比数列求前缀和欧拉筛(求欧拉函数)+整数分块+等比数列求前缀和

最后展示下代码

#pragma GCC optimize(3)
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mo = 1e9+7;
const int N = 1e6+10;
ll a,n;
ll prime[N],phi[N],p[N],sum[N];
void init(){int cnt = 0;p[0] = p[1] = 1;phi[1] = 1;for(int i=2;i<N;i++){if(!p[i]){prime[++cnt] = i;phi[i] = i-1;}for(int j=1;j<=cnt&&i*prime[j]<N;j++){int t = i*prime[j];p[t] = 1;if(i%prime[j]==0){phi[t] = phi[i]*prime[j];break;}phi[t] = phi[i]*(prime[j]-1);}}for(int i=1;i<N;i++)sum[i] = (sum[i-1] + phi[i]) %mo;
}//筛法求欧拉函数,sum[]求取前缀
/*
我们来感性证明筛法求欧拉函数的正确性.
首先对于i,和质数p,t = p*i;
如果i与p互质,phi[t] = phi[i] * phi[p],意思是说所有的与i互质的数和与p互质的数,两两相乘也一定是与互质
如果不互质的,与i互质的数加上p的整数倍依然与i互质,也就与p互质
*/
ll quick_pow(ll x,ll cnt){ll res = 1;for(;cnt;cnt>>=1,x=x*x%mo)if(cnt&1)res = res*x%mo;return res;
}
int main(){init();int T;scanf("%d",&T);while(T--){scanf("%lld%lld",&a,&n);if(a==1){puts("0");continue;}ll inv = quick_pow(a-1,mo-2),ans = (mo-n*n)%mo,pre = 0,num;for(int l=1,r,cnt;l<=n;l=r+1){cnt = n/l;r = n/cnt;num = inv*(quick_pow(a,r+1) - a)%mo;ans = (ans + (sum[cnt]*2%mo-1)*(num-pre)%mo)%mo;pre = num;}ans = ((ans%mo)+mo)%mo;printf("%lld\n",ans);}return 0;
}

T4 山中有牛

何老板到喜马拉雅山区去旅行,他发现有nnn个村庄分布在高山上,村庄编号到,通过n−1n-1n−1条长度相等的山路连接起来,山路可以双向行走,任意两个村庄都可相互到达。
iii号村庄的海拔高度为hih{i}hi,111号村庄海拔最高,离村庄越近的村庄海拔越高。即如果村庄iii到村庄111的距离小于村庄jjj到村庄111的距离,那么有hi>hjh{i} > h{j}hi>hj

山里的居民大都会养牦牛,不同的牦牛适应海拔高度不同。比如,在kkk号村庄诞生了一头牦牛,兽医对它进行了体检,得出的结论是该牦牛只能在海拔高度[a,b][a,b][a,b]范围能生存。超过这个海拔范围就会有生命危险。

今天共诞生了mmm头牦牛,已知每头牦牛所在的村庄和它能适应的海拔范围,何老板想知道,每头牦牛的活动范围有多大?即求出每头牦牛能够走到多少个村庄去。

solution:树上倍增 + dfsdfsdfs序 + 主席树

由题可得祖先的高度一定是高于子孙的,所以我们先将一头牛从其实村庄向上跳到他所能去的最高的村庄uuu,然后我们就查询以u号节点为根的子树中有多少节点的高度是大于下限的,于是我们利用dfsdfsdfs序的方式将树上区间转为序列,并建立一棵主席树方便查询.

2021年10月8日模拟赛(保龄奇遇记)相关推荐

  1. 湖南师范大学2021年4月1日愚人赛解题报告与标程

    湖南师范大学2021年4月1日愚人赛解题报告与标程 A 题目描述 标程 B 题目描述 标程 C 题目描述 标程 D 题目描述 解法 标程 E 题目描述 解法 F 题目描述 解法 标程 G 题目描述 标 ...

  2. 计算机视觉最新进展概览2021年10月31日到2021年11月6日

    参考计算机视觉最新进展概览2021年10月31日到2021年11月6日 - 云+社区 - 腾讯云 1.Learning Distilled Collaboration Graph for Multi- ...

  3. 2021年10月24日马丁加德纳聚会线上主题分享开启通知

    早点关注我,精彩不错过! 一年一度的Martin Gardner趣味数学盛会又要在本周末如期而至了!今年MatheMagician会继续参加并带来最新的数学魔术主题分享! 快点收藏会议地址,定好闹钟来 ...

  4. MySQL8.0.27版本于2021年10月19日正式GA和新功能介绍

    时隔3个月,MySQL的最新版本8.0.27于2021年10月19日正式GA.这是MySQL8.0的一个维护版本,除了修复207个Bug之外,还增加了一些新功能,让我们快速浏览一下: 多因素身份验证功 ...

  5. 前程无忧51job爬虫利用selenium爬取岗位信息-2021年10月29日

    # 2021年10月29日完成,爬取51job网站获得相关岗位信息 from selenium import webdriver from selenium.webdriver import Fire ...

  6. 【计蒜客模拟赛系列】-计蒜客2021年8月普及组模拟赛

    提前:本文中部分代码和思路有借鉴或摘抄计蒜客官方题解 赛后总结 本次模拟赛的难度总算正常了些 个人战绩: 220/400,排名61 ,太弱了,一大堆AK爷 题目质量评价: 题目相比CSP-J还是简单了 ...

  7. 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月21日更新)

    说明 勘误中的一部分,特别是很荒谬的错误,其实是编辑自作主张修改而且未和作者沟通造成的.有心的读者如果在网上能找到我在出版前发布的"草稿"版本,对比一下就知道. 例如: 原文写&q ...

  8. 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月9日更新)

    说明 勘误中的一部分,特别是很荒谬的错误,其实是编辑自作主张修改而且未和作者沟通造成的.有心的读者如果在网上能找到我在出版前发布的"草稿"版本,对比一下就知道. 例如: 原文写&q ...

  9. 2月3日模拟赛分析及总结

    本次模拟赛4道都是好题,第一题[蛇形矩阵]考查了数学知识,第二题[乌龟棋]是一道经典DPDPDP题,第三题[菜肴制作]是拓扑排序的模板题,第四题[拜年]为 FloydFloydFloyd 整体难度为黄 ...

最新文章

  1. 难点电路详解之负反馈放大器电路(4)
  2. eclise配置tomcat出现服务Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4 and Java EE 5 Web modules...
  3. mysql5.5安装配置 在阿里云服务器上 本地navicat连接
  4. Myeclipse下Maven的配置
  5. 注解和反射实现dao层增删改查
  6. java eventbus 原理_事件总线,事件驱动(RxJava,EventBus)与广播(BroadcastReceiver)(2)
  7. Android CheckBox
  8. [搜索引擎]Sphinx的介绍和原理探索
  9. 自学Java day12 使用jvav实现链表 从jvav到架构师
  10. 2019小程序发展趋势
  11. 用tailwindcss适配暗黑模式竟如此简单
  12. 流氓软件与流氓系统的清理故事
  13. 《MySQL系列-开发相关》MySQL新建数据库表并存储2010年到2030年的日期
  14. GitLab的使用之Git-biz push失败问题整理
  15. ORB-SLAM3从理论到代码实现(一):Optimizer单帧优化
  16. c++编译器常见warning与解决方案总结
  17. 八楼电梯的c语言程序,本科毕业设计—电梯自动语音提示系统.doc
  18. Java进行数据统计分析
  19. 如何看待区块链游戏,避免陷入区块链游戏骗局
  20. 华中师范大学计算机科学与技术考研辅导,考研求助,华中师范大学的计算机怎么样...

热门文章

  1. 几种简单的剪影拍摄方法
  2. 炫酷的windows快捷关机方式汇总
  3. nc/netcat命令
  4. Oracle查询前1个小时到后一个小时之间的数据
  5. 基于精英反向学习和Lévy飞行的鲸鱼优化算法
  6. NVMe Over Fabrics架构概述
  7. sunny-ngrok linux命令,ngrok使用
  8. 在线抠图和换背景及擦除工具
  9. 大促活动前团购系统流量预算和容量评估
  10. Tech Execs面对国会:9大收获