题目传送门(内部题142)


输入格式

  输入文件的第一行为两个数$n,P$。
  接下来一行$n$为个正整数,表示每道题的分数。


输出格式

  输出一行一个正整数,为至少需要获得的分数。


样例

样例输入:

2 0.5
1 2

样例输出:

2


数据范围与提示

  设一道题分数的最大值为$m$。    
  对于$50\%$的数据,满足$n\leqslant 20$。
  对于另$20\%$的数据,满足$m\leqslant 1,000$。
  对于$100\%$的数据,满足$2\leqslant n\leqslant 40,1\leqslant m\leqslant 10^6$。


题解

$n^{20}$爆搜,然后可以预处理后$20$个,然后用$meet\ in\ the\ middle$就好了。

时间复杂度:$\Theta(2^{\frac{n}{2}})$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
int a[50],L,R,sum,f[30000001],g[3000001],mx;
long long qpow;
double P;
bool judge(int x)
{
long long res=0;
for(int i=0;i<(1<<R);i++)if(g[i]<=x)res+=f[min(mx,x-g[i])];
return ((double)res/qpow)<P;
}
int main()
{
scanf("%d%lf",&n,&P);
L=n/2;R=n-L;qpow=pow(2LL,n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
mx+=(i<=L)*a[i];
}
for(int i=0;i<(1<<L);i++)
{
int res=0;
for(int j=1;j<=L;j++)if(i&(1<<(j-1)))res+=a[j];
f[res]++;
}
for(int i=1;i<=sum;i++)f[i]+=f[i-1];
for(int i=0;i<(1<<R);i++)
{
int res=0;
for(int j=L+1;j<=n;j++)if(i&(1<<(j-L-1)))res+=a[j];
g[i]=res;
}
int lft=0.0,rht=sum,res=sum;
while(lft<=rht)
{
int mid=(lft+rht)>>1;
if(judge(mid))lft=mid+1;
else{rht=mid-1;res=mid;}
}
printf("%d",res);
return 0;
}

rp++

最新文章

  1. android中MVP模式
  2. 错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败
  3. CSS3选择器(二)--表单
  4. 静态资源[org.springframework.web.servlet.PageNotFound]
  5. MarkDown认识与入门
  6. 剑指OFFER之用两个栈实现队列(九度OJ1512)
  7. NGUI对象跟随鼠标拖拽移动
  8. HDU 1046 - Gridland
  9. oracle11g 体系结构详解
  10. three.js 实现全景以及优化(2)
  11. windows 7 netsh wlan命令连接wifi
  12. .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
  13. The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency information available
  14. 从Windows到linux小记
  15. springBoot的数据库操作
  16. SharePoint 2019 离线安装准备工具
  17. Java压缩图片的实现类
  18. vue-infinite-loading2.0 中文文档
  19. 关于gb2312编码和utf8码的一个问题
  20. nginx之配置proxy_set_header

热门文章

  1. 使用.netcore部署window服务完成过程(使用nssm,Topshelf)
  2. html和css制作百度界面
  3. vue-cli3.x创建项目vue create hello-world
  4. 第十一章、super()详解
  5. Win10系统如何利用蓝牙设置动态锁?
  6. OpenResty 执行流程阶段
  7. zabbix 自定义Key (六)
  8. Summer training #4
  9. Linux之RPM 软件管理程序
  10. mybatis中#{}和${}的区别(转载)