2024.9.14

A. 上海

时间限制: 1 s   内存限制: 512 MB   测评类型: 传统型


题目描述

Shintaro \text{Shintaro} Shintaro 有一个正整数 k k k

请你判断是否存在正整数 n n n ,使得 n 2 n^2 n2 k k k 的倍数,且 n n n 不是 k k k 的倍数。如果存在,则输出最小的 n n n。不存在则输出 − 1 -1 1

输入格式

一行一个数 k k k

输出格式

一行一个数表示答案。

样例输入1

4

样例输出1

2

样例输入2

42

样例输出2

-1

数据范围

  • 对于 50 % 50\% 50% 的数据: 1 ≤ k ≤ 1 0 6 1 \leq k \leq 10^6 1k106
  • 对于 100 % 100\% 100% 的数据: 1 ≤ k ≤ 1 0 12 1\leq k\leq10^{12} 1k1012

非常简单

//2024.9.14
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define int long long 
#define itn long long 
constexpr itn oo = 100004;
itn n;
int pri[oo],cnt;
bool vis[oo];
int use[oo],is[oo],top;
int out = 1;
__inline int qpow(itn a,int b){itn res=1;while(b){if (b&1)res*=a;a*=a;b>>=1;}return res;}
main(void){//fre();cin.tie(0)->sync_with_stdio(0);cin >> n;for (itn i=2;i<oo-5;i++){if (!vis[i]) pri[++cnt] = i;for (int j=1;j<=cnt&&pri[j]*i<oo-5;j++){vis[i*pri[j]] = 1;if (i%pri[j]==0)break;}}//p_(pri,cnt,2);int i = 1;while (n&&i<=cnt){if (n%pri[i]==0){is[++top] = pri[i];while(n%is[top]==0){n/=is[top];use[top]++;}}i++;}for (itn i=1;i<=top;i++){if (use[i]>=2)break;if (i==top){cout << -1 << '\n';exit(0);}}for (int i=1;i<=top;i++){itn p = (use[i]+1)/2;out *= qpow(is[i],p);}cout << out << '\n';exit(0);
}

B. 华二

时间限制: 1 s   内存限制: 512 MB   测评类型: 传统型


题目描述

Ayano \text{Ayano} Ayano 喜欢 GCD。

现在她有一个长度为 n n n 的数列 A = ( a 1 , ⋯ , a n ) A=(a_1,⋯,a_n) A=(a1,,an),其中 1 ≤ a i ≤ 9 1\leq a_i \leq 9 1ai9。对于其中相邻的两项的 a i a_i ai a i + 1 a_{i+1} ai+1 ,满足 g c d ( a i , a i + 1 ) = 1 gcd(a_i,a_{i+1})=1 gcd(ai,ai+1)=1 时, Ayano \text{Ayano} Ayano 可以通过一次操作交换 a i a_i ai a i + 1 a_{i+1} ai+1 ( 1 ≤ i ≤ n − 1 ) (1≤i≤n−1) (1in1)

请你计算 Ayano \text{Ayano} Ayano 可以通过这个操作得到多少种数列(包含原数列) ( m o d 998244353 ) \pmod {998244353} (mod998244353)

输入格式

第一行一个数 n n n ,表示数列的长度。

第二行 n n n 个数,第 i i i 个数表示 a i a_i ai

输出格式

一行一个数表示答案。

样例输入 1

3
8 3 2

样例输出 1

3

样例输入 2

9
1 2 3 4 5 6 7 8 9

样例输出 2

3024

数据范围

  • 对于 30 % 30\% 30% 的数据: 2 ≤ n ≤ 10 2\leq n\leq 10 2n10
  • 对于另外 10 % 10\% 10% 的数据: a i ≤ 3 a_i\leq 3 ai3
  • 对于 100 % 100\% 100% 的数据: 2 ≤ n ≤ 100000 2\leq n\leq 100000 2n100000 1 ≤ a i ≤ 9 1\leq a_i\leq 9 1ai9

非常有意思的一道计数题,关键在于数量为9

我们通过公因数进行分类

分成2.3

发现6比较特殊,两个公因数都有,又发现同公因数之间相对位置不会改变,

我们考虑在中间排列计数即可

