zoukankan      html  css  js  c++  java
  • 2018年南京站

    题目链接:http://codeforces.com/gym/101981

    A题:

    思路:

      通过枚举n<=5的情况可以发现,只有当k==1且n为偶数时或者n==0时后手胜,其他的都是先手胜。

    代码实现如下:

     1 #include <set>
     2 #include <map>
     3 #include <deque>
     4 #include <queue>
     5 #include <stack>
     6 #include <cmath>
     7 #include <ctime>
     8 #include <bitset>
     9 #include <cstdio>
    10 #include <string>
    11 #include <vector>
    12 #include <cstdlib>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 using namespace std;
    17 
    18 typedef long long LL;
    19 typedef pair<LL, LL> pLL;
    20 typedef pair<LL, int> pli;
    21 typedef pair<int, LL> pil;;
    22 typedef pair<int, int> pii;
    23 typedef unsigned long long uLL;
    24 
    25 #define lson rt<<1
    26 #define rson rt<<1|1
    27 #define lowbit(x) x&(-x)
    28 #define  name2str(name) (#name)
    29 #define bug printf("*********
    ")
    30 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    31 #define FIN freopen("D://code//in.txt", "r", stdin)
    32 #define IO ios::sync_with_stdio(false),cin.tie(0)
    33 
    34 const double eps = 1e-8;
    35 const int mod = 1000000007;
    36 const int maxn = 2000 + 7;
    37 const double pi = acos(-1);
    38 const int inf = 0x3f3f3f3f;
    39 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
    40 
    41 int n, k;
    42 
    43 int main() {
    44     scanf("%d%d", &n, &k);
    45     if(n == 0 || (k == 1 && n % 2 == 0)) printf("Austin
    ");
    46     else printf("Adrien
    ");
    47     return 0;
    48 }
    View Code

    D题:

    思路:

      最小球覆盖或三分套三分再套三分。

    代码实现如下:

    最小球覆盖:

     1 #include <set>
     2 #include <map>
     3 #include <deque>
     4 #include <queue>
     5 #include <stack>
     6 #include <cmath>
     7 #include <ctime>
     8 #include <bitset>
     9 #include <cstdio>
    10 #include <string>
    11 #include <vector>
    12 #include <cstdlib>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 using namespace std;
    17 
    18 typedef long long LL;
    19 typedef pair<LL, LL> pLL;
    20 typedef pair<LL, int> pli;
    21 typedef pair<int, LL> pil;;
    22 typedef pair<int, int> pii;
    23 typedef unsigned long long uLL;
    24 
    25 #define lson rt<<1
    26 #define rson rt<<1|1
    27 #define lowbit(x) x&(-x)
    28 #define  name2str(name) (#name)
    29 #define bug printf("*********
    ")
    30 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    31 #define FIN freopen("D://code//in.txt", "r", stdin)
    32 #define IO ios::sync_with_stdio(false),cin.tie(0)
    33 
    34 const double eps = 1e-8;
    35 const int mod = 1000000007;
    36 const int maxn = 1e6 + 7;
    37 const int mx = 8e4 + 7;
    38 const double pi = acos(-1);
    39 const int inf = 0x3f3f3f3f;
    40 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
    41 
    42 int n;
    43 
    44 struct Point {
    45     int x, y, z;
    46 }pp[107];
    47 
    48 struct Point1 {
    49     double x, y, z;
    50 }nw;
    51 
    52 double dis(Point1 a, Point b) {
    53     return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) + (a.z - b.z) * (a.z - b.z));
    54 }
    55 
    56 double solve(int n) {
    57     int idx = 1;
    58     nw.x = nw.y = nw.z = 0;
    59     double tmp = 10000.0, ans = 1e30;
    60     while(tmp > eps) {
    61         for(int i = 1; i <= n; i++) {
    62             if(dis(nw, pp[i]) - dis(nw, pp[idx]) >= eps) {
    63                 idx = i;
    64             }
    65         }
    66         double cnt = dis(nw, pp[idx]);
    67         if(ans - cnt >= eps) ans = cnt;
    68         nw.x += (pp[idx].x - nw.x) / cnt * tmp;
    69         nw.y += (pp[idx].y - nw.y) / cnt * tmp;
    70         nw.z += (pp[idx].z - nw.z) / cnt * tmp;
    71         tmp *= 0.99;
    72     }
    73     return ans;
    74 }
    75 
    76 int main() {
    77 #ifndef ONLINE_JUDGE
    78     FIN;
    79 #endif
    80     scanf("%d", &n);
    81     for(int i = 1; i <= n; i++) {
    82         scanf("%d%d%d", &pp[i].x, &pp[i].y, &pp[i].z);
    83     }
    84     printf("%.9f
    ", solve(n));
    85     return 0;
    86 }
    View Code

    G题:

    思路:

      C(n+3,4);

    代码实现如下:

     1 #include <set>
     2 #include <map>
     3 #include <queue>
     4 #include <set>
     5 #include <map>
     6 #include <deque>
     7 #include <queue>
     8 #include <stack>
     9 #include <cmath>
    10 #include <ctime>
    11 #include <bitset>
    12 #include <cstdio>
    13 #include <string>
    14 #include <vector>
    15 #include <cstdlib>
    16 #include <cstring>
    17 #include <iostream>
    18 #include <algorithm>
    19 using namespace std;
    20 
    21 typedef long long LL;
    22 typedef pair<LL, LL> pLL;
    23 typedef pair<LL, int> pli;
    24 typedef pair<int, LL> pil;;
    25 typedef pair<int, int> pii;
    26 typedef unsigned long long uLL;
    27 
    28 #define lson rt<<1
    29 #define rson rt<<1|1
    30 #define lowbit(x) x&(-x)
    31 #define  name2str(name) (#name)
    32 #define bug printf("*********
    ")
    33 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    34 #define FIN freopen("D://code//in.txt", "r", stdin)
    35 #define IO ios::sync_with_stdio(false),cin.tie(0)
    36 
    37 const double eps = 1e-8;
    38 const int mod = 1000000007;
    39 const int maxn = 1e5 + 7;
    40 const double pi = acos ( -1 );
    41 const int inf = 0x3f3f3f3f;
    42 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
    43 int t;
    44 LL n;
    45 
    46 int Mod_Pow(int x, int n) {
    47     int res = 1;
    48     while(n) {
    49         if(n & 1) res = 1LL * x * res % mod;
    50         x = 1LL * x * x % mod;
    51         n >>= 1;
    52     }
    53     return res;
    54 }
    55 
    56 int main() {
    57     int tmp = Mod_Pow(24, mod - 2);
    58     scanf("%d",&t);
    59     while(t--){
    60         scanf("%lld",&n);
    61         printf("%lld
    ",((((n+3)*(n+2)%mod)*(n+1)%mod)*(n)%mod * tmp) % mod);
    62     }
    63     return 0;
    64 }
    View Code

    I题:

    思路:

      网络流。

    代码实现如下:

      1 #include <set>
      2 #include <map>
      3 #include <deque>
      4 #include <queue>
      5 #include <stack>
      6 #include <cmath>
      7 #include <ctime>
      8 #include <bitset>
      9 #include <cstdio>
     10 #include <string>
     11 #include <vector>
     12 #include <cstdlib>
     13 #include <cstring>
     14 #include <iostream>
     15 #include <algorithm>
     16 using namespace std;
     17 
     18 typedef long long LL;
     19 typedef pair<LL, LL> pLL;
     20 typedef pair<LL, int> pli;
     21 typedef pair<int, LL> pil;;
     22 typedef pair<int, int> pii;
     23 typedef unsigned long long uLL;
     24 
     25 #define lson rt<<1
     26 #define rson rt<<1|1
     27 #define lowbit(x) x&(-x)
     28 #define  name2str(name) (#name)
     29 #define bug printf("*********
    ")
     30 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
     31 #define FIN freopen("D://code//in.txt", "r", stdin)
     32 #define IO ios::sync_with_stdio(false),cin.tie(0)
     33 
     34 const double eps = 1e-8;
     35 const int mod = 1000000007;
     36 const int maxn = 2000 + 7;
     37 const double pi = acos(-1);
     38 const int inf = 0x3f3f3f3f;
     39 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
     40 
     41 int n, m, k, num, x;
     42 
     43 struct Dinic {
     44     queue<int> q;
     45     int maxflow, tot, s, t;
     46     int head[maxn], d[maxn];
     47     void init() {
     48         tot = maxflow = 0;
     49         memset(d, 0, sizeof(d));
     50         memset(head, -1, sizeof(head));
     51     }
     52     struct edge {
     53         int v, w, next;
     54     }ed[maxn*maxn];
     55     void addedge(int u, int v, int w) {
     56         ed[tot].v = v;
     57         ed[tot].w = w;
     58         ed[tot].next = head[u];
     59         head[u] = tot++;
     60         ed[tot].v = u;
     61         ed[tot].w = 0;
     62         ed[tot].next = head[v];
     63         head[v] = tot++;
     64     }
     65     bool bfs() {
     66         memset(d, 0, sizeof(d));
     67         d[s] = 1;
     68         while(!q.empty()) q.pop();
     69         q.push(s);
     70         while(!q.empty()) {
     71             int x = q.front();
     72             q.pop();
     73             for(int i = head[x]; ~i; i = ed[i].next) {
     74                 if(ed[i].w && !d[ed[i].v]) {
     75                     d[ed[i].v] = d[x] + 1;
     76                     q.push(ed[i].v);
     77                     if(ed[i].v == t) return 1;
     78                 }
     79             }
     80         }
     81         return 0;
     82     }
     83     int dinic(int x, int flow) {
     84         if(x == t) return flow;
     85         int res = flow, k;
     86         for(int i = head[x]; ~i && res; i = ed[i].next) {
     87             int v = ed[i].v;
     88             if(ed[i].w && d[v] == d[x] + 1) {
     89                 k = dinic(v, min(res, ed[i].w));
     90                 if(!k) d[v] = 0;
     91                 ed[i].w -= k;
     92                 ed[i^1].w += k;
     93                 res -= k;
     94             }
     95         }
     96         return flow - res;
     97     }
     98     int work() {
     99         int flow = 0;
    100         while(bfs()) {
    101             while(flow = dinic(s, inf)) maxflow += flow;
    102         }
    103         return maxflow;
    104     }
    105 }f;
    106 
    107 
    108 int main() {
    109 #ifndef ONLINE_JUDGE
    110     FIN;
    111 #endif
    112     scanf("%d%d%d", &n, &m, &k);
    113     f.init();
    114     f.s = 0, f.t = 2 * n + m + 2;
    115     f.addedge(0, 1, k);
    116     for(int i = 1; i <= n; i++) {
    117         f.addedge(0, i + 1, 1);
    118         f.addedge(1, i + n + 1, 1);
    119         scanf("%d", &num);
    120         for(int j = 1; j <= num; j++) {
    121             scanf("%d", &x);
    122             f.addedge(i + 1, 2 * n + 1 + x, 1);
    123             f.addedge(i + n + 1, 2 * n + 1 + x, 1);
    124         }
    125     }
    126     for(int i = 1; i <= m; i++) {
    127         f.addedge(i + 2 * n + 1, f.t, 1);
    128     }
    129     printf("%d
    ", f.work());
    130     return 0;
    131 }
    View Code

    J题:

    思路:

      预处理出每个数的素因子,然后记录每个素因子出现的位置,对于每个素因子的贡献为(v[i][j] - v[i][j-1])*(n - v[i][j] + 1)。

    代码实现如下:

     1 #include <set>
     2 #include <map>
     3 #include <deque>
     4 #include <queue>
     5 #include <stack>
     6 #include <cmath>
     7 #include <ctime>
     8 #include <bitset>
     9 #include <cstdio>
    10 #include <string>
    11 #include <vector>
    12 #include <cstdlib>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 using namespace std;
    17 
    18 typedef long long LL;
    19 typedef pair<LL, LL> pLL;
    20 typedef pair<LL, int> pli;
    21 typedef pair<int, LL> pil;;
    22 typedef pair<int, int> pii;
    23 typedef unsigned long long uLL;
    24 
    25 #define lson rt<<1
    26 #define rson rt<<1|1
    27 #define lowbit(x) x&(-x)
    28 #define  name2str(name) (#name)
    29 #define bug printf("*********
    ")
    30 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    31 #define FIN freopen("D://code//in.txt", "r", stdin)
    32 #define IO ios::sync_with_stdio(false),cin.tie(0)
    33 
    34 const double eps = 1e-8;
    35 const int mod = 1000000007;
    36 const int maxn = 1e6 + 7;
    37 const int mx = 8e4 + 7;
    38 const double pi = acos(-1);
    39 const int inf = 0x3f3f3f3f;
    40 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
    41 
    42 int n;
    43 int a[maxn], p[maxn], vis[maxn];
    44 vector<int> ans[maxn], v[maxn], st;
    45 
    46 void init() {
    47     for(int i = 2; i < maxn; i++) p[i] = 1;
    48     for(int i = 2; i < maxn; i++) {
    49         if(p[i]) {
    50             ans[i].push_back(i);
    51             for(int j = 2*i; j < maxn; j += i) {
    52                 ans[j].push_back(i);
    53                 p[j] = 0;
    54             }
    55         }
    56     }
    57 }
    58 
    59 int main() {
    60     init();
    61     scanf("%d", &n);
    62     for(int i = 1; i <= n; i++) {
    63         scanf("%d", &a[i]);
    64         int x = ans[a[i]].size();
    65         for(int j = 0; j < x; j++) {
    66             st.push_back(ans[a[i]][j]);
    67         }
    68     }
    69     LL sum = 0;
    70     sort(st.begin(), st.end());
    71     st.erase(unique(st.begin(), st.end()), st.end());
    72     int sz = st.size();
    73     for(int i = 0; i < sz; i++) {
    74         vis[st[i]] = i;
    75     }
    76     for(int i = 1; i <= n; i++) {
    77         int x = ans[a[i]].size();
    78         for(int j = 0; j < x; j++) {
    79             v[vis[ans[a[i]][j]]].push_back(i);
    80         }
    81     }
    82     for(int i = 0; i < sz; i++) {
    83         int pp = v[i].size();
    84         for(int j = 0; j < pp; j++) {
    85             if(j == 0) {
    86                 sum += 1LL * v[i][j] * (n - v[i][j] + 1);
    87             } else {
    88                 sum += 1LL * (v[i][j] - v[i][j-1]) * (n - v[i][j] + 1);
    89             }
    90         }
    91     }
    92     printf("%lld
    ", sum);
    93     return 0;
    94 }
    View Code

     K题:

    思路:

      逗你玩题,随机长度为5e4的序列即可。

    代码实现如下:

     1 #include <set>
     2 #include <map>
     3 #include <deque>
     4 #include <queue>
     5 #include <stack>
     6 #include <cmath>
     7 #include <ctime>
     8 #include <bitset>
     9 #include <cstdio>
    10 #include <string>
    11 #include <vector>
    12 #include <cstdlib>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 using namespace std;
    17 
    18 typedef long long LL;
    19 typedef pair<LL, LL> pLL;
    20 typedef pair<LL, int> pli;
    21 typedef pair<int, LL> pil;;
    22 typedef pair<int, int> pii;
    23 typedef unsigned long long uLL;
    24 
    25 #define lson rt<<1
    26 #define rson rt<<1|1
    27 #define lowbit(x) x&(-x)
    28 #define  name2str(name) (#name)
    29 #define bug printf("*********
    ")
    30 #define debug(x) cout<<#x"=["<<x<<"]" <<endl
    31 #define FIN freopen("D://code//in.txt", "r", stdin)
    32 #define IO ios::sync_with_stdio(false),cin.tie(0)
    33 
    34 const double eps = 1e-8;
    35 const int mod = 1000000007;
    36 const int maxn = 1e5 + 7;
    37 const double pi = acos(-1);
    38 const int inf = 0x3f3f3f3f;
    39 const LL INF = 0x3f3f3f3f3f3f3f3fLL;
    40 
    41 int n, m;
    42 int a[25][25];
    43 char s[] = {'L', 'U', 'R', 'D'};
    44 
    45 int main() {
    46     srand(time(0));
    47     scanf("%d%d", &n, &m);
    48     for(int i = 1; i <= n; i++) {
    49         for(int j = 1; j <= m; j++) {
    50             scanf("%1d", &a[i][j]);
    51         }
    52     }
    53     int x;
    54     for(int i = 1; i <= 50000; i++) {
    55         x = rand() % 4;
    56         printf("%c", s[x]);
    57     }
    58     printf("
    ");
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    用于聚类的信用卡数据
    微信支付 参考
    小程序中 自定义组件的使用
    小程序页面跳转传参
    小程序人脸核身
    ant desgin pro 的项目中 封装的 socket.js
    vscode红色波浪线
    ant desgin pro 的项目中 请求之封装
    小程序的请求 方式封装
    浏览器网页链接打开本地exe客户端程序 及 无法导入,指定文件不是注册脚本.您的注册表编辑器只能导入2进位注册文件
  • 原文地址:https://www.cnblogs.com/Dillonh/p/9978140.html
Copyright © 2011-2022 走看看