P8344「Wdoi-6」走在夜晚的莲台野-题解
看难度就明白这是道签到题
1.思路
题目要求我们将所有板子 放过 就行,但放入金就会清空银。
所以我们要在放金之前 尽可能多放银。
这就是标签所说的贪心。
2.解法
由以上思路可得:
放银的数目依次为 、 。
由等差数列公式:
最多可以放 个银,令该式子为 。
我们得到如下几种情况:
- 恰好满足放入所有 后 被清空。
- 恰好满足放入所有 后 被清空不足。
- 恰好满足放入所有 后 被清空有余。
而这三种情况依次对应 、、 的情况。
分别为 。
: 显然满足要求。
: 翻译过来就是金放完了银有剩,则只需要剩下的银数量 小于等于 可放位置的数量就行了。
: 银放完了金有剩,具体剩多少呢?
我们令此时消耗的金数量为 则将 带入 式。
整理一下得到关于 的式子:
。
得到:。
同 理即可求解。
3.Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,x,y,z;
int main(){
scanf("%lld",&T);
while(T--){
scanf("%lld%lld%lld",&x,&y,&z);
if(x>z){printf("Merry\n");continue;}
ll judge=x*(2*z-x-1)/2;
if(judge==y){printf("Renko\n");continue;}
if(judge<y&&(y-judge<=z-x)){printf("Renko\n");continue;}
int x0=(2*z-1+sqrt((2*z-1)*(2*z-1)-8*y))/2;
if(judge>y&&(x-x0)<=z){printf("Renko\n");continue;}
printf("Merry\n");
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构