//2024.9.14
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define itn long long
#define int long long 
constexpr int oo = 1000006;
constexpr itn op = 1000000;
constexpr itn mod = 998244353;
__inline itn qpow(itn a,int b){itn res=1;while(b){if(b&1)res=(res*a)%mod;a=(a*a)%mod;b>>=1;}return res;}
int n;
int st[oo];itn fac[oo],ifac[oo];
int cnt1,cnt2,cnt3,cnt6,cnt5,cnt7;
main(void){//fre();cin.tie(nullptr)->ios::sync_with_stdio(false);cin >> n;for(int i=1;i<=n;i++)cin >> st[i];fac[0]=1;for(int i=1;i<=op;i++)fac[i]=fac[i-1]*i%mod;ifac[op]=qpow(fac[op],mod-2);for(int i=op;i>=1;i--)ifac[i-1]=ifac[i]*i%mod;itn out=1;for(int i=1;i<=n;i++){if(st[i]==1) cnt1++;else if(st[i]==5)cnt5++;else if(st[i]==7)cnt7++;else if(st[i]==2||st[i]==4||st[i]==8)cnt2++,cnt6++;else if(st[i]==3||st[i]==9)cnt3++,cnt6++;else if(st[i]==6){cnt6++;out=out*fac[cnt2+cnt3]%mod*ifac[cnt2]%mod*ifac[cnt3]%mod;cnt2=cnt3=0;}}out=out*fac[cnt2+cnt3]%mod*ifac[cnt2]%mod*ifac[cnt3]%mod;out=out*fac[cnt1+cnt6+cnt5+cnt7]%mod*ifac[cnt1]%mod*ifac[cnt6]%mod*ifac[cnt5]%mod*ifac[cnt7]%mod;cout << out << '\n';exit (0);
}

C. 高爸

时间限制: 1 s   内存限制: 512 MB   测评类型: 传统型


Shintaro \text{Shintaro} Shintaro n n n 条龙。 第 i i i 条龙的力量值是 x i x_i xi。现在 Shintaro \text{Shintaro} Shintaro 想与这些龙交朋友。

Shintaro \text{Shintaro} Shintaro 会使用以下两种魔法来平衡龙的力量值(使某些龙的力量值相等),以免与他交朋友的龙互相打架。

强化魔法:消耗 a a a 点 p,使某条龙的力量值增加1点。

弱化魔法:消耗 b b b 点 p,使某条龙的力量值降低1点。

在第 i i i 次, Shintaro \text{Shintaro} Shintaro 想与前 i i i 条龙交朋友 ( 1 ≤ i ≤ n ) (1≤i≤n) (1in)。我们有很多种使用魔法的方案,使前 i i i 条龙力量值相等。请你找到消耗 mp 点数最小的方案,并输出 mp 点数。

输入格式

第一行三个数 n n n a a a b b b ,表示龙的条数,强化魔法消耗的 m p mp mp 点数,弱化魔法消耗的 m p mp mp 点数。

第二行 n n n 个数,第 i i i 个数 x i x_i xi 表示第 i i i 条龙的力量值。

输出格式

n n n 行,第 i i i 行输出一个整数表示使前 i i i 条龙力量值相等所需的最小 m p mp mp 点数。

样例输入 1

5 3 2
5 1 4 2 3

样例输出 1

0
8
11
13
15

数据范围

  • 对于 50 % 50\% 50% 的数据: n ≤ 1000 n\leq 1000 n1000
  • 对于另外 20 % 20\% 20% 的数据: 1 ≤ x i ≤ 100 1\leq x_i\leq 100 1xi100
  • 对于 100 % 100\% 100% 的数据: 1 ≤ n ≤ 100000 1\leq n\leq 100000 1n100000 1 ≤ a , b ≤ 1 0 4 1\leq a,b\leq 10^4 1a,b104 1 ≤ x i ≤ 1 0 9 1\leq x_i\leq 10^9 1xi109

不难发现力量为其中一条龙时一定会最优,50%时考虑枚举那一条龙的权值

100%时,对前面加入的权值进行排序,考虑在之前的结束值左右移动,选择更优的,复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

