[ABC184F] Programming Contest题解
前置知识
meet in middle (折半搜索)
会的大佬请跳过
不会的请自己前往oi wiki或CSDN(百度吧,少年)
解题思路
纯暴力
看完题目考虑将每一种情况计算出来,排序后找不超过T的最大值
因为每个数有(选/不选)两种情况
所以总共2^n种结果
显而易见,时间复杂度 O(2^n)
n=40时,显然会G
正解
引出
暴力思路告诉我们,现在需要一种优秀的算法(奇技淫巧)来帮助我们
从庞大的信竞知识中,我们找到了折半搜索;
步骤
- 将数据分成2组,1到n/2一组,n/2+1到n为一组
- 每组单独算情况,存在数组中
- 两个结果数组单独排序(升序)
- a指针从第一组结果数组的第一个元素,b指针从第二组结果数组的最后一个元素(没学过指针怎么办?变量模拟即可,详见代码)
- 如果两个元素之和大于T,b--
- 否则用元素之和更新答案(正确性显然,自己思考)
AC代码
#include <bits/stdc++.h>
using namespace std;
long long n,t,mx,sz[42],a[1050000],b[1050000],tota,totb;
void dfs(int qd,int zd,int lim,long long zhi)
{
if(qd>zd)return ;
if(zhi+sz[qd]>t)
{
dfs(qd+1,zd,lim,zhi);
return;
}
if(lim==1)a[++tota]=zhi+sz[qd];
else b[++totb]=zhi+sz[qd];
dfs(qd+1,zd,lim,zhi);
dfs(qd+1,zd,lim,zhi+sz[qd]);
return;
}
int main()
{
scanf("%lld%lld",&n,&t);
for(int i=1;i<=n;i++)
{
scanf("%lld",&sz[i]);
}
dfs(1,n/2,1,0);
dfs(n/2+1,n,2,0);
sort(a+1,a+tota+1);
sort(b+1,b+totb+1);
int zz=1,yz=totb;
while(zz<=tota&&yz>=1)
{
while(a[zz]+b[yz]>t)yz--;
if(yz<1)break;
if(a[zz]+b[yz]>mx)mx=a[zz]+b[yz];
zz++;
}
printf("%lld\n",max(mx,max(a[tota],b[totb])));
return 0;
}写在最后
求审核放过孩子的第一篇正经题解
欢迎各位大佬评论区指点一二,三克油
[ABC184F] Programming Contest题解的更多相关文章
- 2015 Syrian Private Universities Collegiate Programming Contest 题解
题目在这里>_< 发现这场比赛在网上没有完整的题解,甚至连题目代码都没人贴出来(大概是因为题目太水了吧...).所以宝宝就来写个题解,也就当作成长记录了233333 A. Window 题 ...
- 2015 ACM Amman Collegiate Programming Contest 题解
[题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...
- 2013-2014 ACM-ICPC Brazil Subregional Programming Contest 题解
[题目链接] 这场比赛题面英文都好长... ... A - Zero or One 模拟. #include <bits/stdc++.h> using namespace std; in ...
- 2017, X Samara Regional Intercollegiate Programming Contest 题解
[题目链接] A - Streets of Working Lanterns - 2 首先将每一个括号匹配串进行一次缩减,即串内能匹配掉的就匹配掉,每个串会变成连续的$y$个右括号+连续$z$个左括号 ...
- 2017 ACM Amman Collegiate Programming Contest 题解
[题目链接] A - Watching TV 模拟.统计一下哪个数字最多即可. #include <bits/stdc++.h> using namespace std; const in ...
- The 2015 China Collegiate Programming Contest Game Rooms
Game Rooms Time Limit: 4000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- Programming Contest Ranking(题解)
Programming Contest Ranking . 题目描述 Heilongjiang Programming Contest will end successfully! And your ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- M-SOLUTIONS Programming Contest 2020 题解
M-SOLUTIONS Programming Contest 2020 题解 目录 M-SOLUTIONS Programming Contest 2020 题解 A - Kyu in AtCode ...
- 2016 Sichuan Province Programming Contest
2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...
随机推荐
- 程序员天天 CURD,怎么才能成长,职业发展的思考(2)
接着上一篇:程序员天天 CURD,怎么才能成长,职业发展思考 上一篇写到了用年限来谈程序员的发展,在 4 - 6 年这个时间段需要做的一些事情,接着写这个时间段的. 第 4.5 年时候,你可能会做一些 ...
- 自定义Lua解析器管理器-------演化脚本V0.5
[3]自定义Lua解析器管理器-------演化脚本V0.5 方便我们在项目中使用Lua解析方法,我们封装管理一个lua解析器,管理LuaState的方法执行. 解析器脚本: using LuaInt ...
- GPS坐标、火星坐标、百度坐标之间的转换--提供javascript版本转换代码
1.国内几种常用坐标系说明 WG-S84: GPS仪器记录的经纬度信息,Google Earth采用,Google Map中国范围外使用,高德地图中国范围外使用.GCJ-02: 火星坐标系,中国国家测 ...
- tarjan板子整理
缩点 stack<int>q; void tarjan(int u) { pre[u]=low[u]=++cnt; q.push(u); vis[u]=1; for(int i=head[ ...
- warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&f);
这个是C语言当中常见的错误,意思是 对于输入的scanf参数的内容,没有进行类型判断,所以才会产生这个问题. 解决方法: 1.添加if判断方式 1 if(scanf("%d",&a ...
- flask-wtf和WTForms官网翻译详解
https://flask-wtf.readthedocs.io/en/stable/# https://wtforms.readthedocs.io/en/2.3.x/ 介绍: wtformflas ...
- C# java 的 equals 与 == 的区别
C# String a = "宜春"; String b = new String(new char[] { '宜', '春' }); String c = b; //注意这里是引 ...
- 记录一次 对应用程序日志排查,老是刷出有本地ip登录Sqlserver数据库失败的日志
在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192....; 我查看ip发现是本机的ip地址.也就是说有本地的应用程序在 ...
- layui 无限级多级菜单
layui 二级菜单 :https://gitee.com/hslr/layui_extension_modulemenu 我更改了下,变成了无线级菜单 layui.define('element', ...
- ChatGPT-4o模型功能介绍
1.概述 OpenAI 持续突破人工智能的边界,推出了其最新模型 ChatGPT-4o,作为 ChatGPT-4 的继承者,该模型有望带来显著的提升和创新功能.本文将深入解析 ChatGPT-4 与 ...