Codeforces Round #672 (Div. 2)

A题

 

 容易题。只有严格单调递减情况是NO因为需要n*(n-1)/2次。其余都行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
int main () {
    int t;
    cin >> t;
    while(t--) {
        int n;
        cin >> n;
        vector<int> v;
        bool ok = 0;
        for(int i = 0; i < n; ++i) {
            int temp;
            cin >> temp;
            v.push_back(temp);
        }
        for(int i = 1; i < n; ++i) {
            if(v[i - 1] <= v[i]) {
                ok = 1;
            }
        }
        if(ok) {
            cout << "YES" << endl;
        }
        else {
            cout << "NO" << endl;
        }
    }
}

 B题

记得开long long!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
    int t;
    cin >> t;
    while(t--) {
        int n;
        cin >> n;
        vector<ll> v(100);
        for(int i = 0; i < n; ++i) {
            ll temp;
            cin >> temp;
            int circle = 0;
            for(circle = 0; temp; temp >>= 1) {
                circle++;
            }
            v[circle]++;
        }
        ll ans = 0;
        for(int i = 0; i < v.size(); ++i) {
            if(v[i]) {
                ans +=  (v[i] - 1) * v[i] / 2;
            }
        }
        cout << ans << endl;
    }
}

 C题

 

 思维题

用两个数组进行记录

一定要注意这种思想

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin >> t;
    while(t--) {
        int n, q;
        cin >> n >> q;
        vector<ll> a(n + 1);
        for(int i = 1; i <= n; ++i) {
            cin >> a[i];
        }
        vector<ll> mx(n + 1);
        vector<ll> mn(n + 1);
//      for(int i = n - 1; i >= 0; --i) {
//          mx[i] = max(mx[i + 1], a[i] - mn[i + 1]);
//          mn[i] = min(mn[i + 1], a[i] - mx[i + 1]);
//      }
//      cout << mx[0] << endl;
        for(int i = 1; i <= n; ++i) {
            mx[i] = max(mx[i - 1], a[i] - mn[i - 1]);
            mn[i] = min(mn[i - 1], a[i] - mx[i - 1]);
        }
        cout << mx[n] << endl;
    }
}

 D题

组合数问题 用优先队列解决。本质上来讲是求几个区间公共情况的组合情况

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MODE = 998244353;
const int N = 3e5 + 10;
typedef pair<int, int> P;
ll pre[N];
ll qpow(ll a, ll b) {
    ll res = 1;
    while(b) {
        if(b & 1)
            res = (res * a) % MODE;
        b >>= 1;
        a = (a * a) % MODE;
    }
    return res % MODE;
}
ll C(ll n, ll k) {
    if(k == 0) {
        return 1;
    }
    return(pre[n] % MODE * qpow((pre[k] * pre[n - k]) % MODE, MODE - 2) % MODE) % MODE;
}
int main () {
    ll n, k;
    cin >> n >> k;
    pre[0] = 1;
    for(int i = 1; i < N; ++i) {
        pre[i] = (pre[i - 1] * i) % MODE;
    }
    vector<P> v(n);
    for(int i = 0; i < n; ++i) {
        cin >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());
//  for(int i = 0; i < v.size(); ++i) {
//      cout << v[i].first << " " << v[i].second << endl;
//  }
    ll ans = 0;
//  priority_queue<int, vector<int>, greater<int>> pq;
    priority_queue<int, vector<int>, greater<int> > pq;
    for(int i = 0; i < n; ++i) {
        while(pq.size() && v[i].first > pq.top()) {
            pq.pop();
        }
        if(pq.size() >= k - 1) {
            ans += C(pq.size(), k - 1);
        }
        pq.push(v[i].second);
    }
    cout << ans % MODE << endl;
}

 

posted @   LightAc  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
历史上的今天:
2019-09-25 C#实验二
返回顶端
点击右上角即可分享
微信分享提示