//2024.9.14
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define int long long 
#define itn long long 
constexpr int oo = 1e5+10;
constexpr int inf = 0x3f3f3f3f3f3f3f3f;
int n,st[oo],a,b;
int res;
priority_queue<int>ql;
priority_queue<int,vector<int>,greater<int>>qr;
main(void){//fre();cin.tie(0)->ios::sync_with_stdio(0);cin >> n >> a >> b;for(int i=1;i<=n;i++) cin>>st[i];int p=st[1],cnt=0;for(int i=1;i<=n;i++){if(st[i]<p){res+=(p-st[i])*a;ql.push(st[i]);}if(st[i]>p){res+=(st[i]-p)*b;qr.push(st[i]);}if(st[i]==p) cnt++;int ansl=inf,ansr=inf;if(ql.size()){int t=ql.top(),s=ql.size();ansl=res+(p-t)*(i-s)*b-(p-t)*s*a;}if(qr.size()){int t=qr.top(),s=qr.size();ansr=res+(t-p)*(i-s)*a-(t-p)*s*b;}if(ansr>=ansl){if(ansl<res){while(cnt--)qr.push(p);cnt=0; p=ql.top();while(ql.size()&&ql.top()==p)ql.pop(),cnt++;res=ansl;}}else{if(ansr<res){while(cnt--)ql.push(p);cnt=0;p=qr.top();while(qr.size()&&qr.top()==p)qr.pop(),cnt++;res=ansr;}}cout << res << "\n";}exit (0);
}

D. 金牌

时间限制: 2 s   内存限制: 512 MB   测评类型: 传统型


题目描述

Ayano \text{Ayano} Ayano 有一棵 n n n 个顶点的树(编号从 1 1 1 n n n )。 这棵树有 n − 1 n−1 n1 条边,第 i i i 条边连接顶点 u i u_i ui 和顶点 v i v_i vi。 由于Ayano Ayano \text{Ayano} Ayano 非常喜欢这棵树,树上的每条路径都被赋予了价值。具体地,这棵树上长度为 d d d 的简单路径的价值是 2 d 2^d 2d

现在 Ayano \text{Ayano} Ayano 对你发出了 q q q 次询问,每次给出两个正整数 x , y x,y x,y ,请你回答所有通过顶点 x x x y y y 的简单路径的价值之和 m o d 998244353 \bmod 998244353 mod998244353

注:简单路径是指路径上的各顶点均不互相重复的路径,路径的长度是指一条路径经过的边的条数。

输入格式

第一行一个数 n n n ,表示顶点个数。

接下来 n − 1 n-1 n1 行,其中第 i i i 行两个数 u i , v i u_i,v_i ui,vi 用于描述第 i i i 条边。

接下来一行一个数 q q q ,表示询问次数。

接下来 q q q 行,其中第 i i i 行两个数 x i , y i x_i,y_i xi,yi 用于描述第 i i i i 个询问。

输出格式

q q q 行,第 i i i 行表示第 i i i 次询问的答案。

样例输入1

5
1 2
2 3
2 4
4 5
3
1 3
2 3
3 4

样例输出1

4
18
12

数据范围

  • 对于 20 % 20\% 20% 的数据, n , q ≤ 1000 n,q\leq 1000 n,q1000
  • 对于 50 % 50\% 50% 的数据, n , q ≤ 100000 n,q\leq 100000 n,q100000
  • 对于 100 % 100\% 100% 的数据, n , q ≤ 1000000 n,q\leq 1000000 n,q1000000 1 ≤ u i , v i , x i , y i ≤ n 1\leq u_i,v_i,x_i,y_i\leq n 1ui,vi,xi,yin x i ≠ y i x_i\neq y_i xi=yi

提示:本题数据量较大,建议使用快速的读写方式。

考虑把一条路径对答案的贡献分成三部分, x x x 的子树内( y y y 为根时), y y y 的子树内( x x x 为根时), x x x y y y 之间的路径。那么相同部分可以相加,最后乘起来就行了。对于前两部分可以换根或者预处理讨论,第三部分需要 Tarjan 求 LCA。

复杂度 O ( n ) O(n) O(n)

