• HUST1341A Simple Task【模拟】


    大意:

    有n只bird  每只bird初始有s个食物,每只每天吃k个食物

    然后告诉你m条记录 代表某个bird某天找到x个食物

    分析:

    模拟  就是有点恶心,细心点就好了

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<climits>
     4 #include<cmath>
     5 #include<cstdlib>
     6 #include<iostream>
     7 #include<algorithm>
     8 #include<string>
     9 #include<queue>
    10 #include<map>
    11 #include<vector>
    12 #include<set>
    13 #include<sstream>
    14 
    15 using namespace std;
    16 
    17 const int maxn = 100005;
    18 struct B {
    19     string name;
    20     int x, y;
    21 }b[maxn];
    22 bool cmp(B a, B b) {
    23     if(a.name != b.name) {
    24         return a.name < b.name;
    25     }
    26     if(a.x != b.x) return a.x < b.x;
    27 }
    28 
    29 int main()
    30 {
    31     int t, n, s, k;
    32 //    freopen("a.txt","r",stdin);
    33     scanf("%d",&t);
    34     for(int kase = 1; kase <= t; kase++) {
    35         scanf("%d",&n);
    36         scanf("%d %d",&s, &k);
    37         for(int i = 0; i < n; i++) {
    38             cin >> b[i].name >> b[i].x >> b[i].y;
    39         }
    40         sort(b, b + n, cmp);
    41 
    42 //        for(int i = 0; i < n; i++) {
    43 //            cout << b[i].name << " " << b[i].x << " " << b[i].y << endl;
    44 //        }puts("");
    45 
    46         printf("Case #%d:
    ", kase);
    47         bool flag = true;
    48         string na = b[0].name;
    49         int zong = s;
    50         int shang = 1;
    51         for(int i = 0; i <= n; i++){
    52             if(b[i].name != na || i == n) {
    53                 if(flag == false) {
    54                     cout << b[i - 1].name <<  " died." << endl;
    55                 } else {
    56                     cout << b[i - 1].name <<  " " << zong << endl;
    57                 }
    58                 flag = true;
    59                 zong = s;
    60                 shang = 1;
    61                 zong = zong - (b[i].x - shang) * k;
    62                 if(zong < 0) {
    63                     flag = false;
    64                 } else {
    65                     zong += b[i].y;
    66                     zong -= k;
    67                     if(zong < 0) {
    68                         flag = false;
    69                     }
    70                 }
    71                 shang = b[i].x + 1;
    72                 na = b[i].name;
    73                 if(zong < 0) {
    74                     flag = false;
    75                 }
    76             } else {
    77                 if(i > 0 && b[i].name == b[i - 1].name && b[i].x == b[i - 1].x) {
    78                     zong += b[i].y;
    79                 }
    80                 zong = zong - (b[i].x - shang) * k;
    81                 if(zong < 0) {
    82                     flag = false;
    83                 } else {
    84                     zong += b[i].y;
    85                     zong -= k;
    86                     if(zong < 0) {
    87                         flag = false;
    88                     }
    89                 }
    90                 shang = b[i].x + 1;
    91             }
    92         }puts("");
    93     }
    94     return 0;
    95 }
    View Code
  • 相关阅读:
    LinUI学习1 框架的引入
    LinUI学习2 config配置文件配置和使用
    LinUI学习3 Http请求封装与使用
    【网络编程】学习笔记02 套接字类型与协议设置
    【系统编程】 守护进程
    【网络编程】学习笔记03 地址族与数据序列
    【网络编程】学习笔记01 套接字与文件操作
    【系统编程】 进程间通信方式
    【网络编程】学习笔记06 I/O多路复用之epoll
    【网络编程】学习笔记04 server端和client代码
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/4774026.html
Copyright © 2020-2023  润新知