知识点:双向搜索

这个是双向深搜,也是我的第一道双向搜索,所以挑了一个简单的题来写,还是比较简单的,以及要了解双向搜索是怎么降低时间复杂度的

#include <bits/stdc++.h>using namespace std;const int N = 1100005;int n, cnt1, cnt2;
long long m, a[50], b[N], c[N];void dfs1(int k, long long cur) {if (cur > m) return;if (k == n / 2 + 1) {b[++cnt1] = cur;return;}dfs1(k + 1, cur);dfs1(k + 1, cur + a[k]);
}void dfs2(int k, long long cur) {if (cur > m) return;if (k == n + 1) {c[++cnt2] = cur;return;}dfs2(k + 1, cur);dfs2(k + 1, cur + a[k]);
}int main() {cin >> n >> m;for (int i = 1; i <= n; i++) cin >> a[i];dfs1(1, 0);dfs2(n / 2 + 1, 0);sort(c + 1, c + cnt2 + 1);long long ans = 0;for (int i = 1; i <= cnt1; i++) {int t = upper_bound(c + 1, c + cnt2 + 1, m - b[i]) - c;ans += (long long) t - 1;}cout << ans;return 0;
}

P4799 [CEOI2015 Day2] 世界冰球锦标赛相关推荐

  1. 洛谷P4799 [CEOI2015 Day2] 世界冰球锦标赛 题解

    洛谷P4799 [CEOI2015 Day2] 世界冰球锦标赛 题解 题目链接:P4799 [CEOI2015 Day2] 世界冰球锦标赛 题意: 译自 CEOI2015 Day2 T1「Ice Ho ...

  2. 洛谷—P4799 [CEOI2015 Day2]世界冰球锦标赛题解

    题目链接:P4799 [CEOI2015 Day2]世界冰球锦标赛 题目大意: 给定钱数,问要多少种观赛方案,可以一场都不看. 题解思路: 这道题要用到一种搜索方法--折半搜索.具体方法为:我们先把数 ...

  3. 洛谷P4799 [CEOI2015 Day2] 世界冰球锦标赛

    题目链接:P4799 [CEOI2015 Day2] 世界冰球锦标赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 折半搜索: 1:先搜索左半边的票价和 2:再搜索右半边的票价和 ...

  4. P4799 [CEOI2015 Day2]世界冰球锦标赛 (双端搜索)

    [CEOI2015 Day2]世界冰球锦标赛 - 洛谷 对于n<=40的情况,正常暴搜无疑要寄,那么我们可以分别从前一半和后一半开始搜,再对所搜的内容排序后,每一个在后面里二分出符合的答案. 和 ...

  5. P4799 [CEOI2015 Day2]世界冰球锦标赛

    \(\color{#0066ff}{题目描述}\) 今年的世界冰球锦标赛在捷克举行.Bobek 已经抵达布拉格,他不是任何团队的粉丝,也没有时间观念.他只是单纯的想去看几场比赛.如果他有足够的钱,他会 ...

  6. 洛谷P4799—— [CEOI2015 Day2]世界冰球锦标赛(折半搜索)

    原题链接 题意: 给n个物品和对应的价格,问用不超m元的钱可以买到的物品的方案数. 思路: 折半搜索的入门题(雾.jpg) n的范围是n<=40.普通的搜索一定会TLE,考虑将物品分成两部分来搜 ...

  7. P4799 [CEOI2015 Day2]世界冰球锦标赛(折半暴搜)

    题目很明确,不超过预算的方案数.两个直觉:1.暴搜2.dp 每个点两种状态,选或不选.... 1.可过20% 2.可过70% 正解:折半搜索(meet in the middle) 有点像以前的双向广 ...

  8. P4799 [CEOI2015 Day2]世界冰球锦标赛(折半搜索)

    题目大意: 解题思路: 如果直接暴力(你的钱太多不允许你用背包),时间复杂度为O(240)O(2^{40})O(240)次方,但如果折半搜索可行的话,时间复杂度就为O(40∗220)O(40*2^{2 ...

  9. 【折半搜索】 洛谷 P4799 [CEOI2015 Day2]世界冰球锦标赛

    我只会看题解和抄题解 普通搜索在这道题中存在的问题 一共最多有40场比赛,每一场比赛有看和不看2种选择,如果求看40场比赛一共有多少选择,最多有2^40种可能性,时间复杂度太高. 折半搜索思路 1.把 ...

最新文章

  1. hello this Word ! I'm coming!
  2. leetcode算法题--搜索旋转排序数组
  3. 益生菌可能导致的“菌血症”与死亡(调研手稿六)
  4. java学习之路--面试之多线程基础
  5. 转载:https://blog.csdn.net/dcrmg/article/details/52939318
  6. python中beautifulsoup_面向新手解析python Beautiful Soup基本用法
  7. redis streams_初步了解Redis Streams以及如何在Java中使用它们
  8. Java用户定义对象的LinkedList
  9. Rhino学习教程——1.5
  10. 【Sonarqube】编程规范-Sonarqube安装与IDEA下使用
  11. 华为手机设置页面黑色_华为手机设置里面的这些功能你都知道吗?
  12. Visio画UML图基本操作及技巧解析
  13. 【.NET重修计划】数组,集合,堆栈的问题
  14. Java编程工具之 word转pdf
  15. ubuntu 13 sogou input method install
  16. 用Gson解析json
  17. 华为无线路由器信道怎么测试软件,华为路由WS5200怎么修改wifi信道
  18. DiffuseBumpCutout‘: invalid subscript ‘boxMax‘ at line 151
  19. carry函数在C语言中用法,常考词的语法与用法:careless, carry, case
  20. 调和平均数的几何意义

热门文章

  1. 基于大连理工大学的情感词汇表的中文情感分析
  2. 丰田将在所有销售店安装充电设备丰田章男社长“建立共享基础设施”
  3. JavPlayer 109 1.09 AI破坏马赛克
  4. VCS IDEA没有Enable Version Control Intergration
  5. 全球及中国建筑涂料市场产量格局与盈利前景状况分析报告2022版
  6. Android获取酷狗音乐歌曲详细信息
  7. 新加坡国际学校IB成绩亮眼,全球40%满分考生来自新加坡
  8. php网页设计课程设计dreamweaver8_Dreamweaver8+PHP动态网站开发从入门到精通(附光盘)...
  9. Java 并发编程_详解 synchronized 和 volatile
  10. linux cups工作原理,Linux打印系统CUPS原理分析