//2024.9.14
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define itn long long 
#define int long long 
constexpr int oo = 1000010;
constexpr itn op = 2000010;
constexpr int mod = 998244353;
int n,q;int head[oo],st[op],ne[op];
itn mi[oo],idx,dis[oo],sz[oo];
int tp[oo],son[oo],fa[oo];
int f[oo],g[oo],dfn[oo],rdfn[oo],tim;
void add(int u,int v){st[idx]=v,ne[idx]=head[u],head[u]=idx++;}
void getdis(int x,int pr){dis[x]=dis[pr]+1,sz[x]=f[x]=1;for(int i=head[x],y;~i;i=ne[i])if((y=st[i])^pr){fa[y]=x,getdis(y,x),sz[x]+=sz[y],f[x]=(f[x]+2*f[y])%mod;if(sz[y]>sz[son[x]]) son[x]=y;}
}
void gettop(int x,int c){tp[x]=c,rdfn[dfn[x]=++tim]=x;if(!son[x]) return;g[son[x]]=(2*g[x]+3*(mod-f[son[x]]))%mod,gettop(son[x],c);for(int i=head[x],y;~i;i=ne[i])if((y=st[i])!=fa[x]&&y!=son[x])g[y]=(2*g[x]+3*(mod-f[y]))%mod,gettop(y,y);
}
int lca(int u,int v){while(tp[u]^tp[v])if(dis[tp[u]]>=dis[tp[v]]) u=fa[tp[u]];else v=fa[tp[v]];return dis[u]>=dis[v]?v:u;
}
int kth(int u,int k){while(dis[u]-k<dis[tp[u]]) k-=dis[u]-dis[fa[tp[u]]],u=fa[tp[u]];return rdfn[dfn[u]-k];
}
main(void){//fre();cin.tie(0)->sync_with_stdio(0);cin >> n;mi[0]=1;memset(head,-1,sizeof(head));for(int i=1,u,v;i<n;++i){cin >> u >>v ;add(u,v),add(v,u);mi[i]=mi[i-1]*2%mod;}getdis(1,0);g[1]=f[1],gettop(1,1);cin >> q;for(int i=1,u,v,t;i<=q;++i){cin >> u >> v;t=lca(u,v);if(t==v) u^=v^=u^=v;if(t==u) cout << ((g[u]+2*(mod-f[kth(v,dis[v]-dis[u]-1)]))*f[v]%mod*mi[dis[v]-dis[u]]%mod) << '\n';else cout << (f[u]*f[v]%mod*mi[dis[u]+dis[v]-2*dis[t]]%mod) << '\n'; }return 0;
}

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

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

相关文章

JVM 调优篇7 调优案例1-堆空间的优化解决

一 jvm优化 1.1 优化实施步骤* 1)减少使用全局变量和大对象&#xff1b; 2)调整新生代的大小到最合适&#xff1b; 3)设置老年代的大小为最合适&#xff1b; 4)选择合适的GC收集器&#xff1b; 1.2 关于GC优化原则 多数的Java应用不需要在服务器上进行GC优化&#xff1…

ESP8266做httpServer提示Header fields are too long for server to interpret

CONFIG_HTTP_BUF_SIZE512 CONFIG_HTTPD_MAX_REQ_HDR_LEN1024 CONFIG_HTTPD_MAX_URI_LEN512CONFIG_HTTPD_MAX_REQ_HDR_LEN由512改为1024

02 基于STM32的按键控制继电器驱动电机

本专栏所有源资料都免费获取&#xff0c;没有任何隐形消费。 注意事项&#xff1a;STM32仿真会存在各种各样BUG&#xff0c;且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。 本文已经配置好STM32F103C8T6系列&#xff0c;在PROTUES仿真里&#xff0c;32单片…

Games101图形学笔记——着色

Shading Z-buffering&#xff08;深度缓冲&#xff09; Shading&#xff08;着色&#xff09;画家算法Z-BufferShading(着色&#xff09;Blinn-Phong Reflectance Model&#xff08;布林冯反射模型&#xff09;漫反射能量守恒 着色高光Blinn-Phong Reflection ModelShadingFreq…

webGL 综合教程100+【目录】

webGL 综合教程100旨在为开发者提供两大方面的知识信息&#xff1a;&#xff08;1&#xff09;提供详细的每个api知识点的详解 &#xff08;2&#xff09;提供实战的示例&#xff0c;提供源代码。 在这量大系统性的知识下&#xff0c;给用户提供清晰的思路和示例参考&#xff0…

IEEE-754 32位十六进制数 转换为十进制浮点数

要将 IEEE-754 32位十六进制数 转换为 十进制浮点数&#xff0c;可以使用LabVIEW中的 Type Cast 函数。以下是一些具体步骤&#xff0c;以及相关实例的整理&#xff1a; 实现步骤&#xff1a; 输入十六进制数&#xff1a;在LabVIEW中&#xff0c;首先需要创建一个输入控制器&am…

传输层协议——udp/tcp

目录 再谈端口号 udp 协议 理解报头 udp特点 缓冲区 udp使用的注意事项 tcp协议 TCP的可靠性与提高效率的策略 序号/确认序号 窗口大小 ACK&#xff1a; PSH URG RST 保活机制 重传 三次握手(SYN) 四次挥手(FIN) 流量控制 滑动窗口 拥塞控制 延迟应答 捎带应答 面…

GPT撰写开题报告教程——课题确定及文献调研

撰写开题报告是一项复杂而重要的任务&#xff0c;需要涵盖从主题选择到文献综述、研究方法等多个环节。借助AI&#xff0c;如ChatGPT&#xff0c;可以显著提高这一过程的效率以及内容的质量。本文将详细探讨如何一步步利用ChatGPT撰写开题报告。 一、开题报告内容 一个清晰的…

