题目链接:http://acm.ecnu.edu.cn/contest/16/problem/A/

题目:

  

A. 足球锦标赛

Time limit per test: 2.0 seconds

Time limit all tests: 2.0 seconds

Memory limit: 256 megabytes

Accept / Submit: 130 / 496

ECNU 足球锦标赛采用了最传统的计分牌来计分。每进一个球,计分员给对应的队要翻牌,使得计分板上显示的数加一。

如上图所示,计分板上的每一位都按顺序挂了 0 到 9 这 10 个牌子,所以可以表示 000 至 999。当其中一个队的得分从 010 变成 011 时,计分员只要将最后一位的最前面的牌子向后翻即可,共需翻动一块牌子;当得分从 019 变成 020 是,由于 9 后面已经没有牌子了,所以计分员要将 0 到 9 全部翻到前面,并将倒数第二位的牌子 1 翻到后面,所以共需翻动 10 块牌子。

现场的计分牌和图中所示还是存在差异的,现场的计分牌会很大,很重,所以翻每块牌子都要消耗 1 点体力。

你是计分员,现在比赛还剩下最后十分钟。现在有一个预言家告诉你在这十分钟里,双方得分共计多少;但他没有告诉你双方得分各是多少。所以你想要知道你要花费的体力值最多是多少。

Input

第一行给出数据组数 T (1≤T≤1 000)。接下来对于每组数据有两行:

第一行是两个三位数 A,B (0≤A,B≤999)(含前导 0),形如 001,013,123,表示双方现在的得分。

第二行是一个整数 K (0≤K≤min{999−A,999−B}),表示双方在最后十分钟的得分之和。

Output

对于每组数据,输出 Case x: y。其中 x 是从 1 开始的测试数据编号,y 是一个整数,表示花费体力最多是多少。

Examples

input
2
009 009
2
001 003
2
output
Case 1: 20
Case 2: 2

Note

样例 1 解释:有三种情况。

  • 甲方(前者)得 2 分,乙方(后者)得 0 分;甲方要翻 10+1=11 次。
  • 甲方和乙方各得 1 分,共要翻 10+10=20 次。
  • 乙方得 2 分,同样翻 11 次。

所以最多要翻 20 次。

  

题解:

   暴力枚举甲的得分 i,乙的得分为 K-i。

   分别算甲的翻动和乙的翻动。

  

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <sstream>
#include <algorithm>
using namespace std;
#define pb push_back
#define mp make_pair
#define ms(a, b) memset((a), (b), sizeof(a))
#define eps 0.0000001
typedef long long LL;
typedef unsigned long long ULL;
const int inf = 0x3f3f3f3f;
const LL INF = 0x7fffffff;
const int maxn = 1e6+;
const int mod = 1e9+;
int kase = ;
void init() { }
int cnt(string s, int get)
{
int ans = ;
while(get>){
while(s[]<''&&get>){
s[]++;
ans++;
get--;
}
if(s[]==''&&get>&&s[]!=''){
ans+=;
get--;
s[] = '';
s[]++;
}
else if(s[]==''&&get>&&s[]==''){
ans += ;
get--;
s[] = '';
s[] = '';
s[]++;
}
}
return ans;
}
void solve() {
int K;
string A, B;
cin >> A >> B >> K;
int ans = -inf;
for(int i = ;i<=K;i++){
int Aget = i;
int Bget = K-i;
ans = max(ans, cnt(A, Aget)+cnt(B, Bget) );
}
cout << "Case " << kase++ << ": " << ans << endl;
}
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif // LOCAL
int T;
cin >> T;
while(T--){
init();
solve();
}
return ;
}

个人总结:

  一开始以为是贪心。没有多想就去贪了。连wa几发,然后看了一下Note发现tips是暴力,就直接写了,有个地方忘记写get-- wa了几发,好亏。

你努力的时候,比你厉害的人也在努力。

第九届ECNU Coder A.足球锦标赛的更多相关文章

  1. 第九届ECNU Coder K.计软联谊

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/K/ 题目: K. 计软联谊 Time limit per test: 7.0 seconds Time ...

  2. 第九届ECNU Coder F.蚂蚁(栈)

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/F/ 题目: F. 蚂蚁 Time limit per test: 0.5 seconds Time li ...

  3. 华东师范大学第十届ECNU Coder程序设计竞赛

    华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...

  4. C#:根据银行卡卡号判断银行名称

    原文地址:android 根据银行卡卡号判断银行 原文是 java ,现在将它翻译成 C# ,并对代码重新编排整理,博主是一个今年刚出来的应届毕业生,不足之处请多多包涵. 根据银行卡号判断所属银行,依 ...

  5. .net 根据银行卡获取银行信息

    using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...

  6. poj 1818 ATP

    ATP 题意:足球锦标赛使用二分的策略,每次淘汰剩下人的一半,并且数据表明:排名相差k(include)之内的运动员,胜负难料,否则排名前的必定战胜排名后的:问给定n(n = 2x, x∈N, n & ...

  7. C#:根据银行卡卡号推断银行名称

    原文:C#:根据银行卡卡号推断银行名称 原文地址:android 根据银行卡卡号判断银行 原文是 java ,现在将它翻译成 C# ,并对代码重新编排整理,不足之处请多多包涵. 根据银行卡号判断所属银 ...

  8. 通过银行卡号识别归属银行,php方式

    这个例子不是很全,要做到齐全必须使用数据库字典来索引,而且数据量庞大,建议生产使用时限制几大行就行,直接不支持其他小行.此案例抛砖引玉 /** * 银行卡信息识别相关类 * 把bin号转化为长整形,再 ...

  9. 2018-7-27银行卡bin大全-根据银行卡开头查银行

    支付宝卡号验证工具 https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=银 ...

随机推荐

  1. Linux下杀进程

    $ ps -ef | grep firefox smx : ? :: /usr/lib/firefox-/firefox-bin smx : pts/ :: grep --color=auto fir ...

  2. Eigen的aligned_allocator

    今天看ORBSLAM2中的OptimizeEssentialGraph()函数时,对一句代码中的aligned_allocator不太清楚: vector<g2o::Sim3,Eigen::al ...

  3. 初学Java总结

    经过了一年C语言的学习,自己也渐渐懂了一些东西.由于二者有共通之处,所以在刚开始学习Java的过程中,并没有刚开始学习C语言的时候那么晦涩难懂. 第一周: 1)了解了Java的发展过程以及JDK的安装 ...

  4. jdk下载安装后为什么要设置环境变量?

    因为电脑不知道javac这个命令是在C:\Program Files\JAVA\jdk1.8.0_65\bin的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径

  5. Super Mario HDU 4417 主席树区间查询

    Super Mario HDU 4417 主席树区间查询 题意 给你n个数(编号从0开始),然后查询区间内小于k的数的个数. 解题思路 这个可以使用主席树来处理,因为这个很类似查询区间内的第k小的问题 ...

  6. BZOJ 4919 (树上LIS+启发式合并)

    题面 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i, ...

  7. osi七层协议 Open System Interconnection

    一, 操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何其他软件都必 ...

  8. 40-python基础-python3-字典常用方法-setdefault()

    setdefault() 常常需要为字典中某个键设置一个默认值,当该键没有任何值时使用它,如下面的情况: setdefault()方法, 字典.setdefault(键,默认值) 传递给该方法的第一个 ...

  9. ubantu 安装mongodb数据库

    STEP 1:  在终端输入GPK码 $  sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334B ...

  10. C#将MD5后的字符串转为字符数据,随机大小写

    一如下代码 public static string GenerateCode(Guid id, DateTime endTime, string Type) { string str = id + ...