Day12 备战CCF-CSP练习
Day 12
题目描述
西西艾弗岛上共有 \(n\) 个仓库,依次编号为 \(1∼n\)。
每个仓库均有一个 \(m\) 维向量的位置编码,用来表示仓库间的物流运转关系。
具体来说,每个仓库 \(i\) 均可能有一个上级仓库 \(j\),满足:仓库 \(j\) 位置编码的每一维均大于仓库 \(i\) 位置编码的对应元素。
比如编码为 \((1,1,1)\) 的仓库可以成为 \((0,0,0)\) 的上级,但不能成为 \((0,1,0)\) 的上级。
如果有多个仓库均满足该要求,则选取其中编号最小的仓库作为仓库 \(i\) 的上级仓库;如果没有仓库满足条件,则说明仓库 \(i\) 是一个物流中心,没有上级仓库。
现给定 \(n\) 个仓库的位置编码,试计算每个仓库的上级仓库编号。
输入格式
输入共 \(n+1\) 行。
输入的第一行包含两个正整数 \(n\) 和 \(m\),分别表示仓库个数和位置编码的维数。
接下来 \(n\) 行依次输入 \(n\) 个仓库的位置编码。其中第 \(i\) 行\((1≤i≤n)\)包含$ m$ 个整数,表示仓库 \(i\) 的位置编码。
输出格式
输出共 \(n\) 行。
第 \(i\) 行\((1≤i≤n)\)输出一个整数,表示仓库 \(i\) 的上级仓库编号;如果仓库 \(i\) 没有上级,则第 \(i\) 行输出 \(0\)。
数据范围
\(50\%\) 的测试数据满足 \(m=2\);
全部的测试数据满足 \(0<m≤10、0<n≤1000\),且位置编码中的所有元素均为绝对值不大于 \(10^6\) 的整数。
输入样例:
4 2
0 0
-1 -1
1 2
0 -1
输出样例:
3
1
0
3
样例解释
对于仓库 \(2\):\((−1,−1)\) 来说,仓库 \(1\):\((0,0)\) 和仓库 \(3\):\((1,2)\) 均满足上级仓库的编码要求,因此选择编号较小的仓库 \(1\) 作为其上级。
题目分析
语法题
数据量很小,按照题干描述暴力求每个点的上级编号即可,时间复杂度\(O(mn^2)\)
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n , m;
vector<int> p[N];
int f[N];
int main()
{
cin >> n >> m;
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ; j < m ; j ++)
{
int x;
cin >> x;
p[i].push_back(x);
}
}
for(int i = 0 ; i < n ; i ++)
{
for(int j = 0 ; j < n ; j ++)
{
bool flag = true;
for(int k = 0 ; k < m ; k ++)
flag &= (p[i][k] < p[j][k]);
if(flag)
{
f[i] = j + 1;
break;
}
}
}
for(int i = 0 ; i < n ; i ++)
cout << f[i] << '\n';
return 0;
}
题目描述
质数(又称“素数”)是指在大于 \(1\) 的自然数中,除了 \(1\) 和它本身以外不再有其他因数的自然数。
小 \(P\) 同学在学习了素数的概念后得知,任意的正整数 \(n\) 都可以唯一地表示为若干素因子相乘的形式。
如果正整数 \(n\) 有 \(m\) 个不同的素数因子 \(p_1,p_2,…,p_m\),则可以表示为:\(n=p_1^{t_1}×p_2^{t_2}×…×p_m^{t_m}\)。
小 \(P\) 认为,每个素因子对应的指数 \(t_i\) 反映了该素因子对于 \(n\) 的重要程度。
现设定一个阈值 \(k\),如果某个素因子 \(p_i\) 对应的指数 \(t_i\) 小于 \(k\),则认为该素因子不重要,可以将\(p_i^{t_i}\) 项从 \(n\) 中除去;反之则将 \(p_i^{t_i}\) 项保留。
最终剩余项的乘积就是$ n$ 简化后的值,如果没有剩余项则认为简化后的值等于 \(1\)。
试编写程序处理 \(q\) 个查询:
每个查询包含两个正整数 \(n\) 和 \(k\),要求计算按上述方法将 \(n\) 简化后的值。
输入格式
输入共 \(q+1\) 行。
输入第一行包含一个正整数 \(q\),表示查询的个数。
接下来 \(q\) 行每行包含两个正整数 \(n\) 和 \(k\),表示一个查询。
输出格式
输出共 \(q\) 行。
每行输出一个正整数,表示对应查询的结果。
数据范围
\(40\%\) 的测试数据满足:\(n≤1000\);
\(80\%\) 的测试数据满足:\(n≤10^5\);
全部的测试数据满足:\(1<n≤10^{10}\) 且 \(1<k,q≤10\)。
输入样例:
3
2155895064 3
2 2
10000000000 10
输出样例:
2238728
1
10000000000
样例解释
查询一:
- \(n=2^3×3^2×23^4×107\)
- 其中素因子\(3\) 指数为 \(2\),\(107\) 指数为 \(1\)。将这两项从 \(n\) 中除去后,剩余项的乘积为 \(2^3×23^4=2238728\)。
查询二:
- 所有项均被除去,输出 \(1\)。
查询三:
- 所有项均保留,将 \(n\) 原样输出。
题目分析
质因子分解,记录下每次的质因子和对应幂,再去检查一边,小于\(k\)的从结果中除去即可
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
typedef long long LL;
LL n;
int k;
map<LL , int> prime;
void solve()
{
LL res = n;
prime.clear();
for(int i = 2 ; i <= n / i ; i ++)
{
while(n % i == 0)
{
n /= i;
prime[i] ++;
}
}
if(n > 1) prime[n] ++;
for(auto it : prime)
{
LL p = it.first;
int t = it.second;
if(t < k)
for(int i = 0 ; i < t ; i ++)
res /= p;
}
cout << res << '\n';
}
int main()
{
int T;
cin >> T;
while(T --)
{
cin >> n >> k;
solve();
}
return 0;
}#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
typedef long long LL;
LL n;
int k;
map<LL , int> prime;
void solve()
{
LL res = n;
prime.clear();
for(int i = 2 ; i <= n / i ; i ++)
{
while(n % i == 0)
{
n /= i;
prime[i] ++;
}
}
if(n > 1) prime[n] ++;
for(auto it : prime)
{
LL p = it.first;
int t = it.second;
if(t < k)
for(int i = 0 ; i < t ; i ++)
res /= p;
}
cout << res << '\n';
}
int main()
{
int T;
cin >> T;
while(T --)
{
cin >> n >> k;
solve();
}
return 0;
}
Day12 备战CCF-CSP练习的更多相关文章
- CCF CSP 认证
参加第八次CCF CSP认证记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四 ...
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- CCF CSP 201703-3 Markdown
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...
- CCF CSP 201703
CCF CSP 2017·03 做了一段时间的CCF CSP试题,个人感觉是这样分布的 A.B题基本纯暴力可满分 B题留心数据范围 C题是个大模拟,留心即可 D题更倾向于图论?(个人做到的D题基本都是 ...
- CCF CSP 201312-3 最大的矩形
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...
- CCF CSP 201609-3 炉石传说
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
- CCF CSP 201709-4 通信网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...
- CCF CSP 201409-3 字符串匹配
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...
- CCF CSP 201503-3 节日
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-3 节日 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形 ...
随机推荐
- 2025dsfz集训Day6: 数论
DAY6: 数论 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] 特别感谢 此次课的主讲 - Kwling 快速幂 快速幂是针对快速 ...
- IDEA设置之“代码提示不区分大小写”
作用 代码提示不区分大小写 案例1 案例2
- 仿EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载
本次更新是底层全部重构,按照现代浏览器要求,采用canvas方式进行了重构,预留了将来扩展空间,特别是在大数据量性能提升方面有了较大提升,可以满足千万级单元格加载,欢迎大家体验使用. 体验地址:zce ...
- 半小时快速入门Spring AI:使用腾讯云编程助手CodeBuddy 开发简易聊天程序
引言 随着人工智能(AI)技术的飞速发展,越来越多的开发者开始探索如何将AI集成到自己的应用中.人工智能正在迅速改变各行各业的工作方式,从自动化客服到智能推荐系统,AI的应用几乎无处不在.Spring ...
- C++可重入函数和不可重入函数
转载:https://blog.csdn.net/weixin_41969690/article/details/108006834 C++可重入函数和不可重入函数 可重入函数是指能够被多个线程&qu ...
- Github如何创建添加开源许可license
我们点击项目上方的 Add file,选择 creat new file 名称填写 LICENSE, 右侧便会出现按钮 Choose a license template 选择你要的证书,填写 年份 ...
- 转|java反射方法和使用详解
概述 反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意个对象,都能够调用它的任意一个方法.在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息.反射是 ...
- Spring 注解之 @EnableTransactionManagement:Spring Boot 事务配置
Spring Boot 开启声明式事务支持 所有的数据访问技术都有事务处理机制,这些技术提供了API用来开启事务.提交事务以完成数据操纵,或者在发生错误的时候回滚数据.Spring支持声明式事务,这是 ...
- 电脑上多个git账户并且为不同仓库设置不同的用户名
说明 生成多个公钥命令 我这里以Gitee和我公司内网Gitlab举例,打开git bash (右键,Git Bash Here) 首先生成Gitee的 依次执行以下命令 git config --g ...
- C# 模式匹配全解:原理、用法与易错点
引言 随着C#不断发展,"模式匹配"(Pattern Matching)已经成为让代码更加友好.可读和强大的核心特性.从 C# 7.0 初次引入,到 C# 11的能力扩展,模式匹配 ...