zoukankan      html  css  js  c++  java
  • hdu 5611 Baby Ming and phone number(模拟)

    Problem Description
    Baby Ming collected lots of cell phone numbers, and he wants to sell them for money.
    
    He thinks normal number can be sold for b yuan, while number with following features can be sold for a yuan.
    
    1.The last five numbers are the same. (such as 123-4567-7777)
    
    2.The last five numbers are successive increasing or decreasing, and the diffidence between two adjacent digits is 1. (such as 188-0002-3456)
    
    3.The last eight numbers are a date number, the date of which is between Jar 1st, 1980 and Dec 31th, 2016. (such as 188-1888-0809,means August ninth,1888)
    
    Baby Ming wants to know how much he can earn if he sells all the numbers.
     
    Input
    In the first line contains a single positive integer T, indicating number of test case.
    
    In the second line there is a positive integer n, which means how many numbers Baby Ming has.(no two same phone number)
    
    In the third line there are 2 positive integers a,b, which means two kinds of phone number can sell a yuan and b yuan.
    
    In the next n lines there are n cell phone numbers.(|phone number|==11, the first number can’t be 0)
    
    1≤T≤30,b<1000,0<a,n≤100,000
     
    Output
    How much Baby Nero can earn.
    Sample Input
    1
    5
    100000 1000
    12319990212
    11111111111
    22222223456
    10022221111
    32165491212
    Sample Output
    302000
    Source
     

    判断日期的时候比较麻烦,也懒得去优化了,还有会爆int,这个值得注意

      1 #pragma comment(linker, "/STACK:1024000000,1024000000")
      2 #include<iostream>
      3 #include<cstdio>
      4 #include<cstring>
      5 #include<cmath>
      6 #include<math.h>
      7 #include<algorithm>
      8 #include<queue>
      9 #include<set>
     10 #include<bitset>
     11 #include<map>
     12 #include<vector>
     13 #include<stdlib.h>
     14 #include <stack>
     15 using namespace std;
     16 #define PI acos(-1.0)
     17 #define max(a,b) (a) > (b) ? (a) : (b)
     18 #define min(a,b) (a) < (b) ? (a) : (b)
     19 #define ll long long
     20 #define eps 1e-10
     21 #define MOD 1000000007
     22 #define N 100006
     23 #define inf 1e12
     24 ll n,a,b;
     25 char s[16];
     26 bool judge(char *s){
     27    ll a=s[6]-'0';
     28    ll b=s[7]-'0';
     29    ll c=s[8]-'0';
     30    ll d=s[9]-'0';
     31    ll e=s[10]-'0';
     32    if( (a==b+1) && (b==c+1) && (c==d+1) && (d==e+1) ) return true;
     33    if( (a==b-1) && (b==c-1) && (c==d-1) && (d==e-1) ) return true;
     34    return false;
     35 }
     36 bool riqi(ll month,ll day){
     37          if(month == 3){
     38             if(day<1 || day>31) return false;
     39             return true;
     40          }else if(month==4){
     41             if(day<1 || day>30) return false;
     42             return true;
     43          }else if(month==5){
     44             if(day<1 || day>31) return false;
     45             return true;
     46          }else if(month==6){
     47             if(day<1 || day>30) return false;
     48             return true;
     49          }else if(month==7){
     50             if(day<1 || day>31) return false;
     51             return true;
     52          }else if(month==8){
     53             if(day<1 || day>31) return false;
     54             return true;
     55          }else if(month==9){
     56             if(day<1 || day>30) return false;
     57             return true;
     58          }else if(month==10){
     59             if(day<1 || day>31) return false;
     60             return true;
     61          }else if(month==11){
     62             if(day<1 || day>30) return false;
     63             return true;
     64          }else if(month==12){
     65             if(day<1 || day>31) return false;
     66             return true;
     67          }
     68 }
     69 bool riqi2(ll month,ll day){
     70    if(month<1 || month>12) return false;
     71    if(month==1){
     72       if(day<1 || day>31) return false;
     73       return true;
     74    }else if(month==2){
     75       if(day<1 || day>29) return false;
     76       return true;
     77    }else if(month==3){
     78       if(day<1 || day>31) return false;
     79       return true;
     80    }else if(month==4){
     81       if(day<1 || day>30) return false;
     82       return true;
     83    }else if(month==5){
     84       if(day<1 || day>31) return false;
     85       return true;
     86    }else if(month==6){
     87       if(day<1 || day>30) return false;
     88       return true;
     89    }else if(month==7){
     90       if(day<1 || day>31) return false;
     91       return true;
     92    }else if(month==8){
     93       if(day<1 || day>31) return false;
     94       return true;
     95    }else if(month==9){
     96       if(day<1 || day>30) return false;
     97       return true;
     98    }else if(month==10){
     99       if(day<1 || day>31) return false;
    100       return true;
    101    }else if(month==11){
    102       if(day<1 || day>30) return false;
    103       return true;
    104    }else if(month==12){
    105       if(day<1 || day>31) return false;
    106       return true;
    107    }
    108 }
    109 bool riqi3(ll month,ll day){
    110    if(month<1 || month>12) return false;
    111    if(month==1){
    112       if(day<1 || day>31) return false;
    113       return true;
    114    }else if(month==2){
    115       if(day<1 || day>28) return false;
    116       return true;
    117    }else if(month==3){
    118       if(day<1 || day>31) return false;
    119       return true;
    120    }else if(month==4){
    121       if(day<1 || day>30) return false;
    122       return true;
    123    }else if(month==5){
    124       if(day<1 || day>31) return false;
    125       return true;
    126    }else if(month==6){
    127       if(day<1 || day>30) return false;
    128       return true;
    129    }else if(month==7){
    130       if(day<1 || day>31) return false;
    131       return true;
    132    }else if(month==8){
    133       if(day<1 || day>31) return false;
    134       return true;
    135    }else if(month==9){
    136       if(day<1 || day>30) return false;
    137       return true;
    138    }else if(month==10){
    139       if(day<1 || day>31) return false;
    140       return true;
    141    }else if(month==11){
    142       if(day<1 || day>30) return false;
    143       return true;
    144    }else if(month==12){
    145       if(day<1 || day>31) return false;
    146       return true;
    147    }
    148 }
    149 
    150 bool cal(char *s){
    151    ll year = 0 , month = 0 , day = 0;
    152    year = (s[3]-'0')*1000 + (s[4]-'0')*100 + (s[5]-'0')*10 +s[6]-'0';
    153    month = (s[7]-'0')*10 + s[8]-'0';
    154    day = (s[9]-'0') *10 + s[10]-'0';
    155    if(year == 1980){
    156       if(month>12 || month<1) return false;
    157       if(month==1){
    158          if(day<1 || day>31) return false;
    159          return true;
    160       }else if(month == 2){
    161          if(day > 29 || day < 1) return false;
    162          return true;
    163       }else{
    164          if(riqi(month,day)) return true;
    165          return false;
    166       }
    167    }else if(year == 2016){
    168       if(riqi2(month,day)) return true;
    169       return false;
    170    }else if(year>1980 && year<2016){
    171       if((year%4==0&&year%100!=0)||(year%400==0)){
    172          if(riqi2(month,day)) return true;
    173          return false;
    174       }else{
    175          if(riqi3(month,day)) return true;
    176          return false;
    177       }
    178    }else{
    179       return false;
    180    }
    181 }
    182 
    183 int main()
    184 {
    185    ll t;
    186    scanf("%I64d",&t);
    187    while(t--){
    188       scanf("%I64d",&n);
    189       scanf("%I64d%I64d",&a,&b);
    190       ll ans=0;
    191       for(ll i=0;i<n;i++){
    192          scanf("%s",s);
    193          if((s[6]==s[7]) && (s[6]==s[8]) && (s[6]==s[9]) && s[6]==s[10] ){
    194             ans+=a;
    195          }else if(judge(s)){
    196             ans+=a;
    197          }else if(cal(s)){
    198             ans+=a;
    199          }else{
    200             ans+=b;
    201          }
    202       }
    203       printf("%I64d
    ",ans);
    204    }
    205     return 0;
    206 }
    View Code
  • 相关阅读:
    java.sql.SQLException: Lock wait timeout exceeded --转
    一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%
    分布式系统的Raft算法——在失联阶段这个老Leader的任何更新都不能算commit,都回滚,接受新的Leader的新的更新 意味着还是可能丢数据!!!
    NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!
    wiredtiger存储引擎介绍——本质就是LSM,当然里面也可以包含btree和列存储
    Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统
    ES doc_values的来源,field data——就是doc->terms的正向索引啊,不过它是在查询阶段通过读取倒排索引loading segments放在内存而得到的?
    ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间
    列存储压缩技巧,除公共除数或者同时减去最小数,字符串压缩的话,直接去重后用数字ID压缩
    ES doc_values介绍——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间(列存储压缩技巧,除公共除数或者同时减去最小数,字符串压缩的话,直接去重后用数字ID压缩)
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5231348.html
Copyright © 2011-2022 走看看