当前位置: 首页 > news >正文

[GESP202412 五级] 奇妙数字

题目描述

小杨认为一个数字 x 是奇妙数字当且仅当 x=pa,其中 p 为任意质数且 a 为正整数。例如,8=23,所以 8 是奇妙的,而 6 不是。

对于一个正整数 n,小杨想要构建一个包含 m 个奇妙数字的集合 {x1​,x2​,⋯,xm​},使其满足以下条件:

  • 集合中不包含相同的数字。
  • x1​×x2​×⋯×xm​ 是 n 的因子(即 x1​,x2​,⋯,xm​ 这 m 个数字的乘积是 n 的因子)。

小杨希望集合包含的奇妙数字尽可能多,请你帮他计算出满足条件的集合最多包含多少个奇妙数字。

输入格式

第一行包含一个正整数 n,含义如题面所示。

输出格式

输出一个正整数,代表满足条件的集合最多包含的奇妙数字个数。

输入输出样例

输入 #1复制

128

输出 #1复制

3

说明/提示

样例解释

关于本样例,符合题意的一个包含 3 个奇妙数字的集合是 {2,4,8}。首先,因为 2=21,4=22,8=23,所以 2,4,8 均为奇妙数字。同时,2×4×8=64 是 128 的的因子。

由于无法找到符合题意且同时包含 4 个奇妙数字的集合,因此本样例的答案为 3。

数据范围

对于 100% 的数据,保证 2≤n≤1012。

子任务编号得分占比n
120%≤10
220%≤1000
360%

≤1012

题意简述

重新分配强化材料给武器,使第 1 种武器材料数最多,且总转移成本最小。

思路

读取武器的种类数 n 和强化材料的数量 m。对于每个强化材料,记录其对应的武器编号和成本,并统计每种武器的材料数量和成本列表。

对每种武器的强化材料成本列表进行排序,以便后续能够高效地选择成本最低的材料。

我们定义一个函数 f:该函数计算了在给定第 1 种武器需要达到的强化材料数量 x 时,将其他武器的材料转移到第 1 种武器所需的最小成本。

函数内部通过遍历每种非第 1 种武器,计算需要转移的材料数量,并从该武器的成本列表中选择成本最低的材料进行转移。如果转移后第 1 种武器的材料数量仍然不足 x,则从剩余的材料中选择成本最低的进行补充。

我们遍历一个范围,从第 1 种武器的初始材料数量到总材料数量。对于每个可能的 x 值,调用函数 f 计算转移成本,并更新全局最小成本。最终输出全局最小成本作为结果。

code!!!

#include<bits/stdc++.h>
using namespace std;
#define int long long 
vector<int> cost[1010];
int n,m,ans=LONG_LONG_MAX;
void work(int x){int money=0;int d=x-cost[1].size();vector<int>v;for(int i=2;i<=n;i++){int isz=cost[i].size();int need=max(isz-(x-1),0ll);for(int j=0;j<need;j++){money+=cost[i][j];}d-=need;for(int j=need;j<cost[i].size();j++)v.push_back(cost[i][j]); }if(d>0){sort(v.begin(),v.end());for(int i=0;i<v.size()&&d>0;i++){money+=v[i];d--;}}ans=min(ans,money);
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=m;i++){int p,c;cin>>p>>c;cost[p].push_back(c);}for(int i=2;i<=n;i++)sort(cost[i].begin(),cost[i].end());int s1=cost[1].size();if(s1==0)s1=1;for(int x=s1;x<=m;x++){work(x);}cout<<ans;return 0;//华丽结束
}//完结散花
/*by huntercwo 2025 0601 20:01:22

http://www.xdnf.cn/news/762859.html

相关文章:

  • java 多线程中的volatile关键字作用
  • 【JavaScript-Day 28】告别繁琐循环:`forEach`, `map`, `filter` 数组遍历三剑客详解
  • c++之循环
  • java CountDownLatch‌
  • 题海拾贝:压缩字符串
  • 详解鸿蒙开发如何上传三方库到ohpm仓库
  • 【Dv3Admin】系统视图系统配置API文件解析
  • 017搜索之深度优先DFS——算法备赛
  • java ExecutorService线程池使用(ExecutorService/Completable异步+ExecutorService线程池)
  • Office安装包2024版
  • ck-editor5的研究 (4):初步使用 CKEditor5 的插件功能
  • 72.编辑用户消息功能之前端实现
  • PCB制作入门
  • 开始通信之旅-----话题通信
  • 关于 java:4. 异常处理与调试
  • C#数字图像处理(二)
  • IO流1——体系介绍和字节输出流
  • 如何用利用deepseek的API能力来搭建属于自己的智能体-优雅草卓伊凡
  • 【AI面试秘籍】| 第25期:RAG的关键痛点及解决方案深度解析
  • OpenGL、GLUT、freeGLUT 与 GLFW 的区别
  • 【渲染】拆解《三国:谋定天下》场景渲染技术
  • C++实现汉诺塔游戏自动完成
  • [AD] CrownJewel-1 Logon 4799+vss-ShadowCopy+NTDS.dit/SYSTEM+$MFT
  • QT中子线程触发主线程弹窗并阻塞等待用户响应
  • Ⅰ.计算机二级选择题(C语言概述)
  • 第二章 机器学习基本概念
  • 【RocketMQ 生产者和消费者】- 生产者发送同步、异步、单向消息源码分析(1)
  • 利用IEEE 802.15.4z-IR UWB系统进行手势检测
  • Python中scapy库详细使用(强大的交互式数据包操作程序和库)
  • 基于 Three.js 的文本粒子解体效果技术原理剖析