题目链接: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. 重置Docker里的gitlab管理员用户密码

    1.docker ps  找出容器的唯一标识 2.docker exec -it ad9b8c3e20f0 /bin/bash  进入Docker容器运行环境 3.开始重置gitlab管理员用户密码 ...

  2. Robot Framework课件汇总

    http://www.testclass.net/rf/ 测试教程网http://www.testclass.net/all

  3. 配置OSPF认证

      按照上图拓扑配置路由器的IP 配置完后测试直连网段连通性 搭建OSPF网络 注意是多区域的配置,R2是ABR 连着area0和area1 并且每个路由器的环回接口IP也要加进去  此时密码以明文方 ...

  4. linux之shell脚本

    1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ? 1 2 3 4 ./show.sh file1.txt cat show.sh #!/bin/bash ...

  5. hdu-1045.fire net(缩点 + 二分匹配)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  6. csrf原理及flask的处理方法

    csrf原理及flask的处理方法 为什么需要CSRF? Flask-WTF 表单保护你免受 CSRF 威胁,你不需要有任何担心.尽管如此,如果你有不包含表单的视图,那么它们仍需要保护. 例如,由 A ...

  7. csrf的中间件

    csrf的中间件 源码简略分析: def process_request(self, request): # 从cookies中获取csrf_token csrf_token = self._get_ ...

  8. RMQ 的入门 hdu1806

    RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值 ...

  9. Vue.js——60分钟组件快速入门(上篇)二

    来源:https://www.cnblogs.com/keepfool/p/5625583.html 组件简介 组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小 ...

  10. latex中\large的作用域问题

    在毕业论文的写作过程中,遇到了一个\large 作用域的问题.假设下面有三种写法: I am cool \large{you are right}, yeah, yeah, yeah I am coo ...