Codeforces Round #583 (Div.1+Div.2)

不太友好的一场。

题目链接:https://codeforces.com/contest/1214


A:

想了很久优美做法,发现还不如直接一发暴力正确。

 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, d, e;
21 
22 int main() {
23     scanf("%d%d%d", &n, &d, &e);
24     int dollarUnit = d, euroUnit = e * 5, ans = n;
25     for (int numOfDollar = 0; numOfDollar <= n / dollarUnit; numOfDollar++) {
26         int remainRubles = n - numOfDollar * dollarUnit;
27         remainRubles -= remainRubles / euroUnit * euroUnit;
28         ans = min(ans, remainRubles);
29     }
30     for (int numOfEuro = 0; numOfEuro <= n / euroUnit; numOfEuro += 5) {
31         int remainRubles = n - numOfEuro * euroUnit;
32         remainRubles -= remainRubles / dollarUnit * dollarUnit;
33         ans = min(ans, remainRubles);
34     }
35     printf("%d
", ans);
36     return 0;
37 }
View Code

B:

比A简单多了的傻题。

 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 b, g, n;
21 
22 int main() {
23     scanf("%d%d%d", &b, &g, &n);
24     ll ans = 0;
25     for (int i = 0; i <= b; i++)
26         if (n - i >= 0 && n - i <= g) ans++;
27     printf("%lld
", ans);
28     return 0;
29 }
View Code

C:

check一次看看是否合法即可。

 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 = 2e5 + 10;
21 int n;
22 char s[maxn];
23 
24 int main() {
25     scanf("%d", &n);
26     scanf("%s", s + 1);
27     if (n & 1) return puts("No"), 0;
28     stack<int>st;
29     while (!st.empty()) st.pop();
30     for (int i = 1; i <= n; i++) {
31         if (s[i] == '(') st.push(0);
32         if (s[i] == ')') {
33             if (!st.empty() && st.top() == 0) st.pop();
34             else st.push(1);
35         }
36     }
37     if (st.empty()) return puts("Yes"), 0;
38     else {
39         if ((int)st.size() != 2) return puts("No"), 0;
40         int tmp1 = st.top(), tmp2;
41         st.pop();
42         tmp2 = st.top();
43         if (tmp1 != tmp2) return puts("Yes"), 0;
44         else return puts("No"), 0;
45     }
46     return 0;
47 }
View Code

D:

大模拟。(跑了

E:

SB构造题。

 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 = 2e5 + 10;
21 
22 pair<int, int>a[maxn];
23 vector<int>s;
24 int n;
25 
26 int main() {
27     scanf("%d", &n);
28     for (int i = 1; i <= n; i++)
29         scanf("%d", &a[i].first), a[i].second = 2 * i - 1;
30     sort(a + 1, a + n + 1);
31     reverse(a + 1, a + n + 1);
32     s.resize(1);
33     for (int i = 1; i <= n; i++) s.push_back(a[i].second);
34     for (int i = 1; i <= n - 1; i++) printf("%d %d
", a[i].second, a[i + 1].second);
35     for (int i = 1; i <= n; i++) {
36         int j = i + a[i].first - 1;
37         printf("%d %d
", a[i].second + 1, s[j]);
38         if (j == (int)s.size() - 1) s.push_back(a[i].second + 1);
39     }
40     return 0;
41 }
View Code
原文地址:https://www.cnblogs.com/JHSeng/p/11461581.html