AtCoder Beginning Contest 137

好久没打过abc了。

题目链接:https://atcoder.jp/contests/abc137/tasks_print


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 a, b;
21 
22 int main() {
23     cin >> a >> b;
24     cout << max(max(a + b, a - b), a * b) << endl;
25     return 0;
26 }
View Code

B:

一开始还看错题了。

 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 lim = 1e6;
21 int k, x;
22 
23 int main() {
24     cin >> k >> x;
25     for (int i = x - k + 1; i <= x + k - 1; i++) {
26         if (i < -lim || i > lim) continue;
27         cout << i << " ";
28     }
29     puts("");
30     return 0;
31 }
View Code

C:

所有字符串自身sort一遍后再sort一遍,对于重复的字符串,ans+=C(重复个数,2)。

 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 = 1e5 + 10;
21 int n;
22 string s[maxn];
23 ll ans = 0;
24 
25 int main() {
26     scanf("%d", &n);
27     rep1(i, 1, n) {
28         cin >> s[i];
29         sort(s[i].begin(), s[i].end());
30     }
31     sort(s + 1, s + 1 + n);
32     int cnt = 1;
33     rep1(i, 2, n) {
34         if (s[i] == s[i - 1]) cnt++;
35         else {
36             ans += (ll)cnt * (cnt - 1) / 2;
37             cnt = 1;
38         }
39     }
40     ans += (ll)cnt * (cnt - 1) / 2;
41     printf("%lld\n", ans);
42     return 0;
43 }
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 const int maxn = 1e5 + 10;
21 // const int maxn = 5;
22 struct Job {
23     int earn, wait;
24     bool operator<(const Job &rhs)const {
25         if (wait != rhs.wait) return wait < rhs.wait;
26         else return earn > rhs.earn;
27     }
28 } a[maxn];
29 int n, m, tot = 0, p = 0;
30 ll ans = 0;
31 
32 int main() {
33     scanf("%d%d", &n, &m);
34     rep1(i, 1, n) {
35         int earn, wait; scanf("%d%d", &wait, &earn);
36         if (wait > m) continue;
37         a[++tot].wait = wait; a[tot].earn = earn;
38     }
39     int p = 0;
40     sort(a + 1, a + 1 + tot);
41     priority_queue<int>q;
42     while (!q.empty()) q.pop();
43     for (int reDay = 1; reDay <= m && p <= tot; reDay++) {
44         while (p < tot && a[p + 1].wait <= reDay) {
45             p++; q.push(a[p].earn);
46         }
47         if (!q.empty()) ans += (ll)q.top();
48         if (!q.empty()) q.pop();
49     }
50     printf("%lld\n", ans);
51     return 0;
52 }
View Code

E:

Bellmen-ford最短路。

F:

 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 struct CombineSmall {
21     int m;
22     vector<vector<int>> F;
23     CombineSmall(int n, int m): m(m), F(n) {
24         for (int i = 1; i < n; i++) F[i].resize(i + 1);
25     }
26     int com(int n, int k) {
27         return !k ? 1 : k > n ? 0 : k + k > n ? com(n, n - k) : F.at(n)[k] ? F[n][k] : F[n][k] = (com(n - 1, k) + com(n - 1, k - 1)) % m;
28     }
29 };
30 
31 int main() {
32     int p; scanf("%d", &p);
33     vector<int>b(p);
34     CombineSmall cb(p, p);
35     for (int i = 0; i < p; i++) {
36         int ai; scanf("%d", &ai);
37         if (!ai) continue;
38         vector<int> pa(p); pa[0] = 1;
39         for (int j = 1; j < p; j++) pa[j] = (ll)pa[j - 1] * i % p;
40         b[0] = (b[0] + 1) % p;
41         for (int j = 0; j < p; j++) {
42             int cof = (ll)cb.com(p - 1, j) * pa[p - 1 - j] % p;
43             if (~(p - 1 - j) & 1) cof = p - cof;
44             b[j] = (b[j] + cof) % p;
45         }
46     }
47     for (int i = 0; i < p; i++) printf("%d%c", b[i], i == p - 1 ? '\n' : ' ');
48     return 0;
49 }
View Code

 

转载于:https://www.cnblogs.com/JHSeng/p/11336135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值