博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 437B The Child and Set
阅读量:6693 次
发布时间:2019-06-25

本文共 1104 字,大约阅读时间需要 3 分钟。

题目链接:

開始是想到了这样的情况,比方lowbit之后从大到小排序后有这么几个数,200。100,60。50。S = 210。那先选了200肯定就不行了,所以写了个DFS。果断TLE。后来想了想lowbit之后的值都是最高位是1。其余位都是0的二进制数,所以上边的情况是不会出现的,至于原因我感觉我说不清楚。。

#include 
#include
#include
#include
#include
using namespace std;const int MAX_N = 100000 + 100;struct Node{ int val, i;};Node arr[MAX_N];int cmp(Node a, Node b){ return a.val > b.val;}int lowbit(int x){ return x & (-x);}int s, limit,sum = 0;int path[MAX_N], num;int main(){ scanf("%d%d", &s, &limit); for(int i = limit; i >= 1; i--) { arr[i].val = lowbit(i); arr[i].i = i; } sort(arr + 1, arr + 1 + limit, cmp); int sum = 0; for(int i = 1; i <= limit; i++) { if(arr[i].val + sum > s) continue; sum += arr[i].val; path[num++] = arr[i].i; if(sum == s) break; } if(sum == s) { printf("%d\n", num); printf("%d", path[0]); for(int i = 1; i < num; i++) printf(" %d", path[i]); puts(""); } else puts("-1"); return 0;}

转载地址:http://zqcoo.baihongyu.com/

你可能感兴趣的文章
LaTeXila:Linux 的多语言 LaTeX 编辑器简介
查看>>
【RAC安装故障】multiple user has uid 0
查看>>
js 原型的内存分析
查看>>
安卓建立项目后,在项目上出现小红叉(已解决)!
查看>>
Java数据结构——哈希表
查看>>
Android Open Accessory Protocol 2.0
查看>>
FFmpeg编程学习笔记二:音频重採样
查看>>
JavaScript(select onchange)的网页跳转的简单实现
查看>>
打素数表
查看>>
构造方法私有化和单例模式
查看>>
iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
查看>>
CentOS 7在桌面添加快捷方式
查看>>
.frm,.myd,myi转换为.sql导入数据库
查看>>
linux 中\r
查看>>
Centos&RHEL 6安装图形化
查看>>
计算缓存大小和清除缓存
查看>>
Web服务精讲–搭个 Web 服务器(二)
查看>>
XUtils===XUtils3框架的基本使用方法
查看>>
windows下 安装Kali Linux到 U盘的方法
查看>>
Jenkins配置MSBuild编译.net4.6的项目
查看>>