【试后总结】5.14~5.15 信奥考试后的反思&题解

博主分享了在信奥模拟赛中的几道题目,包括‘打怪兽’、‘奶牛排队’、‘肉夹馍’、‘距离统计’、‘魅力值最大’的解题思路和代码。总结了比赛中遇到的问题,指出对题目的理解和分析不足是主要的失分原因,期待下次能有更好表现。
摘要由CSDN通过智能技术生成

前言

又是一次模拟赛,还是马拉松形式的…不出意料地又考炸了QAQ,肿么办(逃不掉
仅以此篇反思找找自己的不足,顺便祭奠我的爆零 😭

Problem

T1-打怪兽

题目描述

F a r m e r J o h n Farmer John FarmerJohn 在他的农场发现了一只可以分裂的小怪兽,他决定让 B e s s i e Bessie Bessie 来消灭它。

B e s s i e Bessie Bessie 每个单位时间做出一次攻击,一个只能攻击一只小怪兽,攻击效果与小怪兽的血量有关。

  • 如果被攻击的小怪兽的血量为1,那么这只小怪兽就被消灭掉;

  • 如果被攻击的小怪兽的血量不为1,这只怪兽会分裂成2只怪兽,新出现的怪兽的血量为 ⌊ x 2 ⌋ \lfloor \frac{x}{2} \rfloor 2x ⌊ ⌋ \lfloor \rfloor 符号的意思是 x x x 2 2 2 后向下取整。

现在 B e s s i e Bessie Bessie 想知道,自己最少攻击多少次,可以把怪兽消灭。

输入格式

一个整数,表示 H H H

输出格式

一个整数,表示最少攻击次数

数据规模

100% 数据 1 ≤ N ≤ 1 0 12 1≤N≤10^{12} 1N1012

时间限制:1s

空间限制:256MB

解题思路
  • 良心的入门题,貌似没有难度,但本蒟蒻还是掉坑了,明明一个循环搞定的事偏要用二进制分解+快速幂(QAQ:其实是for循环没开long long)
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL Mul(LL x,LL y) {
    return 1LL*x*y; } 
LL power(LL x,LL y)
{
   
	LL ans=1;
	for (;y;y>>=1,x=Mul(x,x))
	 if (y&1) ans=Mul(ans,x);
	return ans;
}
int main()
{
   
	freopen("monster.in","r",stdin);
	freopen("monster.out","w",stdout);
	LL h,x=0;
	scanf("%lld",&h);
	while (h>1)
	{
   
		h>>=1;
		x++;
	}
	printf("%lld",power(2,x+1)-1);
	return 0;
}

T2-奶牛排队

题目描述

Farmer John现在有 N 头奶牛,其中 K 头有斑点的,剩下的没有斑点。

现在Farmer John想让这些奶牛排队,现在他想知道,这 K 头奶牛在整个队列里,分成 1 , 2 , 3 … K 1,2,3…K 1,2,3K 段的方案数为多少。

这里的一段是有斑点的奶牛挨着站一起。具体样例有解释

输入格式

两个整数 N N N K K K

输出格式

K K K 行,每行一个整数,第 i i i 行表示有斑点的奶牛分成 i i i 段的方案数。 答案可能很大,你只需要输出答案对 1 0 9 + 7 10^9+7 109+7 取余即可。

数据规模

40% 保证 1 ≤ K ≤ N ≤ 100 1≤K≤N≤100 1KN100

100% 保证 1 ≤ K ≤ N ≤ 2000 1≤K≤N≤2000 1KN2000

时间限制:2s

空间限制:256MB

解题思路
  • 乍一看是道组合题,果不其然,兴致勃勃地打了一个,谁知道最后只有56分(竟然有56分!!!
  • 得把这道题分步做,首先看做是 k 头有斑点的牛分为 x 组,根据隔板法可知,答案是 C k − 1 x − 1 \mathrm C_{k-1}^{x-1} Ck1x1
  • 然后把 x x x 组的牛插入 n − k + 1 n-k+1 n
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值