• codeforces #601 div2 ABC~E1


    A. Changing Volume

    Description

    Solution

    模拟水题.

     

    B. Fridge Lockers

    Description

     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<ll, 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 template <typename T>
     72 void _write(const T &t)
     73 {
     74     write(t);
     75 }
     76 template <typename T, typename... Args>
     77 void _write(const T &t, Args... args)
     78 {
     79     write(t), pblank;
     80     _write(args...);
     81 }
     82 template <typename T, typename... Args>
     83 inline void write_line(const T &t, const Args &... data)
     84 {
     85     _write(t, data...);
     86     puts("");
     87 }
     88 int main(int argc, char const *argv[])
     89 {
     90 #ifndef ONLINE_JUDGE
     91     freopen("in.txt", "r", stdin);
     92     // freopen("out.txt", "w", stdout);
     93 #endif
     94     int t = read<int>();
     95     while (t--)
     96     {
     97         n = read<int>(), m = read<int>();
     98         vector<P> a(n);
     99         for (int i = 1; i <= n; i++)
    100         {
    101             int x = read<int>();
    102             a[i - 1] = P(x, i);
    103         }
    104         sort(a.begin(), a.end());
    105         if (m < n || n == 2)
    106             puts("-1");
    107         else
    108         {
    109             ll res = 0;
    110             for (int i = 0; i < n; i++)
    111                 res += a[i].first + a[(i + 1) % n].first;
    112             for (int i = 0; i < m - n; i++)
    113                 res += a[0].first + a[1].first;
    114             writeln(res);
    115             for (int i = 0; i < n; i++)
    116                 write_line(a[i].second, a[(i + 1) % n].second);
    117             for (int i = 0; i < m - n; i++)
    118                 write_line(a[0].second, a[1].second);
    119         }
    120     }
    121     return 0;
    122 }
    View Code

    C. League of Leesins

    Description

     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 template <typename T>
     72 void _write(const T &t)
     73 {
     74     write(t);
     75 }
     76 template <typename T, typename... Args>
     77 void _write(const T &t, Args... args)
     78 {
     79     write(t), pblank;
     80     _write(args...);
     81 }
     82 template <typename T, typename... Args>
     83 inline void write_line(const T &t, const Args &... data)
     84 {
     85     _write(t, data...);
     86     puts("");
     87 }
     88 vector<int> g[maxn];
     89 unordered_map<int, int> mp;
     90 inline void add(int x, int y, int z)
     91 {
     92     g[x].emplace_back(y);
     93     g[x].emplace_back(z);
     94     g[y].emplace_back(x);
     95     g[y].emplace_back(z);
     96     g[z].emplace_back(x);
     97     g[z].emplace_back(y);
     98     mp[x]++;
     99     mp[y]++;
    100     mp[z]++;
    101 }
    102 vector<int> res;
    103 int vis[maxn];
    104 void search(int f, int s)
    105 {
    106     res.clear();
    107     res.emplace_back(f);
    108     res.emplace_back(s);
    109     vis[f] = vis[s] = 1;
    110     int flag = 1;
    111     for (int i = 1; i <= n - 2 && flag; i++)
    112     {
    113         int sz = g[f].size();
    114         int q = 0;
    115         for (int j = 0; j < sz; j++)
    116         {
    117             int v = g[f][j];
    118             if (!vis[v])
    119             {
    120                 res.emplace_back(v);
    121                 f = s;
    122                 s = v;
    123                 vis[v] = 1;
    124                 break;
    125             }
    126         }
    127     }
    128 }
    129 int main(int argc, char const *argv[])
    130 {
    131 #ifndef ONLINE_JUDGE
    132     freopen("in.txt", "r", stdin);
    133     // freopen("out.txt", "w", stdout);
    134 #endif
    135     n = read<int>();
    136     for (int i = 0; i < n - 2; i++)
    137     {
    138         int q = read<int>(), w = read<int>(), e = read<int>();
    139         add(q, w, e);
    140     }
    141     int f, s;
    142     for (int i = 1; i <= n; i++)
    143         if (mp[i] == 1)
    144         {
    145             f = i;
    146             for (int j = 0; j < g[f].size(); j++)
    147                 if (mp[g[f][j]] == 2)
    148                     s = g[f][j];
    149             break;
    150         }
    151     search(f, s);
    152     for (int x : res)
    153         write(x), pblank;
    154     return 0;
    155 }
    View Code

    E1. Send Boxes to Alice (Easy Version)

    Description

    Solution

    晚点更新

  • 相关阅读:
    畅通工程续 dijkstra
    能量项链 区间dp
    机器人军团
    skiing
    数论知识
    灯泡游戏
    60. 第k个排列
    17. 电话号码的字母组合
    101. 对称二叉树
    144. 二叉树的前序遍历
  • 原文地址:https://www.cnblogs.com/mooleetzi/p/11951292.html
Copyright © 2020-2023  润新知