在魔界战记中有一个设定叫做转生,当一个人物转生时,会保留之前的技能,但是技能等级需要乘以一个系数 k ,如果技能等级小于100,将会在转生之后失去该技能。

转生之后,会学到一些新技能。这些新技能附加的等级为0。

现在给你 n 个已有的技能,m个新技能和系数k,请按字典序输出转生之后的技能总数、技能名称和等级。

  这题最纠结蛋疼的地方就是不能使用强制类型转换和系统函数floor()。

  从样例输出来看,技能等级是向下取整的(350*0.75=262.5)。但是如果使用强制类型转换或者是用floor()函数的话,会有一组奇葩的数据卡住(floor(8700*0.94) = (int)(8700*0.94) = 8177,我也不知道谁出的这么操蛋好的数据,反正就是这里卡死了。这里的结果应该为8178)。

  然后其他的很简单了,将已有技能读取之后,等级小于100的直接去掉,转换之后小于100的变成0。然后开始读取新技能,读取一个遍历一次看是否存在这个技能(最多才20 * 20,不超时),存在继续,不存在就加入这个新技能。最后按照字典序排序输出就Ok了。

附AC代码,手残勿喷:

   1: #include <cstdio> 

   2: #include <cstdlib>

   3: #include <cstring>

   4: #include <cmath>

   5: #include <algorithm>

   6: #include <iostream>

   7: #include <string>

   8: #include <map>

   9: using namespace std;

  10:  

  11: class Skill

  12: {

  13:     public:

  14:         int lv;

  15:         string name;

  16:         Skill()

  17:         {

  18:             name.clear();

  19:             lv = 0;

  20:         }

  21:         bool operator < (const Skill &tmp) const

  22:         {

  23:             return name < tmp.name;

  24:         }

  25: }skill[59];

  26:  

  27: int Floor(double a)

  28: {

  29:     int res = a;

  30:     if (a - res >= 0.999999)

  31:         return (res + 1);

  32:     return res;

  33: }

  34:  

  35: string tmp;

  36: int tlv;

  37:  

  38: int main()

  39: {

  40:     int n, m, all = 0;

  41:     double k;

  42:     while(cin >> n >> m >> k)

  43:     {

  44:         all = 0;

  45:         for (int i = 1; i <= n; i++)

  46:         {

  47:             bool flag = 1;

  48:             cin >> tmp >> tlv;

  49:             for (int j = 1; j <= all && flag; j++) 

  50:                 if (skill[j].name == tmp) 

  51:                     flag = 0;

  52:             if (flag)

  53:             {

  54:                 if (Floor(tlv * k) >= 100)

  55:                 {

  56:                     all += 1;

  57:                     skill[all].name = tmp;

  58:                     skill[all].lv = Floor(tlv * k);

  59:                 }

  60:             }

  61:         }

  62:         for (int i = 1; i <= m; i++)

  63:         {

  64:             bool flag = 1;

  65:             cin >> tmp;

  66:             for (int j = 1; j <= all && flag; j++)

  67:                 if (skill[j].name == tmp)

  68:                     flag = 0;

  69:             if (flag)

  70:             {

  71:                 all += 1;

  72:                 skill[all].name = tmp;

  73:                 skill[all].lv = 0;

  74:             }

  75:         }

  76:         cout << all << endl;

  77:         sort(skill+1, skill+all+1);

  78:         for (int i = 1; i <= all; i++)

  79:         {

  80:             cout << skill[i].name << " " << skill[i].lv << endl;

  81:             skill[i].name.clear(); 

  82:             skill[i].lv = 0;

  83:         }

  84:     }

  85:     return 0;

  86: }

Codeforces Beta Round #81 A Transmigration的更多相关文章

  1. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  2. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

  3. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  4. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  5. Codeforces Beta Round #79 (Div. 2 Only)

    Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...

  6. Codeforces Beta Round #77 (Div. 2 Only)

    Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...

  7. Codeforces Beta Round #76 (Div. 2 Only)

    Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...

  8. Codeforces Beta Round #75 (Div. 2 Only)

    Codeforces Beta Round #75 (Div. 2 Only) http://codeforces.com/contest/92 A #include<iostream> ...

  9. Codeforces Beta Round #74 (Div. 2 Only)

    Codeforces Beta Round #74 (Div. 2 Only) http://codeforces.com/contest/90 A #include<iostream> ...

随机推荐

  1. Codeforces 912E - Prime Gift

    912E - Prime Gift 思路: 折半枚举+二分check 将素数分成两个集合(最好按奇偶位置来,保证两集合个数相近),这样每个集合枚举出来的小于1e18的积个数小于1e6. 然后二分答案, ...

  2. es5,es6,typescript,nodejs

    es5新特性 讲到js必讲的几个概念,作用域,闭包,IIFE自执行函数 es5主要是对Object,Array,Function做了扩展,还有josn工具 es6新特性 增加了新的数据类型 WeakM ...

  3. Python mysql-表中数据的大量插入

    2017-09-06 23:28:26 import pymysql db = pymysql.connect("localhost","root"," ...

  4. Android之封装好的异步网络请求框架

    1.简介  Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使 ...

  5. Java数组常用API

    java.util.Arrays Arrays.asList() 数组转换成列表 String[] strArray = {"zhang", "xue", &q ...

  6. JavaScript运算符:递增递减运算符前置和后置的区别

    从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(n ...

  7. photoshop cc 智能切图

    这节分享一个photoshop cc 开始有的自动生成图标的方法 psd练习文件 http://pan.baidu.com/s/1pL2dwL1 1 工具:我这里用的是photoshop cc 201 ...

  8. PHP:第三章——PHP中返回引用的函数

    <?php header("Content-Type:text/html;charset=utf-8"); $i=1; function &F(){ global $ ...

  9. learning uboot test command

    uboot commad test test - minimal test like /bin/sh so we can use test command to some judge for exam ...

  10. pythoon 学习资源

    https://github.com/zhu327/forum http://www.ziqiangxuetang.com/django/django-tutorial.html