【二进制枚举】【CF Div2 C】
2022.3.4 https://codeforces.com/contest/1646/problem/C
题意: 给一个数, 问可以最少有几个以下的数构成: 1.x!
2.2^x
(x在每次都是任意数) t<=100, n<=10^13, 限时: 3秒 我当时的想法是: 2的某次方就看它的二进制哪里是1就行了, 如果n减去一个阶乘使它的1个数减少那么就减去这个阶乘。如果没有能使1减少的方案就加上n剩余的1的个数 误区: 有的阶乘减去后1的个数并没有减少, 但是再减去另一个阶乘却能去掉大于2个1, 而且也无法保证减去的数不一样 所以啊, 想错了
我去, 看了官方题解,用二进制枚举, 一共就最多1! ~ 15!, 用二进制来枚举, 我去我怎么没想到啊啊啊
哦对了, 还学到一个新东西, 头文件 #include <cstdio>
, 函数 __builtin_popcount (unsigned u)
, 功能 返回u的二进制有多少个1
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N = 2e5+10;
const LL MAXX = 1e12;//注意const后面是long long
LL jch[100];
int idx;
int bist_num(LL nn)
{
int res =0;
while(nn)
{
if(nn&1)res ++;
nn>>=1;
}
return res;
}
void init()
{
jch[1] = 1;
for(int i = 2; jch[i-1]<=MAXX; i++) jch[i] = jch[i-1]*(LL)i, idx=i+1;
}
int main()
{
init();
int t;
cin >> t;
while(t --)
{
LL n, res = 99;
cin >> n;
for(LL i = 0; i < (1<<idx); i ++)
{
LL now = 0, cout = 0;
for(int j = 0; j < idx; j ++)
if(i>>j&1)
now+=jch[j], cout ++;
if(now<=n)res = min(res, cout + bist_num(n-now));
}
cout <<res <<endl;
}
return 0;
}
【二进制枚举】【CF Div2 C】的更多相关文章
- UVA 1151二进制枚举子集 + 最小生成树
题意:平面上有n个点(1<=N<=1000),你的任务是让所有n个点连通,为此, 你可以新建一些边,费用等于两个端点的欧几里得距离的平方.另外还有q(0<=q<=8)个套餐(数 ...
- Good Bye 2015B(模拟或者二进制枚举)
B. New Year and Old Property time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Poj(2784),二进制枚举最小生成树
题目链接:http://poj.org/problem?id=2784 Buy or Build Time Limit: 2000MS Memory Limit: 65536K Total Sub ...
- POJ 2436 二进制枚举+位运算
题意:给出n头牛的得病的种类情况,一共有m种病,要求找出最多有K种病的牛的数目: 思路:二进制枚举(得病处为1,否则为0,比如得了2 1两种病,代号就是011(十进制就是3)),首先枚举出1的个数等于 ...
- hdu 3118(二进制枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3118 思路:题目要求是去掉最少的边使得图中不存在路径长度为奇数的环,这个问题等价于在图中去掉若干条边, ...
- HDU 5025Saving Tang Monk BFS + 二进制枚举状态
3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...
- 南阳OJ-91-阶乘之和---二进制枚举(入门)
题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=91 题目大意: 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为 ...
- 关于二进制枚举-计蒜客-得到整数X
某君有 n个互不相同的正整数,现在他要从这 n 个正整数之中无重复地选取任意个数,并仅通过加法凑出整数 X.求某君有多少种不同的方案来凑出整数 X. 输入格式 第一行,输入两个整数 n,X(1≤n≤2 ...
- BZOJ1688|二进制枚举子集| 状态压缩DP
Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...
随机推荐
- Asp.net Core Filter过滤器异常处理
本文旨在: 1 继承ExceptionFilterAttribute,重写Override OnException(ExceptionContext context)处理异常 2 在.netCore中 ...
- 模型 _meta API ( options )
模型 _meta API class Options[源代码] 模型 _meta API是Django ORM的核心.它使系统的其他部分(如查找,查询,表单和管理员)能够了解每个模型的功能. API可 ...
- 5月9日 python学习总结 外键、表之间的关联关系、修改表、清空表内容、复制表
一.外键foreign key 外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除 ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(摄取、修改数据 DML)
插入数据 要将数据插入分布式表,您可以使用标准 PostgreSQL INSERT 命令.例如,我们从 Github 存档数据集中随机选择两行. INSERT http://www.postgresq ...
- C++ 关于map,function的简单应用
map<string,function<int(int, int)>> funs = { {"+", add}, {&qu ...
- Java使用多线程异步执行批量更新操作
import com.google.common.collect.Lists; import org.apache.commons.collections.CollectionUtils; impor ...
- 集成SpringCloudBus,但没有总线通知更改
配置服务端别忘了添加以下2个依赖 implementation("org.springframework.cloud:spring-cloud-config-server")imp ...
- FiddlerEverywhere注册账号进行激活失效问题
有关FiddlerEverywhere通过邮件激活账号时,激活链接提示已失效问题:这个链接有进行一个讨论(https://www.telerik.com/forums/unable-to-activa ...
- memcached 和服务器的 local cache(比如 PHP 的 APC、 mmap 文件等)相比,有什么优缺点?
首先,local cache 有许多与上面(query cache)相同的问题.local cache 能够利 用的内存容量受到(单台)服务器空闲内存空间的限制.不过,local第 109 页 共 4 ...
- spring的核心模块有哪些?
Spring的七个核心模块,供大家参考,具体内容如下 1.Spring core:核心容器 核心容器提供spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关 ...