zoukankan      html  css  js  c++  java
  • PAT A 1016. Phone Bills (25)【模拟】

    题目:https://www.patest.cn/contests/pat-a-practise/1016

    思路:用结构体存储,按照名字和日期排序,然后先判断是否有效,然后输出,时间加减直接暴力即可

     1 #include<set>  
     2 #include<map>  
     3 #include<queue>  
     4 #include<algorithm>  
     5 #include<iostream>
     6 #include<cstdio>
     7 #include<vector>
     8 #include<string>  
     9 #include<string.h>  
    10 using namespace std;
    11 typedef long long LL;
    12 const int INF = 0x7FFFFFFF;
    13 const int maxn = 1e3 + 10;
    14 double f[maxn];
    15 int n, x;
    16 char ss[maxn];
    17 
    18 struct point
    19 {
    20     string s;
    21     int a, b, c, d, f;
    22     void read()
    23     {
    24         cin >> s;
    25         scanf("%d:%d:%d:%d", &a, &b, &c, &d);
    26         scanf("%s", ss);
    27         if (ss[1] == 'n')f = 0; else f = 1;
    28     }
    29     bool operator<(const point &x)const
    30     {
    31         return s == x.s ? a == x.a ? b == x.b ? c == x.c ? d < x.d : c < x.c : b < x.b : a < x.a : s < x.s;
    32     }
    33     bool operator==(const point &x)const
    34     {
    35         return b == x.b&&c == x.c&&d == x.d;
    36     }
    37 }a[maxn];
    38 
    39 double putout(point x, point y)
    40 {
    41     double ans = 0;
    42     int cnt = 0;
    43     point u = x;
    44     while (true)
    45     {
    46         ans += f[u.c]; u.d += 1;
    47         u.c += u.d / 60;    u.d %= 60;
    48         u.b += u.c / 24;    u.c %= 24;
    49         cnt++;  if (u == y) break;
    50     }
    51     printf("%02d:%02d:%02d %02d:%02d:%02d %d $%.2lf
    ", x.b, x.c, x.d, y.b, y.c, y.d, cnt, ans);
    52     return ans;
    53 }
    54 
    55 int main()
    56 {
    57     for (int i = 0; i < 24; i++)scanf("%d", &x), f[i] = x / 100.0;
    58     scanf("%d", &n);
    59     for (int i = 0; i < n; i++)a[i].read();
    60     sort(a, a + n);
    61     for (int i = 0, j; i < n; i = j)
    62     {
    63         int flag = 0, y = a[i].f;
    64         for (j = i + 1; a[j].s == a[i].s; j++)
    65         {
    66             if (!y&&a[j].f){ flag = 1; break; }
    67             else y = a[j].f;
    68         }
    69         if (flag)
    70         {
    71             cout << a[i].s;
    72             printf(" %02d
    ", a[i].a);
    73             point x = a[i];
    74             double ans = 0;
    75             for (j = i + 1; a[j].s == a[i].s; j++)
    76             {
    77                 if (!x.f&&a[j].f)ans += putout(x, a[j]);
    78                 x = a[j];
    79             }
    80             printf("Total amount: $%.2lf
    ", ans);
    81         }
    82     }
    83     return 0;
    84 }
  • 相关阅读:
    struts2 标签的使用之二 s:iterator
    struts2 标签的使用之一 s:if
    java Tomcat数据库连接池
    JNDI:对java:comp/env的研究
    ***Tomcat7.0安装配置
    ***tomcat配置文件server.xml详解
    宜昌IT软件资源汇总
    tomcat安全设置
    tomcat部署javaweb项目的三种方式
    Tomcat在Linux上的安装与配置
  • 原文地址:https://www.cnblogs.com/demian/p/6079699.html
Copyright © 2011-2022 走看看