A | 托米的赌球 |
链接:https://www.nowcoder.com/acm/contest/156/A
来源:牛客网
紧张刺激的世界杯正在进行中(在托米的世界线里),欧洲人托米沉迷于赌球无法自拔。
托米的口袋里有 100 元,50元,20元,10元,5元,2元,1元的纸币,50分,20分,10分,5分,2分,1分的硬币各无限个。
托米计划买下几注 a 元 b 分的彩票,他希望能支出的纸票数量和硬币数量之和最小,他希望你帮助他完成这个任务。同时由于彩票亭不支持找零,托米希望他的支出恰好等于 a 元 b 分
第一行输入一个正整数 T下面 T 行每行两个整数 a,b
每行输出 13 个正整数 n1 ...n13, 对应题面顺序给出最小化支出纸票数量和硬币数量之和的情况下,每种货币的使用次数,如果有多种方案,输出字典序最大的一种,注意这里字典序是依次比较n1到n13,而不是简单的把 13 个正整数拼接在一起
示例1
复制
2 1 5 2 4
复制
0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0
T=100,0≤ a≤ 109, 0≤ b<100
题解:水题,贪心
#include
#include
#include
B | 托米的划分 |
链接:https://www.nowcoder.com/acm/contest/156/B
来源:牛客网
欧洲人托米非常喜欢数字,他经常在空闲时玩下面的游戏
对于一个数字 n, 托米会随性选中一个数 p, (1 < p <= n), 将 n 拆分成 ,v=n-u,并对 u,v 重复这个过程,直到他有了 n 个 1
1317 为了挑战托米,在每次托米进行划分时,会给托米奖励 u * v 的分数,托米希望你能帮他最大化他的得分。
第一行一个正整数 T下面 T 行每行一个正整数 n
对于每组数据,输出托米的最大得分
示例1
复制
1 5
复制
10
T≤ 104, n≤ 109
#include
#include
#include
using namespace std;
typedef long long ll;
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
ll ans=1ll*(n+1)*n/2;
printf("%lld\n",ans-n);
}
return 0;
}
D | 托米的咒语 |
链接:https://www.nowcoder.com/acm/contest/156/D
来源:牛客网
托米没有完成上一个任务,准备施展黑魔法推倒 1317
黑魔法咒语被描述为一个 长为 n 的,仅包含小写英文字母 'a'...'i' 的字符串,在托米所在的星球,魔法造成的每次有效伤害都是来自他的一个子序列,对于每一个 'a'... 'i' 的排列(共 9! 种),若作为咒语的子序列出现, 就会造成 1 的伤害
而咒语的总伤害为所有 'a'... 'i' 的排列造成的伤害值之和,托米能打出多少点的伤害,是否能击败 1317 呢?
一行输入一个字符串 s
一行输出一个数,表示伤害值
示例1
复制
aabcdefghi
复制
1
|s| ≤ 3000
题解:求 abcdefghi 的全排列在 S 串中出现的种类数,用 vector 记录每个字母出现的位置(最后一位都是一个比所有位置数大 的 数),在每次全排列后,一次比较对应的位置优先顺序是否符合。
/// AC 代码:
#include
#include
#include
#include
#include
using namespace std;
char s[3005];
vectorv[10];
char a[]={'a','b','c','d','e','f','g','h','i'};
int main(){
scanf(" %s",s);
int len=strlen(s);
for(int i=0;i
#include
#include
#include
#include
using namespace std;
char s[3005];
vectorv[10];
char a[]={'a','b','c','d','e','f','g','h','i'};
int main(){
scanf(" %s",s);
int len=strlen(s);
for(int i=0;iv[a[k]-'a'][l]){
leap1=1;
break;
}
}
if(leap1){
leap=1;
break;
}
}
if(!leap){
flag=1;
break;
}
}
if(!flag)
ans++;
}while(next_permutation(a,a+9));
printf("%d\n",ans);
return 0;
}