首页 > 其他分享 >Day12 备战CCF-CSP练习

Day12 备战CCF-CSP练习

时间:2024-10-23 09:43:18浏览次数:6  
标签:prime include int LL ++ 仓库 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;
}

标签:prime,include,int,LL,++,仓库,Day12,CCF,CSP
From: https://www.cnblogs.com/mathblog/p/18494509

相关文章

  • 准备CSP 复赛
    用来方便自己复习版本C++14目录快读和快输注意事项缺省源快读和快输链接:浅谈C++IO优化——读优输优方法集锦最全快读、快写模板「持续更新」-凌云_void-博客园读入、输出优化-OIWiki打的时候一定要注意运算符优先级QWQ(有时候真的很难发现)错误示例:int......
  • P9751 [CSP-J 2023] 旅游巴士 题解
    思路首先,举一个例子,假如说小Z到了入口,但是没到时间,所以没法进去,该怎么办?当然是等$k$个时间单位呀.除此之外,像到了其他景区,但是还没开门怎么办?继续等$k$的非负整数倍时间呀.知道这个后,我们先定义状态$f_{i,j}$,表示到达点$i$时,路径长度(即时间)$mod$$k$的最早时......
  • P9749 [CSP-J 2023] 公路 题解
    此题贪心食用更佳在输入油价的时候,我们边计算油价的最小值和路程和.当路程之和$>0$时,计算油价并且减去对应路程即可.注意事项要开$long$$long$!!!.代码#include<iostream>#include<cstdio>#include<cmath>#include<cstring>usingnamespacestd;typedeflonglo......
  • P9750 [CSP-J 2023] 一元二次方程 题解
    大模拟此题大模拟即可,只需注意几点:分母$>0$.要给根式化简.分数要约分.求较大根,那就$b^2$加$\bigtriangleup$即可.分母>0因为求根公式中,分母中只有$a$一个未知数,所以我们只需保证$a>0$即可.所以,当$a<0$时,我们把$a,b,c$全部取相反值.但这也是......
  • 近几年CSP-S考点分析与2024预测
    考点概率2020T1模拟、数学、二分一道很好的思维题,当年的T1比T2要难。T2贪心、位运算当年最简单的一道题,思维难度也不高。T3dp、topo要对题目进行转化,变成一个本质相同但难度不同的问题。T4队列、贪心类似于对于题意进行模拟。2021T1堆、贪心直接对整个进行贪心就......
  • CSP-S 2020~2023 分析
    2020T1儒略日直接模拟即可,洛谷难度虚高。T2动物园考察对二进制数的理解程度,很简单,但需要特判答案超过longlong范围的情况。T3函数调用就是处理一下拓扑序就行了,代码细节较多,但整体比较简单。T4贪吃蛇很难想的贪心,考虑水分。发现$n\le3$的点很简单,轻松拿下$20......
  • CSP模拟赛 #42
    #40懒得写了,#41题目质量过低。A有\(n\)张长度为\(m\)的纸条,每张纸条有\(k_i\)个位置有小写字母,其他位置透明。你需要合理从上到下排列这些纸条,使得最终在上方看到的字符串为\(s\),保证对于每个位置,至少一张纸条在该位置有一个字母。给出方案或无解。\(1\len,m\le10^......
  • 对CSP-S认证知识面的分析
    CCF举办的CSP-S认证从2019年开始,在这几年间,复赛的题目类型各有不同。分析一些客观的过去数据题目难度使用Luogu的题目评级机制,在过去的几年中:难度数量普及-\(2\)普及/提高−\(1\)普及+/提高\(5\)提高+/省选−\(7\)省选/NOI−\(5\)NOI/NOI......
  • 历届 CSP 刷题记录
    \(\texttt{CSP2019}\)J组\(\texttt{T3}\)题目传送门注意到一点:每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。这告诉我们:在一天内,纪念品就是钱,钱就是纪念品,钱和纪念品没有本质区别,这满足动态规划......
  • CSP近四年总结及2024预测
    近四年算法出现频率(按频率排序,且按每年是否出现统计)动态规划dp——\(100\%(\frac{4}{4})\)贪心——\(100\%(\frac{4}{4})\)搜索——\(75\%(\frac{3}{4})\)图论——\(75\%(\frac{3}{4})\)二分——\(50\%(\frac{2}{4})\)基础数据结构——\(50\%(\frac{2}{4})\)......