【题解】扑克牌游戏
【题解】扑克牌游戏
假如我们知道一个答案,那么我们剩下的问题就是去检查这个答案是否合法。
显然可以拿mm做文章,假设我们最终可以得到ansans组套牌,那么对于每张牌,如果它的数量比ansans小,我们就需要拿jokerjoker补。多的就没关系了。
很棒的思路,还有一个贪心做法,也很神仙。orz
#include<bits/stdc++.h>
#define R register int
#define gc getchar
using namespace std;
typedef long long ll;
#define RP(t,a,b) for(register ll t(a),edd(b);t<=edd;t++)
#define DRP(t,a,b) for(register ll t(a),edd(b);t>=edd;t--)
int qr(ll x){
ll ans=0,flag=1;
char ch=gc();
while((ch>'9'||ch<'0')&&ch!='-')ch=gc();
if(ch=='-')flag=-1,ch=gc();
while(ch>='0'&&ch<='9')ans=ans*10ll+ch-48ll,ch=gc();
return ans*flag;
}
int psj_ak_ioi=2020;
const int maxn=101;
ll data[maxn];
ll n,m;
inline bool chek(ll x){
ll ret=0;
RP(t,1,n) if(data[t]<x) ret+=x-data[t];
return ret<=m&&ret<=x;
}
int main(){
n=qr(1ll);m=qr(1ll);
RP(t,1,n) data[t]=qr(1ll);
int l=0,r=(ll)500000005+m;
do{
register ll mid=(l+r)>>1;
if(chek(mid)) l=mid+1;
else r=mid-1;
}while(l+10ll<=r);
DRP(t,r+5ll,max(l-5ll,0ll)) if(chek(t)) return cout<<t<<endl,0;
return 0;
}
/*
这道题可以套拟阵?
交换性很显然,遗传性有吗?
不管了就这样做 orz yyb
二分贪心QAQ
还有24min
苦辣
*/
博客保留所有权利,谢绝学步园、码迷等不在文首明显处显著标明转载来源的任何个人或组织进行转载!其他文明转载授权且欢迎!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· 为什么AI教师难以实现
· 如何让低于1B参数的小型语言模型实现 100% 的准确率
· AI Agent爆火后,MCP协议为什么如此重要!