Codeforces Round #637 (Div. 2)

A. Nastya and Rice

判断一下[n*(a-b),n*(a+b)]和[c-d,c+d]两个区间有没有相交

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (register int i = a; i <= b; i++)
 
int n, a, b, c, d;
int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        cin >> n >> a >> b >> c >> d;
        int flag = 0;
        if (n * (a + b) >= c - d && n * (a - b) <= c + d)
            flag = 1;
        puts(flag ? "YES" : "NO");
    }
}
View Code

 

B. Nastya and Door

滑动窗口统计一下最大个数,注意一下区间两端的peak不计入ans

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (register int i = a; i <= b; i++)
 
int n, k, a[200010], ispeak[200010];
int cnt, l, ans;
int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        cin >> n >> k;
        rep(i, 1, n) cin >> a[i];
        rep(i, 2, n - 1) ispeak[i] = a[i] > a[i - 1] && a[i] > a[i + 1];
        cnt = 0;
        l = 1;
        rep(i, 1, k) cnt += ispeak[i];
        ans = cnt - ispeak[k];
        rep(i, 2, n - k + 1)
        {
            cnt += ispeak[i + k - 1] - ispeak[i - 1];
            if (cnt - ispeak[i + k - 1] - ispeak[i] > ans)
            {
                ans = cnt - ispeak[i + k - 1] - ispeak[i];
                l = i;
            }
        }
        cout << ans + 1 << " " << l << endl;
    }
}
View Code

 

C. Nastya and Strange Generator

从1-n填数,在i位置填数,下一个要么在 i+1 的位置填,要么在[1,i-1]之间填

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (register int i = a; i <= b; i++)
 
int n, a[200010];
int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        cin >> n;
        rep(i, 1, n) cin >> a[i];
        int tmp = 1, flag = 1;
        for (int i = n; i; i--)
        {
            if (tmp == a[i])
                tmp++;
            else if (tmp < a[i])
                tmp = a[i];
            else if (a[i + 1] - a[i] != 1)
            {
                flag = 0;
                break;
            }
        }
        puts(flag ? "YES" : "NO");
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/likunhong/p/12767136.html