The 36th ACM/ICPC Asia Regional Shanghai Site 4016(dfs+剪枝)
来源:互联网 发布:淘宝微淘公布在哪里看 编辑:程序博客网 时间:2024/05/18 22:52
Magic Bitwise And Operation
题意:n个数字取出k个数字进行“与”操作,求最少的结果。
思路:首先明白“与”操作的结果,显然应先将数字排列,小的先取必然最优。下面dfs+剪枝即可,
剪枝:
1. dfs路径上不断更新ans,不用等搜到底,“与“”操作只会越来越小;
2. 与后缀“与”如果没有ans小就剪枝;
代码:
#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL INF = 0x3f3f3f3f3f3f3f3f;LL a[45], sum[45], ans;int vis[45], n, k; void dfs(int index, int cnt, LL res){ if(res < ans) ans = res;//剪枝1 if(index == n || cnt == k) return; if((res & sum[index]) >= ans) return;//剪枝2 dfs(index + 1, cnt + 1, res & a[index]);//选择 dfs(index + 1, cnt, res);//不选择 } int main(){ int T; scanf("%d", &T); for(int cas = 1; cas <= T; cas++){ scanf("%d%d", &n, &k); for(int i = 0; i < n; i++) scanf("%lld", &a[i]); sort(a, a + n); sum[n - 1] = a[n - 1]; for(int i = n - 2; i >= 0; i--) sum[i] = sum[i + 1] & a[i]; ans = INF; dfs(0, 0, (1LL << 61) - 1); printf("Case #%d: %lld\n", cas, ans); } return 0;}
阅读全文
0 0
- The 36th ACM/ICPC Asia Regional Shanghai Site 4016(dfs+剪枝)
- hdu 4011 The 36th ACM/ICPC Asia Regional Shanghai Site —— WarmupWorking in Beijing
- The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup
- HDU4021 24 Puzzle The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
- HDU4023 Game The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
- hdu 4027 Can you answer these queries? The 36th ACM/ICPC Asia Regional Shanghai Site
- The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup
- HDU4022-map+multiset--The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
- The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest(HDU4021-4030)
- The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup hdu 4016 Magic Bitwise And Operation
- HDU 4018 Parsing URL 正则表达式 The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup
- 4046 Panda(The 36th ACM/ICPC Asia Regional Beijing Site —— Online Contest)
- The 36th ACM/ICPC Asia Regional Dalian Site 1006 The kth great number
- The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest Find the maximum
- The 36th ACM/ICPC Asia Regional Dalian Site 1003 The Frog's Games
- The 36th ACM/ICPC Asia Regional Dalian Site 1004 The kth great number
- The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest
- The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest hdu4001
- linux centos7 安装jdk、tomcat、mysql、笔记
- 关于Timer定时器
- Python判断三角形
- 【LeetCode算法练习(C++)】String to Integer (atoi)
- Python多线程编程之thread和threading
- The 36th ACM/ICPC Asia Regional Shanghai Site 4016(dfs+剪枝)
- BZOJ 2005 能量采集 (Mobius反演)
- linux命令之jps
- Android 6.0+ 实现白色状态栏(白底黑字)
- 代码质量管理:SonarQube + Jenkins Pipeline配置
- Centos 7安装完成后需要做的事情
- 167. Two Sum II
- 国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快
- iOS 事件传递