这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
|
2020-2021:teams:manespace:cf_641_div_2 [2020/05/15 17:33] 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>的了,懒得改了 | + | |