zoukankan      html  css  js  c++  java
  • hihoCoder挑战赛14

    第一次在网上参加这种比赛,也是被虐的很惨了...

    前两题竟然都有快200人过真是厉害,第一题都没做出来,第二题完全没有思路...

    http://hihocoder.com/contest/challenge14/problems

    先看第一题:

    想复杂了啊,想了半天想到了桶排,x > 1就把1到1000的位置都加一,最后统计最大的值,然后就错错错...

    然后发现没考虑浮点数,浮点数就没有下标这一说法了,然后就贵倒在地上...

    最后结束后看别人代码才发现根本不用这样,只需要每次枚举0-1000的浮点数然后符合一条就加一,每次枚举的最后取最大的值;

    然后考虑到浮点数的话,for循环1到1000就每次不加1,加0.5,虽然至今不懂这是为什么?还有输入整数的时候输了浮点数会是什么样的?

    刚刚研究了一番终于懂了,输入的c一定是整数,但是x不一定是整数,所以x > 1 和x < 2可以同时成立,所以枚举x的时候每次加0.5就是考虑到这种情况;

    而为什么是加0.5不是0.1则是因为:

    因为0.5可以被准确的存储,用0.1主要会跪在"="的判断,可以看看浮点数标准

    最后贴上别人的比较短的ac代码:

     1 #include <bits/stdc++.h>
     2 #define  RD(x)      scanf("%d", &x)
     3 #define  REP(i, n)  for (int i=0; i<int(n); ++i)
     4 #define  FOR(i, n)  for (int i=1; i<=int(n); ++i);
     5 
     6 using namespace std;
     7 
     8 #define  N   123456
     9 
    10 int c[N], kind[N];
    11 int n;
    12 
    13 int Main() {
    14 
    15     ios_base::sync_with_stdio(0);
    16 
    17        cin >> n;
    18     int mx = 1100, mn = -10;
    19 
    20     REP(i, n) {
    21         string s;
    22         cin >> s;
    23         cin >> s;
    24         cin >> c[i];
    25 
    26         if (s == "<")
    27             kind[i] = 0;
    28         else if (s == "<=")
    29             kind[i] = 1;
    30         else if (s == "=")
    31             kind[i] = 2;
    32         else if (s == ">")
    33             kind[i] = 3;
    34         else
    35             kind[i] = 4;
    36         mx = max(mx, c[i] + 10);
    37         mn = min(mn, c[i] - 10);
    38     }
    39 
    40     int ans = 0;
    41     for (double x = mn; x <= mx; x += 0.5) {
    42         int tmp = 0;
    43         REP(i, n) {
    44             if (kind[i] == 0 && x < c[i])
    45                 tmp++;
    46 
    47             if (kind[i] == 1 && x <= c[i])
    48                 tmp++;
    49 
    50             if (kind[i] == 2 && x == c[i])
    51                 tmp++;
    52 
    53             if (kind[i] == 3 && x > c[i])
    54                 tmp++;
    55 
    56             if (kind[i] == 4 && x >= c[i])
    57                 tmp++;
    58         }
    59         ans = max(ans, tmp);
    60     }
    61 
    62     cout << ans << endl;
    63 
    64     return 0;
    65 }
    66 
    67 int main() {
    68     return Main();
    69 }

    自己的写错了就不贴了...

  • 相关阅读:
    ajax获取后台数据,显示到input输入框里面
    js的比较运算符含义和示例和逻辑运算符
    Vue的 on +bind+if +for
    Vue入门例子
    Spring-AOP
    fatal: remote origin already exists git出现这个
    springmvc-文件上传下载
    springmvc-ajax
    查询Id最大的基础上+1
    bootstrap select去掉右边小三角
  • 原文地址:https://www.cnblogs.com/dominjune/p/4772198.html
Copyright © 2011-2022 走看看