zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 74 #div2 ABCD

    A. Prime Subtraction

    Description

    给两个数$x,y,x gt y$,判断$x-y$是否为一个素数的整数倍

    Solution

    由唯一分解可得每个大于1的数都可以唯一分解为素数幂次之积,显然只需要判断x-y是否大于1即可

     1 #include <algorithm>
     2 #include <cctype>
     3 #include <cmath>
     4 #include <cstdio>
     5 #include <cstdlib>
     6 #include <cstring>
     7 #include <iostream>
     8 #include <map>
     9 #include <numeric>
    10 #include <queue>
    11 #include <set>
    12 #include <stack>
    13 #if __cplusplus >= 201103L
    14 #include <unordered_map>
    15 #include <unordered_set>
    16 #endif
    17 #include <vector>
    18 #define lson rt << 1, l, mid
    19 #define rson rt << 1 | 1, mid + 1, r
    20 #define LONG_LONG_MAX 9223372036854775807LL
    21 #define pblank putchar(' ')
    22 #define ll LL
    23 #define fastIO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
    24 using namespace std;
    25 typedef long long ll;
    26 typedef long double ld;
    27 typedef unsigned long long ull;
    28 typedef pair<int, int> P;
    29 int n, m, k;
    30 const int maxn = 1e5 + 10;
    31 template <class T>
    32 inline T read()
    33 {
    34     int f = 1;
    35     T ret = 0;
    36     char ch = getchar();
    37     while (!isdigit(ch))
    38     {
    39         if (ch == '-')
    40             f = -1;
    41         ch = getchar();
    42     }
    43     while (isdigit(ch))
    44     {
    45         ret = (ret << 1) + (ret << 3) + ch - '0';
    46         ch = getchar();
    47     }
    48     ret *= f;
    49     return ret;
    50 }
    51 template <class T>
    52 inline void write(T n)
    53 {
    54     if (n < 0)
    55     {
    56         putchar('-');
    57         n = -n;
    58     }
    59     if (n >= 10)
    60     {
    61         write(n / 10);
    62     }
    63     putchar(n % 10 + '0');
    64 }
    65 template <class T>
    66 inline void writeln(const T &n)
    67 {
    68     write(n);
    69     puts("");
    70 }
    71 int main(int argc, char const *argv[])
    72 {
    73 #ifndef ONLINE_JUDGE
    74     freopen("in.txt", "r", stdin);
    75     // freopen("out.txt", "w", stdout);
    76 #endif
    77     int t = read<int>();
    78     while (t--)
    79     {
    80 
    81         ll x = read<ll>(), y = read<ll>();
    82         if (x - y == 1)
    83             puts("NO");
    84         else
    85             puts("YES");
    86     }
    87 
    88     return 0;
    89 }
    View Code

    B. Kill 'Em All

    Description

    小明想要消灭一群在x正半轴的怪兽。

    给出一个怪兽x坐标序列,导弹作用半径r。

    小明每次可以选择一个坐标抛一个炸弹,处于炸弹中心的怪兽直接被消灭,处于炸弹右边的怪兽被推移到x+r的位置,同理左边被推到x-r,x为怪兽坐标。

    同样被移到原点或者负半轴也会死亡。

    求最少能消灭所有怪兽的炸弹数。

    Solution

    对于炸弹右边的怪兽,由于右边没有限制,可以被推送到无穷远处,而之后还是需要一颗炸弹来消灭,所以往右推移是不可取的。

    那么贪心思路就是从最右开始扔炸弹,知道全部被消灭或者移到非正半轴

      1 #include <algorithm>
      2 #include <cctype>
      3 #include <cmath>
      4 #include <cstdio>
      5 #include <cstdlib>
      6 #include <cstring>
      7 #include <iostream>
      8 #include <map>
      9 #include <numeric>
     10 #include <queue>
     11 #include <set>
     12 #include <stack>
     13 #if __cplusplus >= 201103L
     14 #include <unordered_map>
     15 #include <unordered_set>
     16 #endif
     17 #include <vector>
     18 #define lson rt << 1, l, mid
     19 #define rson rt << 1 | 1, mid + 1, r
     20 #define LONG_LONG_MAX 9223372036854775807LL
     21 #define pblank putchar(' ')
     22 #define ll LL
     23 #define fastIO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
     24 using namespace std;
     25 typedef long long ll;
     26 typedef long double ld;
     27 typedef unsigned long long ull;
     28 typedef pair<int, int> P;
     29 int n, m, k;
     30 const int maxn = 1e5 + 10;
     31 template <class T>
     32 inline T read()
     33 {
     34     int f = 1;
     35     T ret = 0;
     36     char ch = getchar();
     37     while (!isdigit(ch))
     38     {
     39         if (ch == '-')
     40             f = -1;
     41         ch = getchar();
     42     }
     43     while (isdigit(ch))
     44     {
     45         ret = (ret << 1) + (ret << 3) + ch - '0';
     46         ch = getchar();
     47     }
     48     ret *= f;
     49     return ret;
     50 }
     51 template <class T>
     52 inline void write(T n)
     53 {
     54     if (n < 0)
     55     {
     56         putchar('-');
     57         n = -n;
     58     }
     59     if (n >= 10)
     60     {
     61         write(n / 10);
     62     }
     63     putchar(n % 10 + '0');
     64 }
     65 template <class T>
     66 inline void writeln(const T &n)
     67 {
     68     write(n);
     69     puts("");
     70 }
     71 vector<ll> vec;
     72 int main(int argc, char const *argv[])
     73 {
     74 #ifndef ONLINE_JUDGE
     75     freopen("in.txt", "r", stdin);
     76     // freopen("out.txt", "w", stdout);
     77 #endif
     78     int t = read<int>();
     79     while (t--)
     80     {
     81         n = read<int>();
     82         ll r = read<int>();
     83         vec.clear();
     84         for (int i = 0; i < n; i++)
     85         {
     86             ll x = read<ll>();
     87             vec.emplace_back(x);
     88         }
     89         sort(vec.begin(), vec.end());
     90         auto curend = unique(vec.begin(), vec.end());
     91         int sz = (int)(curend - vec.begin());
     92         int q = 0;
     93         for (int i = sz - 1; i >= 0; i--)
     94         {
     95             if (vec[i] - q * r <= 0)
     96                 break;
     97             ++q;
     98         }
     99         writeln(q);
    100     }
    101     return 0;
    102 }
    View Code

    C. Standard Free2play

    Description

     Solution

    找规律可以发现对于连续的一个1状态,如果其长度为奇数,那么这一段1可以无需消耗钻石安稳降落。

    而如果长度为偶数,那么它一定得降到最后一个1之上,到最后一个1的时候由于开关触碰,会掉到x-1位置,这时候需要消耗一个钻石保证认为无伤。

    模拟即可。注意特判最后一段1序列

      1 #include <algorithm>
      2 #include <cctype>
      3 #include <cmath>
      4 #include <cstdio>
      5 #include <cstdlib>
      6 #include <cstring>
      7 #include <iostream>
      8 #include <map>
      9 #include <numeric>
     10 #include <queue>
     11 #include <set>
     12 #include <stack>
     13 #if __cplusplus >= 201103L
     14 #include <unordered_map>
     15 #include <unordered_set>
     16 #endif
     17 #include <vector>
     18 #define lson rt << 1, l, mid
     19 #define rson rt << 1 | 1, mid + 1, r
     20 #define LONG_LONG_MAX 9223372036854775807LL
     21 #define pblank putchar(' ')
     22 #define ll LL
     23 #define fastIO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
     24 using namespace std;
     25 typedef long long ll;
     26 typedef long double ld;
     27 typedef unsigned long long ull;
     28 typedef pair<int, int> P;
     29 int n, m, k;
     30 const int maxn = 2e5 + 10;
     31 template <class T>
     32 inline T read()
     33 {
     34     int f = 1;
     35     T ret = 0;
     36     char ch = getchar();
     37     while (!isdigit(ch))
     38     {
     39         if (ch == '-')
     40             f = -1;
     41         ch = getchar();
     42     }
     43     while (isdigit(ch))
     44     {
     45         ret = (ret << 1) + (ret << 3) + ch - '0';
     46         ch = getchar();
     47     }
     48     ret *= f;
     49     return ret;
     50 }
     51 template <class T>
     52 inline void write(T n)
     53 {
     54     if (n < 0)
     55     {
     56         putchar('-');
     57         n = -n;
     58     }
     59     if (n >= 10)
     60     {
     61         write(n / 10);
     62     }
     63     putchar(n % 10 + '0');
     64 }
     65 template <class T>
     66 inline void writeln(const T &n)
     67 {
     68     write(n);
     69     puts("");
     70 }
     71 unordered_map<int, int> mp;
     72 int a[maxn];
     73 int main(int argc, char const *argv[])
     74 {
     75 #ifndef ONLINE_JUDGE
     76     freopen("in.txt", "r", stdin);
     77     // freopen("out.txt", "w", stdout);
     78 #endif
     79     int t = read<int>();
     80     while (t--)
     81     {
     82         int h = read<int>();
     83         n = read<int>();
     84         for (int i = 0; i < n; i++)
     85             a[i] = read<int>();
     86         int res = 0;
     87         int cnt = 1;
     88         for (int i = 1; i < n; i++)
     89         {
     90             if (a[i] == a[i - 1] - 1)
     91                 ++cnt;
     92             else
     93             {
     94                 if (!(cnt & 1))
     95                     ++res;
     96                 cnt = 0;
     97             }
     98         }
     99         if (!(cnt & 1) && a[n - 1] > 1)
    100             ++res;
    101         writeln(res);
    102     }
    103     return 0;
    104 }
    View Code

    D. AB-string

    Description

     Solution

    题解也太妙了8,正着想了好久没想到怎么做。

    题解思路,最终good=all-bad

    对于bad串,只会出现四种情况。

    ABBBBB,BBBBBA

    AAAAAB,BAAAAA

    那么前后各扫一遍即可,前后可能有长度为2的bad串重复计算,需要减去重复贡献。

     1 #include <algorithm>
     2 #include <cctype>
     3 #include <cmath>
     4 #include <cstdio>
     5 #include <cstdlib>
     6 #include <cstring>
     7 #include <iostream>
     8 #include <map>
     9 #include <numeric>
    10 #include <queue>
    11 #include <set>
    12 #include <stack>
    13 #if __cplusplus >= 201103L
    14 #include <unordered_map>
    15 #include <unordered_set>
    16 #endif
    17 #include <vector>
    18 #define lson rt << 1, l, mid
    19 #define rson rt << 1 | 1, mid + 1, r
    20 #define LONG_LONG_MAX 9223372036854775807LL
    21 #define pblank putchar(' ')
    22 #define ll LL
    23 #define fastIO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
    24 using namespace std;
    25 typedef long long ll;
    26 typedef long double ld;
    27 typedef unsigned long long ull;
    28 typedef pair<int, int> P;
    29 int n, m, k;
    30 const int maxn = 3e5 + 10;
    31 template <class T>
    32 inline T read()
    33 {
    34     int f = 1;
    35     T ret = 0;
    36     char ch = getchar();
    37     while (!isdigit(ch))
    38     {
    39         if (ch == '-')
    40             f = -1;
    41         ch = getchar();
    42     }
    43     while (isdigit(ch))
    44     {
    45         ret = (ret << 1) + (ret << 3) + ch - '0';
    46         ch = getchar();
    47     }
    48     ret *= f;
    49     return ret;
    50 }
    51 template <class T>
    52 inline void write(T n)
    53 {
    54     if (n < 0)
    55     {
    56         putchar('-');
    57         n = -n;
    58     }
    59     if (n >= 10)
    60     {
    61         write(n / 10);
    62     }
    63     putchar(n % 10 + '0');
    64 }
    65 template <class T>
    66 inline void writeln(const T &n)
    67 {
    68     write(n);
    69     puts("");
    70 }
    71 char s[maxn];
    72 int main(int argc, char const *argv[])
    73 {
    74 #ifndef ONLINE_JUDGE
    75     freopen("in.txt", "r", stdin);
    76     // freopen("out.txt", "w", stdout);
    77 #endif
    78     n = read<int>();
    79     scanf("%s", s);
    80     ll res = 1LL * (n - 1) * n / 2;
    81     int pre = 0;
    82     for (int i = 1; i < n; i++)
    83         if (s[i] != s[i - 1])
    84             res -= i - pre - 1, pre = i;
    85     pre = n - 1;
    86     for (int i = n - 2; i >= 0; i--)
    87         if (s[i] != s[i + 1])
    88         {
    89             res -= pre - i;
    90             pre = i;
    91         }
    92     writeln(res);
    93     return 0;
    94 }
    View Code
  • 相关阅读:
    部署yearning1.3
    git常用指令
    U盘centos7系统安装http://www.augsky.com/599.html
    C语言与SQL SERVER数据库(转)
    C连接MySQL数据库开发之Windows环境配置及测试(转)
    vs2012中添加lib,.h文件方法(原)
    如何用Visual Studio 2013 (vs2013)编写C语言程序 (转)
    Java值传递以及引用的传递、数组的传递!!
    ssh整合需要那些jar
    类加载器
  • 原文地址:https://www.cnblogs.com/mooleetzi/p/11754165.html
Copyright © 2011-2022 走看看