码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PTA 甲级 1016 Phone Bills


    题目链接

    思路:结构体存储用户name,话费记录,其中话费记录采用pair记录每一条记录。然后用户之间按照name排序,用户的每条记录按照time从小到大排序。

    1.首先找到第一条on-line,然后从该条on-line向后推远至连续的on-line的最后一个on-line,那么下一条就是off-line(如果有),这on-line和off-line就是配对的两条,计算费用即可。

    2.数值计算采用零点到当前的累计和作差。

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #define MAXN 1010
    7. using namespace std;
    8. int price[25];
    9. struct Peo{
    10. string name;
    11. vector> record;
    12. };
    13. struct Peo p[MAXN];
    14. mapint> name_id;
    15. bool cmp(Peo a,Peo b){
    16. return a.name
    17. }
    18. bool cmp2(pair a,pair b){
    19. return a.first
    20. }
    21. double sumFromZero(string t){
    22. int day=stoi(t.substr(3,2)),hour=stoi(t.substr(6,2)),minute=stoi(t.substr(9,2));
    23. double sum=day*price[24]*60;
    24. for(int i=0;i60;
    25. sum+=price[hour]*minute;
    26. return sum/100;
    27. }
    28. int getMinute(string t){
    29. int day=stoi(t.substr(3,2)),hour=stoi(t.substr(6,2)),minute=stoi(t.substr(9,2));
    30. return day*24*60+hour*60+minute;
    31. }
    32. int main(){
    33. for(int i=0;i<24;i++){
    34. cin>>price[i];
    35. price[24]+=price[i];
    36. }
    37. int n;
    38. cin>>n;
    39. int idx=0;
    40. for(int i=0;i
    41. string name,t,kind;
    42. int a;
    43. cin>>name>>t>>kind;
    44. if(name_id.count(name)>0){
    45. a=name_id[name];
    46. }
    47. else{
    48. name_id[name]=idx++;
    49. a=idx-1;
    50. }
    51. p[a].name=name;
    52. p[a].record.push_back(make_pair(t,kind));
    53. }
    54. //处理
    55. sort(p,p+idx,cmp);
    56. for(int i=0;i
    57. //对具体的每个用户处理
    58. sort(p[i].record.begin(),p[i].record.end(),cmp2);
    59. int flag=1,size=p[i].record.size();//flag记录是否输出了一个
    60. double sum=0;
    61. for(int j=0;j
    62. int on_i=-1;
    63. while(j"on-line") j++;
    64. if(j==size)break;
    65. while(j"on-line") j++;
    66. on_i=j-1;//j-1 on-line;j off-line
    67. if(j==size)break;
    68. double temp=0;string on=p[i].record[j-1].first,off=p[i].record[j].first;
    69. temp=sumFromZero(off)-sumFromZero(on);
    70. sum+=temp;
    71. if(flag){
    72. flag=0;
    73. cout<" "<0].first.substr(0,2)<
    74. }
    75. cout<-1].first.substr(3,8)<<" "<substr(3,8)<<" ";
    76. int minute=getMinute(off)-getMinute(on);
    77. cout<" ";printf("$%.2lf\n",temp);
    78. }
    79. if(!flag) printf("Total amount: $%.2lf\n",sum);
    80. }
    81. return 0;
    82. }

  • 相关阅读:
    2.17 haas506 2.0开发教程-system(仅支持2.2以上版本)
    直击第一届中国测绘地理信息大会,华测导航强势出圈!
    python入门篇08- 函数进阶-参数传递
    【数据库】分组数据 GROUP BY、HAVING
    php长字符串大文本如何处理 —— <<<定界符的使用
    Node.js 零基础入门 Node.js 零基础入门第三天 3.3 Express 中间件
    Android studio中有报错,如何解决?
    java架构知识-数据库(学习笔记)
    【TestNG学习(三)套件测试】
    题解 Codeforces Round #811 (Div. 3)
  • 原文地址:https://blog.csdn.net/weixin_52030057/article/details/132907307
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    云原生 CI/CD 平台架构设计
    模板方法模式实战:重构Agent工具审批,告别重复代码
    [MAF的Agent管道详解-03]连接LLM的IChatClient对象
    《HelloGitHub》第 122 期
    AI Agent 到底是做什么的?优势在哪里?
    完整学习LLM(六):上下文窗口是什么,为什么模型会忘东西
    和AI一起搞事情#6. 如何实现AI生图文字可编辑?
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号