CSP-S模拟27

news/2025/10/9 21:52:58/文章来源:https://www.cnblogs.com/countryhuman/p/19132077

T1:喜剧的迷人之处在于

思路:

显然,因为\(a×b\)是完全平方数,所以将\(a\)中的所有完全平方数约了以后的数就是\(b\)的最小值。但是题目还要求\(b\)属于区间\([l,r]\),所以我们可能需要给\(b\)乘上一个或多个完全平方数。然后就做完了。

规则怪谈: 不要闲的没事干莫名其妙地给代码加一个莫名其妙的特判,否则你会\(100→30\)

代码:

$code$
#include<iostream>
#include<cstring>
#define int long long
using namespace std;
const int N=1e6+5;
int T,n,a,l,r,cnt,tot,x,delta,num[N],pr[N],ch[N],la[N],db[N];bool vis[N];
inline void init(){db[1]=1;for(int i=2;i<=1000000;i++){if(!vis[i]) pr[++n]=i;for(int j=i*2;j<=1000000;j+=i) vis[j]=1;//质数 db[i]=i*i;//完全平方数 }
}//预处理 
inline void pre(){delta=-1;tot=0;x=1;memset(ch,0,sizeof(ch));memset(num,0,sizeof(num));
}//多测清空 
signed main(){ios::sync_with_stdio(false);cin>>T;init();while(T--){pre();cin>>a>>l>>r;for(int i=1;i<=n;i++){if(a%pr[i]==0) ch[++tot]=pr[i];while(a%pr[i]==0) num[tot]++,a/=pr[i];if(a==1) break;}//分解质因数 for(int i=1;i<=tot;i++) if(num[i]%2!=0) x*=ch[i];//最小值 int ll=l/x;for(int i=1;i<=N-5;i++){if(db[i]>=ll){delta=i;break;}}//找到合适的完全平方数 if(db[delta]*x>=l&&db[delta]*x<=r) cout<<x*db[delta]<<'\n';//当前值 else if(db[delta+1]*x>=l&&db[delta+1]*x<=r) cout<<x*db[delta+1]<<'\n';//当前值的下一个值  else cout<<"-1"<<'\n';//那就无解咯 }return 0;
}

T2:镜中的野兽

思路:

显然,\(m=lcm+gcd\)\(gcd\)的倍数。因此,我们可以枚举\(gcd\)的值\(d\)来确定\(gcd,lca\)的取值,然后给每一个元素除以\(d\),这时的问题转化为:对于一个互质且不重复的序列,其中元素的\(lcm\)\(\frac{m-d}{d}\),然后对\(lcm\)分解因数,我们不难发现,对于一些元素不含有其中的一部分因数,而有一些元素含有一部分因数的最高次数,所以共有\(2*cnt\)种情况。然后用状压dp来判断某些条件是否达成即可。

代码:

$code$
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
const int N=1e5+10;
int n,m,p,cnt,ph[N],a[N],ans,f[N*2][30];//2*cnt个条件,n个元素 
inline void pre(int x){int s=sqrt(x),y=x;for(int i=2;i<=s&&i<=y;i++){if(y%i==0){ph[++cnt]=i;a[cnt]=0;while(y%i==0) a[cnt]++,y/=i;}}if(y!=1) ph[++cnt]=y,a[cnt]=1;
}//因数分解  
inline void dp(int pos,int st){if(pos==cnt+1){for(int i=(1<<cnt*2)-1;i>=0;i--){for(int j=n-1;j>=0;j--){f[i|st][j+1]=(f[i|st][j+1]+f[i][j])%p;//状压dp }}return ;}//每种因数都处理完了  for(int i=0;i<=a[pos];i++){if(i==0) dp(pos+1,st|(1<<(pos-1)));//不包含该因数 状压一下 else if(i==a[pos]) dp(pos+1,st|(1<<(pos-1+cnt)));//包含全部的该因数 区别一下状压 else dp(pos+1,st);//状态不变 }
}
inline void solve(int x){int lcm=(m-x)/x;if((m-x)<=x) return ;//lcm不可能小于等于1 cnt=0;memset(f,0,sizeof(f));f[0][0]=1;pre(lcm);//分解因数 dp(1,0);//状压dp ans=(ans+f[(1<<(cnt*2))-1][n])%p;//答案加和 
}
int main(){ios::sync_with_stdio(false);cin>>n>>m>>p;for(int i=1;i<=sqrt(m);i++){//便利gcd if(m%i==0){solve(i);if(i*i!=m) solve(m/i);//避免重复 }}cout<<ans<<'\n';return 0;
}

T3:我愿相信由你所描述的童话

思路:

遍历没一个数作为分界点的情况,分别dp求左边的方案数与右边的方案数,最后相乘起来就好

代码:

$code$
#include<iostream>
#define int long long
using namespace std;
const int N=3e6+5,mod=1e9+7;
int m,n,ans,a[N],t1[N],t2[N],f1[N],f2[N];
signed main(){ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){int res=t1[0]+1;for(int j=a[i];j>=1;j=a[i]&(j-1))//去掉末尾的1后的数字 res=(res+t1[j])%mod;//若序列里有,则加上满足它的方案数 f1[i]=res%mod;//左边的 t1[a[i]]=(t1[a[i]]+res)%mod;//更新一下 }for(int i=n;i>=1;i--){//同上 但是由于是从后往前,所以方向相反 int res=t2[0]+1;for(int j=a[i];j>=1;j=a[i]&(j-1))res=(res+t2[j])%mod;f2[i]=(res-t2[a[i]]+mod)%mod;//右边的,减去当前位置与前面任意权值相同位置同时出现的方案数t2[a[i]]=(t2[a[i]]+res)%mod;}for(int i=1;i<=n;i++) ans=(ans+f1[i]*f2[i])%mod;//统计答案~~ cout<<ans<<'\n';return 0;
}

T4:\(Baby ~ Doll\)

不会😛

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

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

相关文章

模型训练技巧 - -一叶知秋

模型训练技巧Model Bias(模型偏差) Bias(偏差) 是机器学习里衡量“模型预测与真实值平均偏离程度”的指标。 它反映模型对目标函数的逼近能力。 Optimization(优化)在一堆可能的方案中,找到“最好”的那个。在机…

20232324 2025-2026-1 《网络与系统攻防技术》实验一实验报告

20232324 2025-2026-1 《网络与系统攻防技术》实验一实验报告1.实验内容 1.1实验目标本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串…

2025.10.8 训练记录

10.8 上午 早读爽睡 30min,闭眼到机房。 然后发现有人打开了我的浏览器打开了duel点击了加入比赛点击了准备。 就是这场。 嗯。最近大家打 duel 的热情好像很高。那我也打吧。 于是绷不住开始打。 C cf1849C 完美的降…

【触想智能】工业一体机在金融领域的应用优势和具体注意事项 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

汽车行业AI视觉检测方案(三):引领轮胎智检 - 实践

汽车行业AI视觉检测方案(三):引领轮胎智检 - 实践2025-10-09 21:45 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

WPF mvvm datagrid export as pdf via iTextSharp

Install-Package iTextSharp; public ICommand ExportAsPDFCommand { get; private set; }ExportAsPDFCommand = new DelCommand(async (obj) => await ExportAsPDFCommandExecuted(obj));private async Task Expor…

【每日一面】盒子模型

基础问答 问题:标准的 CSS 盒子模型是怎样的? 答案:标准盒子模型由内容区域(content)、内边距(padding)、边框(border)和外边距(margin)组成。在 content-box 模式下,width 和 height 属性仅指内容区域的宽…

日总结 9

配置环境变量本质是为操作系统和程序提供 “全局可读取的配置信息”,它能让终端无需输入完整路径即可直接调用软件(如java/python命令)、帮助软件定位依赖路径(如JAVA_HOME避免硬编码)、传递系统级参数(如临时文…

kettle插件-国产数据库瀚高插件,助力国产数据库腾飞

场景:国产数据库(瀚高,金仓,达梦,海量等)信创环境下最近发展的势头很猛,今天我们一起来学习下瀚高数据库,从瀚高数据库中读取数据以及使用瀚高数据库作为kettle的资源仓库,废话少数,开干。 1、使用docker安装…

利用旋钮控制小灯亮度

利用旋钮控制小灯亮度 1、初始化该项目以复刻旋钮的项目为基础进行扩展,前置步骤请参考以下帖子:复刻江协旋钮控制模块(1)PWM配置将时钟按照如下方式重新配置使能TIM3计时器(2)写入代码在主循环外启用计时器的PWM模式…

ai 对话框一直往下滚可能要成为过云,当初只是为了快速现实ai的演示界面而己,是该走入正题 了

谢双军以为:在AI发展初期,为了迅速展示其能力,开发者采用了一个简易的对话窗口设计,消息不断向下堆叠。这种设计是临时性的,因为当时的主要精力集中在功能实现上,而非优化用户体验。随着AI技术的成熟,我们计划重…

脚手架安全巡检智能化!AI 让隐患识别更精准、整改更高效

在建筑施工脚手架巡检场景中,传统人工巡检模式正面临多重痛点:全靠肉眼排查钢管开裂、锈蚀,易因经验不足或视觉疲劳漏检;材料堆积仅靠人工记录,无法快速判断是否占用施工通道、是否超过安全高度;拍摄环境复杂(光…

实用指南:provthrd.dll propsys.dll profsvc.dll profprov.dll procinst.dll prntvpt.dll prnntfy.dll

实用指南:provthrd.dll propsys.dll profsvc.dll profprov.dll procinst.dll prntvpt.dll prnntfy.dllpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

37 ACwing 298 Fence 题解

Fence 题面 有 N 块木板从左到右排成一行,有 M 个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。 第 i 个木匠要么不粉刷,要么粉刷包含木板 \(S_i\) 的,长度不超过 \(L_i\) 的连续的一段木板,每粉刷一块可以得…

35 ACwing 297 The Battle Chibi 题解

The Battle of Chibi 题面 给定一个长度为 \(N\) 的序列 \(A\) ,求 \(A\) 有多少个长度为 \(M\) 的严格递增子序列 \(1 \le M \le N \le 1000,\ |A_i| \le 10^9\) 答案对 \(10^9\) 取模 题解 设 \(f(i,j)\) 表示以 \(…

一款由网易出品的免费、低延迟、专业的远程控制软件,支持手机、平板、Mac 、PC、TV 与掌机等多设备远控电脑!

前言 在多设备协同日益普及的今天,高效、流畅的远程控制已成为工作与生活的刚需。网易出品的这款免费远程控制软件,凭借低延迟、高画质与跨平台兼容性,轻松实现手机、平板、Mac、PC、TV 乃至掌机对电脑的远程操控,…

计划管理

计划管理核心是围绕 “期货工具” 与 “现货业务” 的协同,提前制定明确的操作计划,确保期现两端(如现货采购 / 销售、期货套保 / 交割)目标一致、节奏匹配,本质是通过 “事前规划” 降低期现错配风险,提升业务收…

苍穹外卖第二天(Nginx如何配置、MD5加密)

一、关于Nginx 1、Nginx反向代理的配置方式。监听的端口号是80,当请求路径中含有“api”这种字符串时,Nginx就会将请求转发给后面的地址,并且在/后面拼接上请求中后面的employee/login 2、Nginx负载均衡的配置方式。…

aardio跨窗口传递变量

aardio跨窗口传递变量把需要传递的变量写在用户库里, 右键用户库,新建WindowParamnamespace WindowParam{add_type="" }然后在需要使用的窗口里import WindowParam WindowParam.add_type参考

AI在简单视觉推理谜题中的挑战

ARC Prize测试通过看似简单的视觉谜题评估机器的推理、抽象和泛化能力,这些能力被认为是实现通用人工智能的核心要素。本文介绍了该基准测试的设计理念及其在衡量AI进展中的重要性。ARC Prize挑战:AI在简单谜题中的困…