第九届ECNU Coder A.足球锦标赛
题目链接: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
2
009 009
2
001 003
2
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.足球锦标赛的更多相关文章
- 第九届ECNU Coder K.计软联谊
题目链接:http://acm.ecnu.edu.cn/contest/16/problem/K/ 题目: K. 计软联谊 Time limit per test: 7.0 seconds Time ...
- 第九届ECNU Coder F.蚂蚁(栈)
题目链接:http://acm.ecnu.edu.cn/contest/16/problem/F/ 题目: F. 蚂蚁 Time limit per test: 0.5 seconds Time li ...
- 华东师范大学第十届ECNU Coder程序设计竞赛
华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...
- C#:根据银行卡卡号判断银行名称
原文地址:android 根据银行卡卡号判断银行 原文是 java ,现在将它翻译成 C# ,并对代码重新编排整理,博主是一个今年刚出来的应届毕业生,不足之处请多多包涵. 根据银行卡号判断所属银行,依 ...
- .net 根据银行卡获取银行信息
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary ...
- poj 1818 ATP
ATP 题意:足球锦标赛使用二分的策略,每次淘汰剩下人的一半,并且数据表明:排名相差k(include)之内的运动员,胜负难料,否则排名前的必定战胜排名后的:问给定n(n = 2x, x∈N, n & ...
- C#:根据银行卡卡号推断银行名称
原文:C#:根据银行卡卡号推断银行名称 原文地址:android 根据银行卡卡号判断银行 原文是 java ,现在将它翻译成 C# ,并对代码重新编排整理,不足之处请多多包涵. 根据银行卡号判断所属银 ...
- 通过银行卡号识别归属银行,php方式
这个例子不是很全,要做到齐全必须使用数据库字典来索引,而且数据量庞大,建议生产使用时限制几大行就行,直接不支持其他小行.此案例抛砖引玉 /** * 银行卡信息识别相关类 * 把bin号转化为长整形,再 ...
- 2018-7-27银行卡bin大全-根据银行卡开头查银行
支付宝卡号验证工具 https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=银 ...
随机推荐
- LeetCode——141 设计链表
题目: 简单说下思路: 用两个指针,一个跑得快,一个跑得慢(例如一个每次前进两步,一个前进一步),这样只要快指针不会撞上NULL(如果遇到了NULL的情况那么必然不存在环),快指针肯定会和慢指针碰面( ...
- Vue入门---安装及常用指令介绍
1.安装 BootCDN----官网https://www.bootcdn.cn/ <script src="https://cdn.bootcss.com/vue/2.6.10/vu ...
- [Vim 填坑] 01 Vim 中替换与注释的补充
目录 1. print( 坑的信息 ) 2. 开始填坑 (1) :n1,n2s/old/new/gc 的后续命令 ^E ^Y (2) 利用"V-可视"模式进行多行注释 1. pri ...
- iBatis框架之配置文件之注意点之总结
1.配置文件sqlMap.xml中需要注意的点 比如: <?xml version="1.0" encoding="UTF-8" ?> <!D ...
- dp(电梯与楼梯)
http://codeforces.com/problemset/problem/1249/E E. By Elevator or Stairs? time limit per test 2 seco ...
- BZOJ 1085(IDA*)
题面 传送门 分析 首先,直接搜索肯定会TLE 很容易想到用迭代加深的方法,限定搜索深度 但是,这样仍然不够,需要用启发式的方法优化 我们设计一个估价函数f(x)=g(x)+h(x)f(x)=g(x) ...
- CentOS安装Python3.x
安装python3.6可能使用的依赖# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqli ...
- mysql的sql语句优化方法面试题总结
mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结 ...
- v-cloak解决Vue双大括号闪烁问题
相信不少人和我一样,初次查看一个技术的文档的时候,知识吸收的很慢,因为对这个技术的不熟悉导致不清楚各种操作的应用场景,当我意识到这件事之后,我决定换种学习思路,即以实战为主,卡壳就查文档,会对这个技术 ...
- 如何同步发送put或者delete请求
1.必须把前端发送方式改为post . 2.在web.xml中配置一个filter:HiddenHttpMethodFilter过滤器 3.必须携带一个键值对,key=_method, value= ...