Codeforces Round #579 (Div. 3)

Played giant difference. Topic links: https://codeforces.com/contest/1203


A:

Positive with over backwards to be again on the line.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 int q;
21 int a[300];
22 
23 int main() {
24     scanf("%d", &q);
25     while (q--) {
26         int n; scanf("%d", &n);
27         int p, k;
28         rep1(i, 1, n) {
29             scanf("%d", &a[i]);
30             if (a[i] == 1) k = p = i;
31         }
32         if (n == 1) {
33             puts("YES");
34             continue;
35         }
36         int flag1 = 1, flag2 = 1, last = a[k];
37         while (1) {
38             p++;
39             if (p > n) p = 1;
40             if (a[p] - last != 1) {
41                 flag1 = 0; break;
42             }
43             last = a[p];
44             if (a[p] == n) break;
45         }
46         last = a[k]; p = k;
47         while (1) {
48             p--;
49             if (!p) p = n;
50             if (a[p] - last != 1) {
51                 flag2 = 0; break;
52             }
53             last = a[p];
54             if (a[p] == n) break;
55         }
56         if (flag1 || flag2) puts("YES"); else puts("NO");
57     }
58     return 0;
59 }
View Code

B:

Because the area to be equal, apparently after ordering minimum matching the biggest stick, the second smallest matching the second largest, and so on.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 500;
21 int n, a[maxn], t;
22 
23 int main() {
24     scanf("%d", &t);
25     while (t--) {
26         scanf("%d", &n); n = n * 4;
27         for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
28         sort(a + 1, a + 1 + n);
29         int p = 1, q = n, area = -1, flag = 1;
30         while (p < q) {
31             if (area == -1) area = a[p] * a[q];
32             else if (a[p]*a[q] != area) {
33                 flag = 0; break;
34             }
35             if (a[p] != a[p + 1] || a[q] != a[q - 1]) {
36                 flag = 0; break;
37             }
38             p += 2, q -= 2;
39         }
40         if (flag) puts("YES"); else puts("NO");
41     }
42     return 0;
43 }
View Code

C:

Seeking again gcd, the answer is the number of gcd factor.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 const int maxn = 4e5 + 10;
21 int a[maxn], n;
22 
23 int main() {
24     scanf("%d", &n);
25     ll gcd = 1, k; scanf("%lld", &k);
26     gcd = k;
27     for (int i = 1; i < n; i++) {
28         ll x; scanf("%lld", &x);
29         gcd = __gcd(gcd, x);
30     }
31     if (gcd == 1) return puts("1"), 0;
32     int cnt = 0;
33     for (ll i = 1; i < sqrt(gcd); i++)
34         if (gcd % i == 0) cnt += 2;
35     ll tmp = sqrt(gcd);
36     if (tmp * tmp == gcd) cnt++;
37     printf("%d\n", cnt);
38     return 0;
39 }
View Code

D:

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 string s, t;
21 
22 int main() {
23     cin >> s >> t;
24     int len1 = s.size(), len2 = t.size();
25     vector<int>pre(len2), suf(len2);
26     int cur = 0;
 27      // position front to back sweep pre stored string t of the letters in the string s occurs in 
28      for ( int I = 0 ; CUR <LEN2; I ++ )
 29          IF (s [I] == t [ CUR])
 30              pre [CUR ++] = I;
 31 is      // position suf swept forward from the character string stored in the letter t appearing in the string s 
32      CUR = LEN2;
 33 is      for ( int I = LEN1; I- - ;) {
 34 is          IF (S [I] == T [CUR - . 1 ])
 35              SUF [- CUR] = I;
 36      }
 37 [      //Pre array thus obtained is the index of the string t of each letter in the string s first appeared in
 38 is      // SUF array Similarly, to obtain the latest occurrence of the subscript 
39      int ANS = max (LEN1 - . 1 - pre.back (), SUF [ 0 ]);
 40      for ( int I = 0 ; I + . 1 <LEN2; I ++ )
 41 is          ANS = max (ANS, SUF [I + . 1 ] - pre [I] - . 1 ) ;
 42 is      the printf ( " % D \ n- " , ANS);
 43 is      return  0 ;
 44 is }
View Code

E:

Given the number n, each number x only becomes x-1, x + 1 or unchanged. After asking after several changes, the maximum number of different numbers can be selected.

greedy. Check after each sort and compared with the number value of a last. If the x-1> last, the ans ++, last = x-1. The remaining cases empathy.

 1 /* basic header */
 2 #include <bits/stdc++.h>
 3 /* define */
 4 #define ll long long
 5 #define dou double
 6 #define pb emplace_back
 7 #define mp make_pair
 8 #define sot(a,b) sort(a+1,a+1+b)
 9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19 
20 int n, ans = 0;
21 vector<int>a;
22 
23 int main() {
24     scanf("%d", &n);
25     for (int i = 1; i <= n; i++) {
26         int x; scanf("%d", &x);
27         a.pb(x);
28     }
29     sort(a.begin(), a.end());
30     int last = 0;
31     for (auto i : a) {
32         if (i - 1 > last) ans++, last = i - 1;
33         else if (i - 1 == last) ans++, last = i;
34         else if (i == last) ans++, last = i + 1;
35     }
36     printf("%d\n", ans);
37     return 0;
38 }
View Code

F:

Guess you like

Origin www.cnblogs.com/JHSeng/p/11349546.html