这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:manespace:cf_641_div_2 [2020/05/15 17:35] quantumbolt |
2020-2021:teams:manespace:cf_641_div_2 [2020/05/18 22:08] (当前版本) quantumbolt |
||
---|---|---|---|
行 1: | 行 1: | ||
- | 啊,这周又是一堆的作业,只打了一场比赛,没想到遇到了国人的数论专场,m(m(m(m(打着打着就不会了,😔 | + | 啊,这周又是一堆的作业,只打了一场比赛,没想到遇到了国人的数论专场,m( m( m( m(打着打着就不会了,😔 |
- | <HTML><ul></HTML> | + | ===== A ===== |
- | <HTML><li></HTML><HTML><p></HTML>A<HTML></p></HTML> | + | |
- | <HTML><ul></HTML> | + | |
- | <HTML><li></HTML>题意:给一个数$n$ ,进行$k$次运算 运算规则,得到$n$除了1之外能够整除$n$的最小数字,然后将结果$f(n)$加到$n$上,在经过k次运算,得到最终结果<HTML></li></HTML> | + | |
- | <HTML><li></HTML>题解:将$n$分为偶数和奇数两部分,如果$n$为偶数,$f(n)$2,$n+f(n)$也是偶数,之后的迭代就直接加$2$就行了,如果$n$为奇数,有两种情况,第一,他为质数,第二,他的$f(n)$为质数,但是无论如何,他在一次迭代后得到的数都是偶数,然后再用一的情况就行了。<HTML></li></HTML> | + | |
- | <HTML><li></HTML>代码:<HTML></li></HTML><HTML></ul></HTML> | + | |
- | <code cpp> | + | * 题意:给一个数$n$ ,进行$k$次运算 运算规则,得到$n$除了1之外能够整除$n$的最小数字,然后将结果$f(n)$加到$n$上,在经过$k$次运算,得到最终结果 |
+ | * 题解:将$n$分为偶数和奇数两部分,如果$n$为偶数,$f(n)$2,$n+f(n)$也是偶数,之后的迭代就直接加$2$就行了,如果$n$为奇数,有两种情况,第一,他为质数,第二,他的$f(n)$为质数,但是无论如何,他在一次迭代后得到的数都是偶数,然后再用一的情况就行了。 | ||
+ | * 代码:<code cpp> | ||
#include <bits/stdc++.h> | #include <bits/stdc++.h> | ||
+ | |||
using namespace std; | using namespace std; | ||
+ | |||
int sdiv(int n){ | int sdiv(int n){ | ||
- | for(int i = 2; i <= sqrt(n); i++){ | + | for(int i = 2; i <= sqrt(n); i++){ |
- | if(n % i == 0) return i; | + | if(n % i == 0) return i; |
- | } | + | } |
- | return n; | + | return n; |
} | } | ||
+ | |||
int main(){ | int main(){ | ||
+ | int n; | ||
+ | scanf("%d",&n); | ||
+ | while(n--){ | ||
+ | int k, t; | ||
+ | scanf("%d%d",&k,&t); | ||
+ | if(sdiv(k) % 2 == 1){ | ||
+ | k += sdiv(k); | ||
+ | k += (t-1)*2; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | k += t *2; | ||
+ | } | ||
+ | printf("%d\n",k); | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== B ===== | ||
+ | |||
+ | * 题意:给你一串数$s$<html><sub></html>$1$<html></sub></html>,$s$<html><sub></html>$2$<html></sub></html>,$s$<html><sub></html>$3$<html></sub></html>,$\ldots$,$s$<html><sub></html>$n$<html></sub></html>. 如果满足下标$i$<html><sub></html>$j$<html></sub></html>,$i$<html><sub></html>$j+1$<html></sub></html>满足$i$<html><sub></html>$j$<html></sub></html><$i$<html><sub></html>$j+1$<html></sub></html>并且有$s$<html><sub></html>$i$<html><sub></html>$j$<html></sub></html><html></sub></html> <$s$<html><sub></html>$i$<html><sub></html>$j+1$<html></sub></html><html></sub></html> .则称这样的安排是美的,题目要你找出一串序列中最长的,具有美感的数列长度。 | ||
+ | * 题解:不多bb,没有太多好说的。 | ||
+ | * 代码:<code cpp> | ||
+ | # include <bits/stdc++.h> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | void solve() { | ||
int n; | int n; | ||
- | scanf("%d",&n); | + | cin >> n; |
- | while(n--){ | + | vector <int> a(n + 1), dp(n + 1); |
- | int k, t; | + | for (int i = 1; i <= n; i++) { |
- | scanf("%d%d",&k,&t); | + | cin >> a[i]; |
- | if(sdiv(k) % 2 == 1){ | + | } |
- | k += sdiv(k); | + | int answer = 0; |
- | k += (t-1)*2; | + | for (int i = 1; i <= n; i++) { |
- | } | + | int mx = 0; |
- | else | + | for (int j = 1; j * j <= i; j++) { |
- | { | + | if (i % j == 0) { |
- | k += t *2; | + | if (a[j] < a[i]) mx = max(mx, dp[j]); |
+ | if (a[i / j] < a[i]) mx = max(mx, dp[i / j]); | ||
+ | } | ||
} | } | ||
- | printf("%d\n",k); | + | dp[i] = mx + 1; |
+ | answer = max(answer, dp[i]); | ||
} | } | ||
- | return 0; | + | cout << answer << endl; |
} | } | ||
- | </code><HTML></li></HTML> | ||
- | <HTML><li></HTML><HTML><p></HTML>B<HTML></p></HTML> | ||
- | <HTML><ul></HTML> | ||
- | <HTML><li></HTML><HTML><p></HTML>题意:给你一串数$s$<html><sub></html>$1$<html></sub></html>,$s$<html><sub></html>$2$<html></sub></html>,$s$<html><sub></html>$3$<html></sub></html>,$\ldots$,$s$<html><sub></html>$n$<html></sub></html>. 如果满足下标$i$<html><sub></html>$j$<html></sub></html>,$i$<html><sub></html>$j+1$<html></sub></html>满足$i$<html><sub></html>$j$<html></sub></html><$i$<html><sub></html>$j+1$<html></sub></html>并且有$s$<html><sub></html>$i$<html><sub></html>$j$<html></sub></html><html></sub></html> <$s$<html><sub></html>$i$<html><sub></html>$j+1$<html></sub></html><html></sub></html> .则称这样的安排是美的,题目要你找出一串序列中最长的,具有美感的数列长度。<HTML></p></HTML><HTML></li></HTML> | ||
- | <HTML><li></HTML><HTML><p></HTML>题解:不多bb<HTML></p></HTML><HTML></li></HTML> | ||
- | <HTML><li></HTML><HTML><p></HTML>代码:<HTML></p></HTML><HTML></li></HTML> | ||
- | <HTML><li></HTML><code cpp> | ||
- | # include <bits/stdc++.h> | ||
- | using namespace std; | + | int main() { |
+ | int tt = 1; | ||
+ | cin >> tt; | ||
+ | while (tt--) | ||
+ | solve(); | ||
+ | } | ||
+ | </code> | ||
- | void solve() { | + | ===== C ===== |
- | int n; | + | |
- | cin >> n; | + | |
- | vector <int> a(n + 1), dp(n + 1); | + | |
- | for (int i = 1; i <= n; i++) { | + | |
- | cin >> a[i]; | + | |
- | } | + | |
- | int answer = 0; | + | |
- | for (int i = 1; i <= n; i++) { | + | |
- | int mx = 0; | + | |
- | for (int j = 1; j * j <= i; j++) { | + | |
- | if (i % j == 0) { | + | |
- | if (a[j] < a[i]) mx = max(mx, dp[j]); | + | |
- | if (a[i / j] < a[i]) mx = max(mx, dp[i / j]); | + | |
- | } | + | |
- | } | + | |
- | dp[i] = mx + 1; | + | |
- | answer = max(answer, dp[i]); | + | |
- | } | + | |
- | cout << answer << endl; | + | |
- | } | + | |
- | + | ||
- | int main() { | + | |
- | int tt = 1; | + | |
- | cin >> tt; | + | |
- | while (tt--) | + | |
- | solve(); | + | |
- | } | + | |
- | </code><HTML></li></HTML><HTML></ul></HTML> | + | |
- | <HTML></li></HTML> | + | |
- | <HTML><li></HTML><HTML><p></HTML>C<HTML></p></HTML> | + | |
- | <HTML><ul></HTML> | + | |
- | <HTML><li></HTML>题意:给你一串数$s$<html><sub></html>$1$<html></sub></html>,$s$<html><sub></html>$2$<html></sub></html>,$s$<html><sub></html>$3$<html></sub></html>,$\ldots$,$s$<html><sub></html>$n$<html></sub></html>. 先算这串数的lcm,再算这串数的 gcd。<HTML></li></HTML> | + | |
- | <HTML><li></HTML>题解:开始没仔细思考就直接暴力,直接按题意来算,提交后就后悔了,暴力肯定会超时的啊,后来想到了STL大法,果然还是很强。<HTML></li></HTML> | + | |
- | <HTML><li></HTML>代码:<HTML></li></HTML><HTML></ul></HTML> | + | |
- | <code cpp> | + | * 题意:给你一串数$s$<html><sub></html>$1$<html></sub></html>,$s$<html><sub></html>$2$<html></sub></html>,$s$<html><sub></html>$3$<html></sub></html>,$\ldots$,$s$<html><sub></html>$n$<html></sub></html>. 先算这串数的lcm,再算这串数的 gcd。 |
+ | * 题解:开始没仔细思考就直接暴力,直接按题意来算,提交后就后悔了,暴力肯定会超时的啊,后来想到了STL大法,很神奇。 | ||
+ | * 代码:<code cpp> | ||
#include <bits/stdc++.h> | #include <bits/stdc++.h> | ||
行 110: | 行 108: | ||
return 0; | return 0; | ||
} | } | ||
- | </code><HTML></li></HTML> | + | </code> |
- | <HTML><li></HTML><HTML><p></HTML>D<HTML></p></HTML> | + | |
- | <HTML><ul></HTML> | + | |
- | <HTML><li></HTML>题目:https://codeforces.com/contest/1350/problem/D | + | |
- | <HTML><li></HTML>题解:哦时间不够了,没做完,提交了也没过。。<HTML></li></HTML> | + | ===== D ===== |
- | <HTML><li></HTML>咕咕中,会补的,别催了。<HTML></li></HTML><HTML></ul></HTML> | + | |
- | <HTML></li></HTML> | + | * 题目:https://codeforces.com/contest/1350/problem/D |
- | <HTML><li></HTML><HTML><p></HTML>E<HTML></p></HTML> | + | * 题解:哦时间不够了,没做完,提交了也没过。。 |
- | <HTML><ul></HTML> | + | * 咕咕中,会补的,别催了。 |
- | <HTML><li></HTML>题目:https://codeforces.com/contest/1350/problem/E | + | |
- | <HTML><li></HTML>咕咕中,会补的,别催了。<HTML></li></HTML><HTML></ul></HTML> | + | ===== E ===== |
- | <HTML></li></HTML> | + | |
- | <HTML><li></HTML><HTML><p></HTML>F<HTML></p></HTML> | + | * 题目:https://codeforces.com/contest/1350/problem/E |
- | <HTML><ul></HTML> | + | * 咕咕中,会补的,别催了。 |
- | <HTML><li></HTML>题目:https://codeforces.com/contest/1350/problem/F | + | |
- | <HTML><li></HTML>咕咕中,会补的,别催了。<HTML></li></HTML><HTML></ul></HTML> | + | ===== F ===== |
- | <HTML></li></HTML><HTML></ul></HTML> | + | |
+ | * 题目:https://codeforces.com/contest/1350/problem/F | ||
+ | * 咕咕中,会补的,别催了。 | ||
- | 淦,从markdown转码过来就是这样的了,全<html>的了,懒得改了 | + | |