• 【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
    ",ans);
    	return 0;
    }
    
    转载需注明出处。
  • 相关阅读:
    pycharm的常规使用
    python-引用/模块
    6-4 函数
    5-21文件的操作
    5-21python数据类型
    python-基础
    5-7接口测试工具之jmeter的使用
    接口测试基础
    把命令结果作为变量赋值
    shell变量子串
  • 原文地址:https://www.cnblogs.com/jz929/p/11817672.html
Copyright © 2020-2023  润新知