题目链接: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了几发,好亏。

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

最新文章

  1. linux添加启动器图标(Ubuntu为例)
  2. List接口方法使用(PS:Java 编程思想阅读小结)
  3. tyvj1195 最后的晚餐
  4. 在Mac系统上配置Android真机调试环境
  5. 【积累】validate验证框架的使用
  6. RTC,登陆后添加权限值
  7. wamp 配置遇到的问题
  8. javascript继承(四)—prototype属性介绍
  9. Android动画的使用总结
  10. Chrome A标签的迁移错误:【Error loading page】
  11. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载
  12. SQL Server 2008无日志文件附加数据库
  13. 免费UI框架推荐--Charisma UI
  14. jquery操作属性 attr()和 prop()兼容性问题
  15. [转载]无旋treap:从好奇到入门(例题:bzoj3224 普通平衡树)
  16. jar包执行报ClassNotFoundException
  17. Java建造(Builder)模式
  18. java基础(十四)-----详解匿名内部类——Java高级开发必须懂的
  19. 1. 路过面了个试就拿到2个offer。是运气吗?
  20. url去重 --布隆过滤器 bloom filter原理及python实现

热门文章

  1. Python笔记(二十六)_魔法方法_属性的魔法方法
  2. OuterXml和InnerXml(2)
  3. 一次特殊的“VARCHAR转numeric失败”错误记录
  4. SpringBoot 使用Mybatis+MySql
  5. JDK中主要包的介绍
  6. 旧接口注册LED字符驱动设备(动态映射)
  7. BZOJ1185[HNOI2007] 最小矩形覆盖(旋转卡壳)
  8. Acwing‘803. 区间合并
  9. python random模块导入及用法
  10. python 模块导入import和import from区别