• 2018 IME Tryouts


    比较简单的三星场,差一点AK

    最近忙着面试,三个人都不在状态,我前期很C后期萎了,两个队友前期很萎后面很C,可能这就是队内文化8

    题目链接:https://codeforces.com/gym/101858


    A:

    solver:zyh、lzh

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 long long dp[2][8];
     4 const long long M = 1e9 + 7;
     5 int main() {
     6     int n;
     7     scanf("%d", &n);
     8     dp[1][0] = dp[1][6] = dp[1][3] = 1;
     9     for (int i = 2; i <= n; ++i) {
    10         int now = i & 1;
    11         int pre = (i - 1) & 1;
    12         dp[now][7] = (dp[pre][0] + dp[pre][6] + dp[pre][3]) % M;
    13         dp[now][6] = (dp[pre][1] + dp[pre][7]) % M;
    14         dp[now][5] = dp[pre][2];
    15         dp[now][4] = dp[pre][3];
    16         dp[now][3] = (dp[pre][4] + dp[pre][7]) % M;
    17         dp[now][2] = dp[pre][5];
    18         dp[now][1] = dp[pre][6];
    19         dp[now][0] = dp[pre][7];
    20         //cout<<dp[now][7]<<endl;
    21     }
    22     printf("%lld", dp[n & 1][7]);
    23 }
    View Code

    B:

    solver:czq

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define pb emplace_back
     6 #define mp make_pair
     7 #define eps 1e-8
     8 #define lson (curpos<<1)
     9 #define rson (curpos<<1|1)
    10 /* namespace */
    11 using namespace std;
    12 /* header end */
    13 
    14 string s, ans = "";
    15 int numC = 0, numS = 0;
    16 
    17 int main() {
    18     ios::sync_with_stdio(false);
    19     cin.tie(0);
    20     cin >> s;
    21     for (auto ch : s) {
    22         if (ch == 'C' && numC <= 1) {
    23             numC++, numS = 0;
    24             ans += 'B';
    25         } else if (ch == 'S' && numS <= 1) {
    26             numS++, numC = 0;
    27             ans += 'D';
    28         } else if (ch == 'C') {
    29             numC = 0, ans += 'P';
    30         } else if (ch == 'S') {
    31             numS = 0, ans += 'T';
    32         }
    33     }
    34     cout << ans << endl;
    35     return 0;
    36 }
    View Code

    C:

    solver:lzh

    据说这个题随便剪一下枝就能过了,跑得飞起

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef pair<int, int> pii;
     5 #define ff first
     6 #define ss second
     7 
     8 int a[10][10], ok = 0;
     9 int w[10][10], quyu[40], num[40];
    10 int rvis[10][10], cvis[10][10], blockvis[10][10], quyuvis[40][10];
    11 inline int getblock(int x, int y) {
    12     return (x + 1) / 2 * 2 - (y > 3 ? 0 : 1);
    13 }
    14 void dfs(int x, int y) {
    15     if (y == 7) {
    16         x++, y = 1;
    17         dfs(x, y);
    18         return;
    19     }
    20     if (ok)
    21         return;
    22     if (x == 7) {
    23         for (int i = 1; i <= 6; i++)
    24             for (int j = 1; j <= 6; j++)
    25                 cout << a[i][j] << " 
    "[j == 6];
    26         ok = 1;
    27         return;
    28     }
    29 
    30     if (num[w[x][y]] == 1) {
    31         int v = w[x][y], b = getblock(x, y), p = quyu[v];
    32         if (!rvis[x][p] && !cvis[y][p] && !blockvis[b][p] && !quyuvis[v][p]) {
    33             a[x][y] = p;
    34             quyu[v] = 0, num[v] = 0;
    35             rvis[x][p] = cvis[y][p] = blockvis[b][p] = quyuvis[v][p] = 1;
    36             dfs(x, y + 1);
    37             rvis[x][p] = cvis[y][p] = blockvis[b][p] = quyuvis[v][p] = 0;
    38             quyu[v] = p, num[v] = 1;
    39             a[x][y] = 0;
    40         }
    41         return;
    42     }
    43     for (int i = 1; i <= min(quyu[w[x][y]] - 1, 6); i++) {
    44         int v = w[x][y], b = getblock(x, y), p = i;
    45         if (!rvis[x][p] && !cvis[y][p] && !blockvis[b][p] && !quyuvis[v][p]) {
    46             a[x][y] = p;
    47             quyu[v] -= p, num[v]--;
    48             rvis[x][p] = cvis[y][p] = blockvis[b][p] = quyuvis[v][p] = 1;
    49             dfs(x, y + 1);
    50             rvis[x][p] = cvis[y][p] = blockvis[b][p] = quyuvis[v][p] = 0;
    51             quyu[v] += p, num[v]++;
    52             a[x][y] = 0;
    53         }
    54     }
    55 }
    56 
    57 int main() {
    58     int n;
    59     cin >> n;
    60     for (int i = 1; i <= n; i++)
    61         cin >> quyu[i];
    62     for (int i = 1; i <= 6; i++)
    63         for (int j = 1, x; j <= 6; j++) {
    64             cin >> x;
    65             w[i][j] = x, num[x]++;
    66         }
    67     dfs(1, 1);
    68 }
    View Code

    D:

    solver:zyh、czq

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 long long sum(long long x) {
     4     return x * (x + 1) / 2LL;
     5 }
     6 int main() {
     7     int T;
     8     scanf("%d", &T);
     9     while (T--) {
    10         long long n;
    11         scanf("%lld", &n);
    12         long long l = -1, r = (long long)sqrt(4 * (n + 1)) + 1;
    13         while (l + 1 < r) {
    14             long long mid = l + r >> 1;
    15             if (sum(mid) <= n) l = mid;
    16             else r = mid;
    17         }
    18         printf("%lld
    ", l);
    19     }
    20     return 0;
    21 }
    View Code

    E:

    solver:lzh

    最后绝杀AC,lzhnb

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 typedef long long ll;
      4 typedef pair<int, int> pii;
      5 #define ff first
      6 #define ss second
      7 
      8 const int N = 1 << 18;
      9 const double PI = acos(-1.0);
     10 
     11 struct cpx {
     12     double x, y;
     13     cpx() {}
     14     cpx(double _x, double _y)
     15         : x(_x)
     16         , y(_y) {
     17     }
     18     cpx operator+(const cpx &b) const {
     19         return cpx(x + b.x, y + b.y);
     20     }
     21     cpx operator-(const cpx &b) const {
     22         return cpx(x - b.x, y - b.y);
     23     }
     24     cpx operator*(const cpx &b) const {
     25         return cpx(x * b.x - y * b.y, x * b.y + y * b.x);
     26     }
     27     cpx operator/(const int &b) const {
     28         return cpx(x / b, y / b);
     29     }
     30 };
     31 
     32 int rev[2 * N + 10];
     33 void getrev(int len) {
     34     int bit = 0;
     35     while ((1 << bit) < len)
     36         bit++;
     37     for (int i = 0; i < len; i++)
     38         rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (bit - 1));
     39 }
     40 
     41 void fft(cpx x[], int len, int opt) {
     42     for (int i = 0; i < len; i++)
     43         if (i < rev[i])
     44             swap(x[i], x[rev[i]]);
     45     for (int mid = 1; mid < len; mid <<= 1) {
     46         cpx tmp(cos(PI / mid), opt * sin(PI / mid));
     47         for (int i = 0, add = mid << 1; i < len; i += add) {
     48             cpx base(1, 0);
     49             for (int j = i; j < i + mid; j++, base = base * tmp) {
     50                 cpx a = x[j], b = base * x[j + mid];
     51                 x[j] = a + b, x[j + mid] = a - b;
     52             }
     53         }
     54     }
     55 
     56     if (opt == -1)
     57         for (int i = 0; i < len; i++)
     58             x[i] = x[i] / len;
     59 }
     60 
     61 cpx ffta[2 * N + 10], fftb[2 * N + 10];
     62 int solve(int a[], int b[], int lena, int lenb) {
     63     int len = 1;
     64     while (len < lena + lenb)
     65         len <<= 1;
     66     getrev(len);
     67 
     68     for (int i = 0; i < lena; i++)
     69         ffta[i] = cpx(a[i], 0);
     70     for (int i = lena; i < len; i++)
     71         ffta[i] = cpx(0, 0);
     72     for (int i = 0; i < lenb; i++)
     73         fftb[i] = cpx(b[i], 0);
     74     for (int i = lenb; i < len; i++)
     75         fftb[i] = cpx(0, 0);
     76 
     77     fft(ffta, len, 1), fft(fftb, len, 1);
     78     for (int i = 0; i < len; i++)
     79         ffta[i] = ffta[i] * fftb[i];
     80     fft(ffta, len, -1);
     81     return len;
     82 }
     83 
     84 char p[200010], t[200010];
     85 ll dam[N * 2 + 10], ans[N];
     86 const char s1[] = { "RNE" }, s2[] = { "ABC" };
     87 int numa[200010], numb[200010], D[10];
     88 int main() {
     89     int a, b, c, h;
     90     scanf("%d%d%d%d", &D[0], &D[1], &D[2], &h);
     91     scanf("%s%s", p + 1, t + 1);
     92     int n = strlen(p + 1), m = strlen(t + 1);
     93     for (int i = 0; i < 3; i++) {
     94         for (int j = 0; j <= n; j++)
     95             numa[j] = numb[j] = 0;
     96         for (int j = 1; j <= n; j++)
     97             if (p[j] == s1[i])
     98                 numa[j]++;
     99         for (int j = 1; j <= m; j++)
    100             if (t[j] == s2[i])
    101                 numb[n - j + 1]++;
    102         int len = solve(numa, numb, n + 4, n + 4);
    103         for (int j = 0; j < len; j++)
    104             dam[j] += (ll)(ffta[j].x + 0.5) * D[i];
    105         //for (int j = 0; j < len; j++)
    106         //    printf("%d %d %lf
    ", numa[j], numb[j], ffta[i].x);
    107     }
    108     int ansn = 0;
    109     for (int i = 0; i < 2 * N; i++) {
    110         ans[i % n] += dam[i];
    111     }
    112     for (int i = 0; i < n; i++) {
    113         if (ans[i] >= h)
    114             ansn++;
    115         //printf("%lld ", ans[i]);
    116     }
    117     int g = __gcd(ansn, n);
    118     printf("%d %d
    ", ansn / g, n / g);
    119 }
    View Code

    F:

    solver:czq

    很傻的并查集

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define pb emplace_back
     6 #define mp make_pair
     7 #define eps 1e-8
     8 #define lson (curpos<<1)
     9 #define rson (curpos<<1|1)
    10 /* namespace */
    11 using namespace std;
    12 /* header end */
    13 
    14 const int MAXN = 1e5 + 10;
    15 pair<int, int>edge[MAXN];
    16 int n, m, cnt, fa[MAXN], p[MAXN], ans[MAXN];
    17 
    18 int main() {
    19     scanf("%d%d", &n, &m); cnt = n;
    20     for (int i = 1; i <= n; i++) fa[i] = i;
    21     for (int i = 1, u, v; i <= m; i++) {
    22         scanf("%d%d", &u, &v);
    23         edge[i] = mp(u, v);
    24     }
    25 
    26     function<int(int)>findFa = [&](int cur)->int{
    27         return fa[cur] == cur ? cur : fa[cur] = findFa(fa[cur]);
    28     };
    29 
    30     for (int i = 1; i <= m; i++) scanf("%d", &p[i]);
    31     for (int i = m; i >= 1; i--) {
    32         ans[i] = cnt;
    33         int fa1 = findFa(edge[p[i]].first), fa2 = findFa(edge[p[i]].second);
    34         if (fa1 != fa2) {
    35             fa[fa1] = fa2;
    36             cnt--;
    37         }
    38     }
    39     for (int i = 1; i <= m; i++) printf("%d
    ", ans[i]);
    40     return 0;
    41 }
    View Code

    G:

    补:zyh

    思路完全正确,队友写挂了,比赛最后三分钟被我对拍拍出错误,但是没时间改

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int id[500001];
     4 vector<int> factors[500001];
     5 bool inSet[500001];
     6 long long cnt[1000001];
     7 void getFactors(int x, vector<int> &factor) {
     8     int len = sqrt(x);
     9     for (int i = 2; i <= len; ++i)
    10         if (x % i == 0) {
    11             factor.push_back(i);
    12             if (i * i != x) factor.push_back(x / i);
    13         }
    14     factor.push_back(x);
    15 }
    16 void updateCnt(vector<int> &factor, int d) {
    17     for (auto x : factor) {
    18         cnt[x] += d;
    19     }
    20 }
    21 void getPrime(int n, vector<int> &prime) {
    22     prime.clear();
    23     int len = sqrt(n);
    24     for (int i = 2; i <= len; ++i)
    25         if (n % i == 0) {
    26             prime.push_back(i);
    27             while (n % i == 0) n /= i;
    28         }
    29     if (n > 1) prime.push_back(n);
    30 }
    31 void dfs(int st, int sel, int product, long long &s, vector<int> &prime, int len) {
    32     if (sel > 0) {
    33         if (sel & 1) s += cnt[product];
    34         else s -= cnt[product];
    35     }
    36     for (int i = st; i < len; ++i) {
    37         dfs(i + 1, sel + 1, product * prime[i], s, prime, len);
    38     }
    39 }
    40 long long howMany(int x) {
    41     vector<int> prime;
    42     getPrime(x, prime);
    43     int len = prime.size();
    44     long long rnt = 0;
    45     dfs(0, 0, 1, rnt, prime, len);
    46     //cout<<"howMany: "<<rnt<<endl;
    47     return rnt;
    48 }
    49 int main() {
    50     int n, T;
    51     scanf("%d%d", &n, &T);
    52     for (int i = 0; i < n; ++i) {
    53         scanf("%d", &id[i]);
    54         getFactors(id[i], factors[i]);
    55         //cout<<"factor: ";
    56         //for (auto x:factors[i]) cout<<x<<' ';
    57         //cout<<endl;
    58     }
    59     long long ans = 0;
    60     long long sizeOfSet = 0;
    61     while (T--) {
    62         int t;
    63         scanf("%d", &t);
    64         --t;
    65         if (inSet[t]) {
    66             updateCnt(factors[t], -1);
    67             sizeOfSet--;
    68             ans -= sizeOfSet - howMany(id[t]);
    69         } else {
    70             ans += sizeOfSet - howMany(id[t]);
    71             updateCnt(factors[t], 1);
    72             sizeOfSet++;
    73         }
    74         inSet[t] = !inSet[t];
    75         printf("%lld
    ", ans);
    76     }
    77 }
    View Code

    H:

    solver:czq

    很傻的概率题

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define pb emplace_back
     6 #define mp make_pair
     7 #define eps 1e-8
     8 #define lson (curpos<<1)
     9 #define rson (curpos<<1|1)
    10 /* namespace */
    11 using namespace std;
    12 /* header end */
    13 
    14 double n, a, p;
    15 
    16 int main() {
    17     scanf("%lf%lf%lf", &n, &a, &p);
    18     printf("%.8f
    ", (a * p - a * (100.0 - p)) / 100.0 + n);
    19     return 0;
    20 }
    View Code

    I:

    solver:lzh、zyh

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef pair<int, int> pii;
     5 #define ff first
     6 #define ss second
     7 const int mod = 1e9 + 7;
     8 
     9 ll mul(pii a, pii b, pii c) {
    10     c.ff = c.ff - a.ff, c.ss = c.ss - a.ss;
    11     a.ff = b.ff - a.ff, a.ss = b.ss - a.ss;
    12     return 1ll * a.ff * c.ss - 1ll * a.ss * c.ff;
    13 }
    14 
    15 pii a[1010], b[1010], c[1010];
    16 int main() {
    17     int s, r, m, n;
    18     cin >> s >> r >> m;
    19     for (int i = 1; i <= s; i++)
    20         cin >> a[i].ff >> a[i].ss;
    21     for (int i = 1; i <= r; i++)
    22         cin >> b[i].ff >> b[i].ss;
    23     for (int i = 1; i <= m; i++)
    24         cin >> c[i].ff >> c[i].ss;
    25     a[s + 1] = a[1], b[r + 1] = b[1], c[m + 1] = c[1];
    26     cin >> n;
    27     while (n--) {
    28         pii x;
    29         cin >> x.ff >> x.ss;
    30         int gg = 0;
    31         for (int i = 1; i <= s; i++)
    32             if (mul(a[i], a[i + 1], x) < 0) {
    33                 gg++;
    34                 break;
    35             }
    36         if (!gg) {
    37             cout << "Sheena
    ";
    38             continue;
    39         }
    40         gg = 0;
    41         for (int i = 1; i <= r; i++)
    42             if (mul(b[i], b[i + 1], x) < 0) {
    43                 gg++;
    44                 break;
    45             }
    46         if (!gg) {
    47             cout << "Rose
    ";
    48             continue;
    49         }
    50         gg = 0;
    51         for (int i = 1; i <= m; i++)
    52             if (mul(c[i], c[i + 1], x) < 0) {
    53                 gg++;
    54                 break;
    55             }
    56         if (!gg) {
    57             cout << "Maria
    ";
    58             continue;
    59         }
    60         cout << "Outside
    ";
    61     }
    62 }
    View Code

    J:

    solver:czq

    树状数组

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define pb emplace_back
     6 #define mp make_pair
     7 #define eps 1e-8
     8 #define lson (curpos<<1)
     9 #define rson (curpos<<1|1)
    10 /* namespace */
    11 using namespace std;
    12 /* header end */
    13 
    14 class FenwickTree {
    15 private:
    16     // 存储的信息类型
    17     typedef int StoreType;
    18     int n;
    19     // num用于存储元素值,用于实现单点修改、区间查询
    20     // diff用于存储差分,用于实现区间修改
    21     vector<StoreType>num, diff;
    22 public:
    23     FenwickTree(): n(0) {}
    24     FenwickTree(int _n) {
    25         n = _n;
    26         num.assign(n, 0);
    27     }
    28     // 单点修改
    29     void add(int pos, int val) {
    30         for (; pos < n; pos |= pos + 1) num[pos] += val;
    31     }
    32     // 查询区间[0..pos]的信息
    33     StoreType sum(int pos) {
    34         StoreType ret = 0;
    35         for (; pos >= 0; pos = (pos & (pos + 1)) - 1) ret += num[pos];
    36         return ret;
    37     }
    38     // 查询区间[l..r]的和
    39     StoreType querySum(int l, int r) {
    40         return sum(r) - sum(l - 1);
    41     }
    42     // 区间修改,给区间[l..r]里的元素都加上val
    43     void intervalFix(int l, int r, int val) {
    44         add(l, val); add(r + 1, -val);
    45     }
    46 };
    47 
    48 const int MAXN = 1e5 + 10;
    49 int n, a[MAXN];
    50 FenwickTree fwt(MAXN * 10);
    51 
    52 int main() {
    53     scanf("%d", &n);
    54     for (int i = 1; i <= n; i++) {
    55         scanf("%d", &a[i]);
    56         a[i]++;
    57         printf("%d
    ", n - (i - fwt.sum(a[i] - 1)) + 1);
    58         fwt.add(a[i], 1);
    59     }
    60     return 0;
    61 }
    View Code

    K:

    solver:lzh

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 typedef pair<int, int> pii;
     5 #define ff first
     6 #define ss second
     7 
     8 int dis[100010][3];
     9 struct edge {
    10     int u, v, w;
    11     edge(int _u = 0, int _v = 0, int _w = 0) {
    12         u = _u, v = _v, w = _w;
    13     }
    14 } e[200010];
    15 int head[100010], num = 0, vis[200010];
    16 void addedge() {
    17     int u, v, w;
    18     cin >> u >> v >> w;
    19     e[num] = edge(head[u], v, w);
    20     head[u] = num++;
    21     e[num] = edge(head[v], u, w);
    22     head[v] = num++;
    23 }
    24 struct node {
    25     int val, v, add;
    26     node(int _val = 0, int _v = 0, int _add = 0) {
    27         val = _val, v = _v;
    28         add = _add;
    29     }
    30     bool operator<(const node &b) const {
    31         return val > b.val;
    32     }
    33 };
    34 int main() {
    35     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    36     memset(dis, 0x3f, sizeof dis);
    37     memset(head, -1, sizeof head);
    38 
    39     int n, m;
    40     cin >> n >> m;
    41     for (int i = 1; i <= m; i++) {
    42         addedge();
    43     }
    44     priority_queue<node> q;
    45     q.push(node{ 0, 1, 0 });
    46     dis[1][0] = 0;
    47     while (!q.empty()) {
    48         node x = q.top();
    49         q.pop();
    50         for (int i = head[x.v]; i != -1; i = e[i].u) {
    51             if ((vis[i] & x.add) == 0 && (vis[i ^ 1] & x.add) == 0) {
    52                 vis[i] |= x.add, vis[i ^ 1] |= x.add;
    53                 for (int j = 0; j < 3; j++) {
    54                     int tmp = dis[e[i].v][j];
    55                     tmp = min(tmp, dis[x.v][(j + 2) % 3] + e[i].w);
    56                     if (e[i].v != n) {
    57                         tmp = min(tmp, dis[x.v][j] + e[i].w * 3);
    58                         tmp = min(tmp, dis[x.v][(j + 1) % 3] + e[i].w * 5);
    59                     }
    60                     if (e[i].v != n && dis[e[i].v][j] != tmp) {
    61                         if ((vis[i] & 1) == 0)
    62                             q.push(node{ dis[e[i].v][0], e[i].v, 1 });
    63                         if ((vis[i] & 2) == 0)
    64                             q.push(node{ dis[e[i].v][1], e[i].v, 2 });
    65                         if ((vis[i] & 4) == 0)
    66                             q.push(node{ dis[e[i].v][2], e[i].v, 4 });
    67                     }
    68                     dis[e[i].v][j] = tmp;
    69                 }
    70             }
    71         }
    72     }
    73     pair<int, string> ans[10];
    74     ans[1] = { dis[n][0], "me" };
    75     ans[2] = { dis[n][1], "Gon" };
    76     ans[3] = { dis[n][2], "Killua" };
    77     sort(ans + 1, ans + 1 + 3);
    78     for (int i = 1; i <= 3; i++)
    79         cout << ans[i].ss << endl;
    80 }
    View Code

    L:

    solver:zyh、lzh、czq

    读错题把队友坑了,锅++

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef pair<int, int> point;
     4 vector<point> pts;
     5 bool check(point a, point b) {
     6     return (a.first < b.first && abs(a.first - b.first) + abs(a.second - b.second) <= 5);
     7 }
     8 vector<int> edges[200001];
     9 int dp[200001];
    10 bool vis[200001];
    11 bool reach0[200001];
    12 map<int, map<int, int>> Map;
    13 void dfs(int u) {
    14     vis[u] = true;
    15     dp[u] = 1;
    16     for (auto v : edges[u]) {
    17         if (!vis[v]) dfs(v);
    18         if (reach0[v]) dp[u] = max(dp[u], dp[v] + 1);
    19         reach0[u] |= reach0[v];
    20     }
    21 }
    22 int main() {
    23     int n, l;
    24     scanf("%d%d", &n, &l);
    25     pts.push_back(point(0, 0));
    26     Map[0][0] = 0;
    27     for (int i = 0; i < n; ++i) {
    28         int x, y;
    29         scanf("%d%d", &x, &y);
    30         pts.push_back(point(x, y));
    31         Map[x][y] = i + 1;
    32     }
    33     for (int i = 0; i <= n; ++i) {
    34         int x = pts[i].first;
    35         int y = pts[i].second;
    36         for (int j = 1; j <= 5; ++j) {
    37             if (Map.find(x + j) == Map.end()) continue;
    38             auto iter = Map[x + j].lower_bound(y - (5 - j));
    39             while (iter != Map[x + j].end() && iter->first <= y + 5 - j) {
    40                 edges[iter->second].push_back(i);
    41                 iter++;
    42             }
    43         }
    44     }
    45     reach0[0] = true;
    46     for (int i = 0; i <= n; ++i)
    47         if (!vis[i]) dfs(i);
    48     point end = {l, 0};
    49     int ans = 0;
    50     for (int i = 0; i <= n; ++i) {
    51         if (reach0[i] && check(pts[i], end)) ans = max(ans, dp[i] - 1);
    52     }
    53     printf("%d", ans);
    54 }
    View Code
  • 相关阅读:
    vue2.0动态添加组件
    Kali Linux信息收集工具全
    Kali Linux 弱点分析工具全集
    如何DIY一个简单的反弹Shell脚本
    深入理解DIP、IoC、DI以及IoC容器
    Intellij IDEA常用配置详解
    GIT 的常规操作
    Nodejs学习笔记(一)--- 简介及安装Node.js开发环境
    什么是“对用户友好”
    Facebook为什么使用PHP编程语言?
  • 原文地址:https://www.cnblogs.com/JHSeng/p/12499357.html
Copyright © 2020-2023  润新知