At grand 024

A

/* Huyyt */
#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define pb push_back
const int dir[8][2] = {{0, 1}, {1, 0}, {0, -1}, { -1, 0}, {1, 1}, {1, -1}, { -1, -1}, { -1, 1}};
using namespace std;
typedef long long ll;
inline void read(int &v)
{
        v = 0;
        char c = 0;
        int p = 1;
        while (c < '0' || c > '9')
        {
                if (c == '-')
                {
                        p = -1;
                }
                c = getchar();
        }
        while (c >= '0' && c <= '9')
        {
                v = (v << 3) + (v << 1) + c - '0';
                c = getchar();
        }
        v *= p;
}
const long long mod = 1e9 + 7;
const int N = 1e5 + 5;
int main()
{
        ll a, b, c, k;
        cin >> a >> b >> c >> k;
        if (k % 2 == 1)
        {
                cout << b - a << endl;
        }
        else
        {
                cout << a - b << endl;
        }
        return 0;
}
View Code

B

只要算出最长 数字连续子序列就可以了

/* Huyyt */
#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define pb push_back
const int dir[8][2] = {{0, 1}, {1, 0}, {0, -1}, { -1, 0}, {1, 1}, {1, -1}, { -1, -1}, { -1, 1}};
using namespace std;
typedef long long ll;
inline void read(int &v)
{
        v = 0;
        char c = 0;
        int p = 1;
        while (c < '0' || c > '9')
        {
                if (c == '-')
                {
                        p = -1;
                }
                c = getchar();
        }
        while (c >= '0' && c <= '9')
        {
                v = (v << 3) + (v << 1) + c - '0';
                c = getchar();
        }
        v *= p;
}
const long long mod = 1e9 + 7;
const int N = 2e5 + 5;
int n;
int num[N];
int aim[N];
int main()
{
        read(n);
        int now;
        for (int i = 1; i <= n; i++)
        {
                read(now);
                num[now] = i;
        }
        int ans = 1;
        int ansmaxn = 1;
        for (int i = 2; i <= n; i++)
        {
                if (num[i] > num[i - 1])
                {
                        ans++;
                }
                else
                {
                        ans = 1;
                }
                ansmaxn = max(ansmaxn, ans);
        }
        cout << n - ansmaxn << endl;
        return 0;
}
View Code

C

给你两个数组A,B  A全为0  B是给定的N个数

一次操作可以使得Ai(2<=i<=N) 变为 Ai-1+1

解:

首先排除不合法的情况: ①.当A0不为0的时候 ②.当相邻的两个数之差大于1

D

猜你喜欢

转载自www.cnblogs.com/Aragaki/p/9069625.html
024