zoukankan      html  css  js  c++  java
  • [HDOJ]BestCoder Round #61

    [HDOJ5522]Numbers

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5522

    数据范围n<=100,暴力枚举即可。担心卡常数做了一下常数的优化。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 const int maxn = 111;
    23 int a[maxn];
    24 int n;
    25 
    26 inline bool scan_d(int &num) {
    27         char in;bool IsN=false;
    28         in=getchar();
    29         if(in==EOF) return false;
    30         while(in!='-'&&(in<'0'||in>'9')) in=getchar();
    31         if(in=='-'){ IsN=true;num=0; }
    32         else num=in-'0';
    33         while(in=getchar(),in>='0'&&in<='9') {
    34             num*=10,num+=in-'0';
    35         }
    36         if(IsN) num=-num;
    37         return true;
    38 }
    39 
    40 int main() {
    41     while(scan_d(n)) {
    42         for(int i = 0; i < n; i++) scan_d(a[i]);
    43         sort(a, a+n);
    44         int flag = 0;
    45         for(int i = 0; i < n; i++) {
    46             if(flag) break;
    47             for(int j = i; j < n; j++) {
    48                 if(flag) break;
    49                 for(int k = 0; k < n; k++) {
    50                     if(k == i || k == j || i == j) continue;
    51                     if(a[j] - a[i] == a[k])    {
    52                         flag = 1;
    53                         break;
    54                     }
    55                 }
    56             }
    57         }
    58         flag ? printf("YES
    ") : printf("NO
    ");;
    59     }
    60 }

    [HDOJ5523]Game

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5523

    可以想到最坏的情况就是起点和终点在非边界的两侧且不相邻,那么这样会把宝石分为三段,这样必须使用两次超能力。如果起点终点相邻,那么只需要使用一次超能力。如果起点终点分别在两端,那么不需要使用超能力。如果起点终点位置一样,那么默认起点是被遍历到了的,再也无法走到起(终)点,此时无解(前提是n>1)。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 inline bool scan_d(int &num) {
    23         char in;bool IsN=false;
    24         in=getchar();
    25         if(in==EOF) return false;
    26         while(in!='-'&&(in<'0'||in>'9')) in=getchar();
    27         if(in=='-'){ IsN=true;num=0; }
    28         else num=in-'0';
    29         while(in=getchar(),in>='0'&&in<='9') {
    30             num*=10,num+=in-'0';
    31         }
    32         if(IsN) num=-num;
    33         return true;
    34 }
    35 
    36 int n, s, t;
    37 
    38 int main() {
    39     // freopen("in", "r", stdin);
    40     while(scan_d(n) && scan_d(s) && scan_d(t)) {
    41         if(s == t && n != 1) printf("-1
    ");
    42         else if((s == 1 && t == n) || (s == n && t == 1)) printf("0
    ");
    43         else if(s == 1 || s == n || abs(s - t) == 1) printf("1
    ");
    44         else printf("2
    ");
    45     }
    46 }

    [HDOJ5524]Subtree

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5524

    问一棵完全二叉树有多少种子树包含的节点数量不同。

    首先可以肯定的是,一棵完全二叉树有可能是满二叉树,满二叉树的子树依然是满二叉树。但是完全二叉树的子树有一棵是满二叉树,另一棵是完全二叉树。根据给定节点数量很轻易可以知道左右子树的形态,然后递归求解。n的数量太大要用long long。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 typedef long long ll;
    23 ll n;
    24 set<ll> ans;
    25 
    26 void dfs(ll x) {
    27     if(x == 0 || ans.count(x) > 0) {
    28         return;
    29     }
    30     ans.insert(x);
    31     if(--x % 2 == 0) {
    32         dfs(x / 2);
    33     }
    34     else {
    35         dfs(x / 2);
    36         dfs(x / 2 + 1);
    37     }
    38 }
    39 
    40 int main() {
    41     // freopen("in", "r", stdin);
    42     while(~scanf("%I64d", &n)) {
    43         ans.clear();
    44         dfs(n);
    45         printf("%d
    ", ans.size());
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    练习2
    练习1
    如何生成添加前缀的顺序DIV
    mysql5.7 版本中 timestamp 不能为零日期 以及sql_mode合理设置
    MIME类型大全
    Intel Xeon E5-2620 v4参数
    webgl开发中添加IIS的mime类型
    jquery.validate动态更改校验规则
    mvc4
    asp.net防SQL/JS注入攻击:过滤标记
  • 原文地址:https://www.cnblogs.com/kirai/p/4926384.html
Copyright © 2011-2022 走看看