实小社团练习赛13
本文总阅读量次
8001,8508,8002,2904
T1
快排
pair或者struct结构体,记录顺序和编号
然后按顺序从小到大排序,输出编号即可。
T2
计数
数的范围在10万以内,所以可以用计数来做。
大致思路如下:
1.对输入的每个数进行计数,并计算总和
2.当值
注意题目的提示,总和可能会超过int,所以要用long long。
T3
数论:最大公因数+分解质因数
A和B的最大公因数的因数必然也是A和B的公因数
两个质数肯定是互质数,所以对最大公因数进行质因数分解,能保证任意两个公因数都是互质数。
所以解题思路如下:
1.先求出最大公因数。
2.对最大公因数进行质因数分解,统计有多少个不同的质因数,请用加强版分解质因数。
3.输出结果不要忘记加1,因为1与任何数能组成互质数。
T4
方法1:DFS+计数
根据题意,用两个二维数组记录通过田地的时间(邻接矩阵)。
for(int i = 0; i < m; i++){
int x,y,c,d;
cin >> x >> y >> c >> d;
bGrid[x][y] = c; //贝里斯
aGrid[x][y] = d; //爱丽丝
}
然后对每张地图进行深搜即可,到达第N块田地时,用计数数组记录一下(不同奶牛应用不同的计数数组),最后枚举计数数组,同一时刻都被记录的即为答案。
方法2:深搜思路(需两个深搜)
void dfs(当前田地编号,当前时间)
{
if(当前田地编号==n){
计数;
return;
}
for ... 枚举跟田地编号连接的田地{ //因为题目保证A<B,可以用组合方式枚举
if(田地连接){
dfs(下一块田地,当前时间+访问下一块田地的时间)
}
}
}