[数据集][目标检测]智慧养殖场肉鸡健康状态检测数据集VOC+YOLO格式4657张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4657 标注数量(xml文件个数)&#xff1a;4657 标注数量(txt文件个数)&#xff1a;4657 标注…

基于SpringBoot的社区宠物管理与推荐系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1.课题的基本内容&#xff0c;可能遇到的困难&#xff0c;提出解决问题的方法和措施 2.1课题的基本内容 本课题主要研究基于SpringBoot的社区宠物管理与推荐系统的设计与实现。用户注册登录系统前端后可以可以实现对宠物信息的…

保护您的隐私:隐藏 IP 地址的重要性

在当今的数字时代&#xff0c;我们的在线隐私和安全变得比以往任何时候都更加重要。浏览互联网时保护自己的一种方法是隐藏您的 IP 地址。 但是为什么要隐藏您的 IP 地址以及如何有效地做到这一点&#xff1f; 隐藏您的 IP 地址有助于保护您的在线匿名性。您的 IP 地址就像您的…

vscode技巧-eslint配置

开发环境 jsvue3axios 下载插件 Eslint、Prettfier 配置过程 1.配置eslint 进入settings&#xff0c;输入eslint&#xff0c;在settings.json中替换一下文件 // #每次保存的时候自动格式化 {"editor.codeActionsOnSave": {"source.fixAll.eslint": &…

低代码开发平台系统架构概述

概述 织信低代码开发平台&#xff08;产品全称&#xff1a;织信Informat&#xff09;是一款集成了应用设计、运行与管理的综合性平台。它提供了丰富的功能模块&#xff0c;帮助用户快速构建、部署和维护应用程序。织信低代码平台通过集成丰富的功能模块&#xff0c;为用户提供…

国产分布式数据库-tidb单机部署文档

tidb单机部署文档 1、创建用户 #创建用户 useradd tidb #设置密码 passwd tidb2、配置免密码登录 编辑/etc/sudoers文件,文末加入&#xff1a; tidb ALL(ALL) NOPASSWD:ALL如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令, 或者允许某些用户使用sudo时…

游戏各个知识小点汇总

抗锯齿原理记录 SSAA&#xff1a;把成像的图片放大N倍&#xff0c;然后每N个点进行平均值计算。一般N为2的倍数。比如原始尺寸是1000x1000&#xff0c;长宽各放大2倍变成2000x2000。 举例&#xff1a; 原始尺寸&#xff1a; 放大2倍后 最后平均值计算成像&#xff1a; MSAA&…

[OpenCV] 数字图像处理 C++ 学习——14霍夫变换直线、圆检测 附完整代码

文章目录 前言1.霍夫变换原理(1)霍夫变换检测直线的原理(2)霍夫变换检测圆的原理 2.代码实现(1)霍夫直线检测(2)霍夫圆检测 3.完整代码 前言 霍夫变换是一种有效的检测图像中的几何形状&#xff08;如直线、圆等&#xff09;的算法。霍夫变换通过将几何形状的检测问题转化为参…

python学习第十节:爬虫基于requests库的方法

python学习第十节&#xff1a;爬虫基于requests库的方法 requests模块的作用&#xff1a; 发送http请求&#xff0c;获取响应数据&#xff0c;requests 库是一个原生的 HTTP 库&#xff0c;比 urllib 库更为容易使用。requests 库发送原生的 HTTP 1.1 请求&#xff0c;无需手动…

引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听

在追求高效与便捷的智能家居时代&#xff0c;每一个细节都承载着我们对美好生活的向往。WTN6040F&#xff0c;作为一款专为现代家庭设计的低成本、高性能门铃解决方案&#xff0c;正以其独特的魅力&#xff0c;悄然改变着我们的居家生活体验。 芯片功能特点&#xff1a; 1.2.4…

关于订单信息的Excel数据分析报告

提升自己&#xff0c;掌握数据分析的能力&#xff0c;最快的方式就是实践&#xff01; 这里又是一个Excel数据分析项目的分析报告&#xff0c;有需要项目配套数据集的可以关注私信我免费获取(●◡●)

Skytower

一、安装配置靶机 下载地址: SkyTower: 1 ~ VulnHub 下载之后解压发现是VirtualBox格式的 我们下载一个VirtualBox&#xff0c;这是官网 Downloads – Oracle VirtualBox 安装到默认路径就 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&…