[Agc029B]Powers of two_贪心_树形dp
Powers of two
题目链接:https://atcoder.jp/contests/agc029/tasks/agc029_b
数据范围:略。
题解:
可能一点思路都没有。
但是我们发现:如果一个数选择一个比自己小的数组合的话,这个数是唯一确定的。
我们根据这个建一棵树,每个点最多只有一个父亲。
现在让求出最多数量的边,使得没有公共端点。
显然从叶子开始往根选取。
也就是从大到小,依次选取。
代码:
#include <bits/stdc++.h>
#define N 200010
using namespace std;
typedef long long ll;
char *p1, *p2, buf[100000];
#define nc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1 ++ )
int rd() {
int x = 0, f = 1;
char c = nc();
while (c < 48) {
if (c == '-')
f = -1;
c = nc();
}
while (c > 47) {
x = (((x << 2) + x) << 1) + (c ^ 48), c = nc();
}
return x * f;
}
ll bin[40];
map <ll, int> MP;
ll a[N];
int main() {
bin[0] = 1;
for (int i = 1; i <= 35; i ++ ) {
bin[i] = bin[i - 1] << 1;
}
int n = rd();
for (int i = 1; i <= n; i ++ ) {
a[i] = rd();
MP[a[i]] ++ ;
}
sort(a + 1, a + n + 1);
int ans = 0;
for (int i = n; i; i -- ) {
if (MP[a[i]] > 0) {
MP[a[i]] -- ;
for (int j = 32; j; j -- ) {
if (bin[j] - a[i] <= a[i] && bin[j] > a[i]) {
ll re = bin[j] - a[i];
if (MP.count(re) && MP[re] > 0) {
MP[re] -- ;
ans ++ ;
break;
}
}
}
}
}
cout << ans << endl ;
return 0;
}
[Agc029B]Powers of two_贪心_树形dp的更多相关文章
- [bzoj4027][HEOI2015]兔子与樱花_贪心_树形dp
兔子与樱花 bzoj-4027 HEOI-2015 题目大意:每个点有c[i]朵樱花,有一个称重m, son[i]+c[i]<=m.如果删除一个节点,这个节点的樱花或移动到它的祖先中深度最大的, ...
- B20J_4027_[HEOI2015]兔子与樱花_树形DP
B20J_4027_[HEOI2015]兔子与樱花_树形DP 题意: 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编 ...
- BZOJ_3124_[Sdoi2013]直径_树形DP
BZOJ_3124_[Sdoi2013]直径_树形DP Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵 ...
- BZOJ_1864_[Zjoi2006]三色二叉树_树形DP
BZOJ_1864_[Zjoi2006]三色二叉树_树形DP 题意: 分析:递归建树,然后DP,从子节点转移. 注意到红色和蓝色没有区别,因为我们可以将红蓝互换而方案是相同的.这样的话我们只需要知道当 ...
- BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash
BZOJ_3573_[Hnoi2014]米特运输_树形DP+hash 题意: 给你一棵树每个点有一个权值,要求修改最少的权值,使得每个节点的权值等于其儿子的权值和且儿子的权值都相等. 分析: 首先我们 ...
- BZOJ_1040_[ZJOI2008]骑士_树形DP
BZOJ_1040_[ZJOI2008]骑士_树形DP 题意: Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪 ...
- BZOJ_1060_时态同步_树形DP
BZOJ_1060_时态同步_树形DP 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1060 分析:水水的树形DP. 用儿子的最大值更新父亲, ...
- BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP
BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP 题意:Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...
- BZOJ_4726_[POI2017]Sabota?_树形DP
BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...
随机推荐
- 028_切割 Nginx 日志文件(防止单个文件过大,后期处理很困难)
mkdir /data/scriptsvim /data/scripts/nginx_log.sh #!/bin/bashlogs_path="/usr/local/nginx/logs/& ...
- RX232串口发送
在进行工程调试的时候有时候需要对变量进行观察,SingnaTap II Logic Analyzer 只能对管脚进行观察,所以要观察内部的变量必须把内部的变量进行输出.一种方法是直接把变量定义成管脚通 ...
- 【概率论】4-3:方差(Variance)
title: [概率论]4-3:方差(Variance) categories: - Mathematic - Probability keywords: - Variance - Standard ...
- nodejs基础(管道、流)实现:复制、压缩、加密、解压,解密,写入文件
stream流 都是events.EventEmitter的一个实例,都可以来创建自定义事件(也就是说,流是一个事件的实例) 在nodejs中 对http的请求与响应都是用流来实现的,请求就是一个输入 ...
- AE开发之shp转txt
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- sql mode 问题及解决 错误代码:1055 this is incompatible with sql_mode=only_full_group_by
数据库升级到5.7.21后,一个正常的分组后按日期排序,并返回数据的语句开始报错: 语句如下: SELECT id,title,add_time FROM `message` GROUP BY add ...
- 【java】Java.math.BigDecimal.subtract()方法实例
java.math.BigDecimal.subtract(BigDecimal subtrahend) 返回一个BigDecimal,其值为 (this - subtrahend), 精度为 max ...
- Java-ZipUtil
Zip 压缩工具类,不支持压缩空文件夹. 简单版 import java.io.FileOutputStream; import java.io.IOException; import java.ni ...
- linux安装后需要进行的一些基本设置
修改网络: 在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-ens33 然后重启网络服务:systemctl restart network.servic ...
- centos出现磁盘坏道,怎么检索和修复
故障现象,在/var/log/message这个目录中出现下面的error: [ [ [ [ [ [ [ [ [ [ dmesg的输出结果也是上面的error. 1.检测下坏道,将结果保存在bb.lo ...