• 【HDOJ】3587 NUDOTA


    字符串模拟水题。

      1 /* 3587 */
      2 #include <iostream>
      3 #include <cstdio>
      4 #include <cstring>
      5 #include <cstdlib>
      6 #include <string>
      7 #include <map>
      8 using namespace std;
      9 
     10 #define MAXN 1005
     11 
     12 typedef struct {
     13     bool f;
     14     int k;
     15     int t;
     16     int v;
     17 } hero_t;
     18 
     19 hero_t hero[MAXN*2];
     20 int nn = 0;
     21 char x[55], y[55];
     22 map<string, int> tb;
     23 map<string, int>::iterator iter;
     24 
     25 int main() {
     26     int n, m, K;
     27     int i, j, k, tmp;
     28     char cmd[3];
     29     int t;
     30     bool fb;
     31     int ck[11];
     32     
     33     #ifndef ONLINE_JUDGE
     34         freopen("data.in", "r", stdin);
     35     #endif
     36     
     37     ck[0] = ck[1] = ck[2] = 0;
     38     for (i=3; i<=10; ++i)
     39         ck[i] = ck[i-1] + 50;
     40     
     41     while (scanf("%d %d %d", &n, &m, &K) != EOF) {
     42         nn = 0;
     43         tb.clear();
     44         for (i=0; i<n; ++i) {
     45             scanf("%s", x);
     46             tb[string(x)] = nn;
     47             hero[nn].v = 603;
     48             hero[nn].k = 0;
     49             hero[nn].t = 0;
     50             hero[nn].f = true;
     51             ++nn;
     52         }
     53         for (i=0; i<m; ++i) {
     54             scanf("%s", x);
     55             tb[string(x)] = nn;
     56             hero[nn].v = 603;
     57             hero[nn].k = 0;
     58             hero[nn].t = 0;
     59             hero[nn].f = false;
     60             ++nn;
     61         }
     62         
     63         fb = true;
     64         while (K--) {
     65             scanf("%s", cmd);
     66             if (cmd[0] == 'K') {
     67                 scanf("%s %s %d", x, y, &t);
     68                 i = tb[string(x)];
     69                 j = tb[string(y)];
     70                 if (hero[i].f ^ hero[j].f) {
     71                     k = 200;
     72                     ++hero[i].k;
     73                     if (fb) {
     74                         fb = false;
     75                         k += 200;
     76                     }
     77                     if (hero[i].k > 10)
     78                         k += ck[10];
     79                     else
     80                         k += ck[hero[i].k];
     81                     hero[i].v += (t-hero[i].t) + k;
     82                     hero[i].t = t;
     83                 }
     84                 hero[j].v = hero[j].v + (t-hero[j].t) - 300;
     85                 hero[j].t = t;
     86                 hero[j].k = 0;
     87                 if (hero[j].v < 0)
     88                     hero[j].v = 0;
     89             } else {
     90                 scanf("%s %d", x, &t);
     91                 i = tb[string(x)];
     92                 hero[i].v += (t - hero[i].t);
     93                 hero[i].t = t;
     94                 printf("%d
    ", hero[i].v);
     95             }
     96         }
     97     }
     98     
     99     return 0;
    100 }
  • 相关阅读:
    select2插件用法
    MVC htmlAttributes and additionalViewData
    Log4Net 配置详解
    Windows10搭建ASP.NET MVC5 IIS局域网(外网可以访问的)服务器
    网络连接状态指示器(NCSI ,Network Connectivity Status Indicator)
    微软官方开发文档结构WPF
    旋转编码器,无限旋转的音量按钮
    Steam Dota2 安装方法以及一些设置·
    Windows资源管理器打开文件夹卡顿原因及解决办法
    字幕变集合制作工具
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4241256.html
Copyright © 2020-2023  润新知