P4799 [CEOI 2015] 世界冰球锦标赛 (Day2)(双向广搜/折半搜索)
题目链接:https://www.luogu.com.cn/record/226316667
思路
首先观察数据量可知,1018的数据量,不可以直接使用动态规划来做,所以考虑使用dfs来做,如果直接使用dfs,当n为40时,情况有240种可能,同样过大,这时候我们可以考虑将数组拆成两半,最终使用双指针来计算总方案数,这样的话,左边和右边各只有220种可能,最后使用双指针也只需要220次计算,所以最后的时间复杂度能过此题
题解
#include <bits/stdc++.h>
using namespace std;
const int N=1<<21;
typedef long long ll;
int t,n;
ll m;
ll a[N];
ll lsum[N];
ll rsum[N];
int f(int l,int r,ll *arr,ll sum,int sz)
{
if(sum>m)return sz;
if(l==r)arr[sz++]=sum;
else
{
sz = f(l+1,r,arr,sum+a[l],sz);
sz = f(l+1,r,arr,sum,sz);
}
return sz;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++)cin>>a[i];
int lsz = f(0,n>>1,lsum,0,0);
int rsz = f(n>>1,n,rsum,0,0);
sort(lsum,lsum+lsz);
sort(rsum,rsum+rsz);
// for(int i=0;i<lsz;i++)cout<<lsum[i]<<' ';
// cout<<endl;
// for(int i=0;i<rsz;i++)cout<<rsum[i]<<' ';
// cout<<endl;
ll ans=0;
for(int i=lsz-1,j=0;i>=0;i--)
{
while(j<rsz&&lsum[i]+rsum[j]<=m)
{
j++;
}
ans+=j;
}
cout<<ans<<endl;
return 0;
}
P4799 [CEOI 2015] 世界冰球锦标赛 (Day2)(双向广搜/折半搜索)的更多相关文章
- 【题解】P4799[CEOI2015 Day2]世界冰球锦标赛
[题解][P4799 CEOI2015 Day2]世界冰球锦标赛 发现买票顺序和答案无关,又发现\(n\le40\),又发现从后面往前面买可以通过\(M\)来和从前面往后面买的方案进行联系.可以知道是 ...
- 题解 P4799 【[CEOI2015 Day2]世界冰球锦标赛】
题解 P4799 [[CEOI2015 Day2]世界冰球锦标赛] 双向搜索好题 传送门 实际上,双向搜索就是把\(a^n\)的复杂度转变成了大多为\(O(nlogna^{\frac{n}{2}})\ ...
- 折半搜索【p4799】[CEOI2015 Day2]世界冰球锦标赛
Description 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会去看所有的比赛.不幸的是,他 ...
- P4799 [CEOI2015 Day2]世界冰球锦标赛
\(\color{#0066ff}{题目描述}\) 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会 ...
- P4799 [CEOI2015 Day2]世界冰球锦标赛(折半暴搜)
题目很明确,不超过预算的方案数.两个直觉:1.暴搜2.dp 每个点两种状态,选或不选.... 1.可过20% 2.可过70% 正解:折半搜索(meet in the middle) 有点像以前的双向广 ...
- [CEOI2015 Day2]世界冰球锦标赛 (双向搜索)
题目描述 [CEOI2015 Day2]世界冰球锦标赛译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.Bobek ...
- 【BZOJ4800】[CEOI2015 Day2]世界冰球锦标赛 (折半搜索)
[CEOI2015 Day2]世界冰球锦标赛 题目描述 译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.\(Bob ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 双向广搜 codevs 3060 抓住那头奶牛
codevs 3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...
随机推荐
- ASP.NET Core之Razor Page相关
cshtml一般是这样: @page @model IndexModel @{ ViewData["Title"] = "Home page"; } <d ...
- C#之线程同步
简述 当一个线程执行递增和递减操作时,其他线程需要依次等待,类似于这种常见的问题通常被称为线程同步问题. 有多种方式实现线程同步.首先,如果无须共享对象,那么就无序进行线程同步.大多数时候,可以通过重 ...
- 为什么使用MQ
在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 开发中消息队列通常有如下应用场景: 1.任务异步处理 ...
- AD 横向移动-TGS-REP Kerberoasting 攻击
本文通过 Google 翻译 AD Escalation – Kerberoasting Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 前 ...
- Power BI回顾于2025年
前段时间的工作主要是用Tableau和Tableau CRM,Power BI搁置了好一段时间.为了了解整个行业的趋势,偶尔也会回来看看Power BI这边的动静,毕竟自己当初就是从微软的技术路线开始 ...
- 数据库的DML与DQL语句
1: DML语句 insert into values 1 insert into 表 values(值1,值2,值n); 2 insert into 表(字段1,字段2,字段n) values( ...
- Go 进阶训练营 Week02: error 错误处理
Error vs Exception Error: Go error 就是普通的一个接口,普通的值.Errors are values type error interface { Error() s ...
- AI 赋能指标管理分析,开启企业数智领航时代
以下为本次分享的回顾: 在大数据时代,企业数字化转型的核心目标在于让数据发挥真正的价值.从数据报表到分析平台,再到日常取数,企业所依赖的不仅仅是数据本身,而是通过数据所呈现出对业务的分析.业务的查看以 ...
- 巧用指标平台DataIndex,五步法轻松实现指标管理
开发部门在做指标加工的全流程中,是否经常出现如下问题: · 业务部门看指标数据的时候,看到两个名称相似的指标,不清楚两个指标的差异性,来咨询开发部门指标计算口径,开发部门配合业务部门翻找代码,找出指标 ...
- Web前端入门第 69 问:JavaScript Promise 提供的方法都使用过吗?
Promise 这个 API 曾在 JS 领域掀起过血雨腥风,以前的大佬们都喜欢手搓一个自己的 Promise 用以理解 Promise 的原理. Promise 的诞生,应该多少都有受到 jQuer ...