【NOIP2012模拟8.10】贿赂
这题让我懂得了什么叫做暴力出正解。。。
正解两个爆搜。
(想死了,以为时超便把第二个爆搜改成了DP,结果没调对)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
int n,K,A,a[21],b[21],g[21][21];
db ans=0,s=0,f[21][21];
inline int read()
{
int x=0; char c=getchar();
while (c<'0' || c>'9') c=getchar();
while (c>='0' && c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x;
}
void dg(int x,int ae,db ss,int q)
{
if (x>n)
{
if (ae>n/2) s+=ss;
else s+=ss*A/(A+q);
return;
}
dg(x+1,ae,ss*(1-b[x]/100.0),q+a[x]);
dg(x+1,ae+1,ss*b[x]/100.0,q);
}
void dfs(int x,int had)
{
if (x==n)
{
had=min(had,10-b[x]/10);
b[x]+=had*10;
s=0;dg(1,0,1,0);
ans=max(ans,s);
b[x]-=had*10;
return;
}
else
{
int mi=min(10-b[x]/10,had);
for (int i=0;i<=mi;i++)
b[x]+=i*10,dfs(x+1,had-i),b[x]-=i*10;
}
}
int main()
{
freopen("hl.in","r",stdin);
// freopen("hl.out","w",stdout);
n=read(),K=read(),A=read();
for (int i=1;i<=n;i++)
a[i]=read(),b[i]=read();
dfs(1,K);
printf("%.6lf\n",ans);
return 0;
}
转载需注明出处。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络