题目传送门(内部题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++

[CSP-S模拟测试]:答题(meet in the middle)的更多相关文章

  1. [CSP-S模拟测试]:毛一琛(meet in the middle)

    题目描述 历史学考后,$MYC$和$ztr$对答案,发现选择题他们没有一道选的是一样的.最后他们都考了个$C$.现在问题来了,假设他们五五开,分数恰好一样(问答题分数也恰好一样,只考虑选择题).已知考 ...

  2. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  3. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  4. 安装nginx python uwsgi环境 以及模拟测试

    uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...

  5. 利用Python中的mock库对Python代码进行模拟测试

    这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下     ...

  6. 转 C#实现PID控制的模拟测试和曲线绘图

    C#实现PID控制的模拟测试和曲线绘图   本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ...

  7. Mockito:一个强大的用于Java开发的模拟测试框架

    https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...

  8. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

  9. Mock 模拟测试简介及 Mockito 使用入门

    Mock 是什么mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象.mock对象就是真实对象在调试期间的代 ...

随机推荐

  1. RAII惯用法:C++资源管理的利器(转)

    RAII惯用法:C++资源管理的利器 RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写.中文可将其翻 ...

  2. Laravel save部分字段失效的bug问题解决

    问题描述:今天在编写api的更新部分,发现有部分字段怎么更新都更新不上去. 问题排查: 经过多次测试,发现每次提交只能更新部分字段,字段分别为:id,user_id,device_room_id,na ...

  3. Java并发编程——线程池

    本文的目录大纲: 一.Java中的ThreadPoolExecutor类 二.深入剖析线程池实现原理 三.使用示例 四.如何合理配置线程池的大小 一.Java中的ThreadPoolExecutor类 ...

  4. 快速写个node命令行工具

    1.package.json-bin配置 [创建bat文件,把bat路径添加到PATH中]这些固定的工作可以由npm帮我们完成.package.json中有个bin字段配置: bin: { " ...

  5. Django基础第一篇

    目录 1.Django MTV框架简介 2.基础命令创建项目的配置说明 3.前后端交互案例 4.基于数据库实现数据交互增删改查 Django简介 Django框架的设计模式借鉴了MVC的思想,和MVC ...

  6. 《Redis高阶应用》讲座总结

    数据结构延展 常用数据结构:String,Hash,List,Set,Sorted Set(不聊这些) 高级数据结构:Bitmaps,hyperloglog,GEO 单机拓展到分布式 为什么要分区:性 ...

  7. 关于api接口以及页面数据通信域名,缓存cdn设置优化

    以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bili ...

  8. java_day03_流程控制

    ch03 目标:表达式和流程控制 ---------------------------------------------- 1.实例变量和局部变量 程序的基本功能是处理数据,程序中需要使用变量来接 ...

  9. 【转】__cplusplus的含义

    有点代码中会看到以下形式的代码: #ifdef __cplusplus extern "C" {#endif #ifdef __cplusplus}#endif 这些代码是什么意思 ...

  10. linux基础—课堂随笔04_文件查找和压缩

    文件查找和压缩 文件查找 1.locate   这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进 ...