Twenty Questions UVA - 1252 状压dp 子集生成

抓包抖音充值页面实现微信支付宝充值抖币,可提供api 抓包抖音充值接口教程,实现微信支付宝充值抖币收款通道 阅读详情

题意有点绕 等于说是求最优策略下 即排除方案最优的情况下   需要排除最多次的集合的排除次数  详见代码注释

#include<bits/stdc++.h>
const int maxn=13;
char objects[300][200];
int d[1<<maxn][1<<maxn],cnt[1<<maxn][1<<maxn],vis[1<<maxn][1<<maxn];
//d[s][a] s a状态下的最小次数 cnt[s][a]满足这个集合的字符串数 vis[s][a]记忆化
using namespace std;
int n,m;
int dp(int s, int a){
	if(cnt[s][a]<=1)return 0;
	if(cnt[s][a]==2)return 1;
	int &ans=d[s][a];
	if(vis[s][a])return ans;
	vis[s][a]=1;
	ans=m;
	for(int k=0;k<m;k++){
		if(!(s&(1<<k))){
			int s2=s|(1<<k),a2=a|(1<<k);
			if(cnt[s2][a2]>=1&&cnt[s2][a]>=1){
				int need=max(dp(s2,a2),dp(s2,a))+1;
				ans=min(ans,need);
			}
		}
	}
	return ans;

}
void init() {
  for(int s = 0; s < (1<<m); s++) {
    for(int a = s; a; a = (a-1)&s)//a是s的子集 cnt[s][a]记录满足这个状态的物品有多少个
      cnt[s][a] = 0;
    cnt[s][0] = 0;
  }
  for(int i = 0; i < n; i++) {
    int features = 0;
    for(int f = 0; f < m; f++)
      if(objects[i][f] == '1') features |= (1<<f);
    for(int s = 0; s < (1<<m); s++)
      cnt[s][s & features]++; //计算满足s a的串个数
  }
}

int main(){

	while(scanf("%d%d",&m,&n)==2&&n){
			memset(vis,0,sizeof(vis));
		for(int i=0;i<n;i++)scanf("%s",objects[i]);
		init();
		printf("%d\n",dp(0,0));


	}
	return 0;
}

 

Android16 RK3576修改亮度调节为线性调节 文章摘要: 本文分析了Android系统中亮度调节的非线性问题,并提供了线性化改造方案。首先通过追踪Settings和SystemUI代码,发现亮度调节使用了BrightnessUtils类中的非线性Gamma空间转换算法。然后重点修改了BrightnessUtils类,将原有的Hybrid Log Gamma(HLG)算法替换为简单的线性映射公式。最后在自定义工具窗口中实现了基于系统标准接口的亮度调节功能,通过SeekBar的0-100%百分比值线性映射到1-255的系统亮度值。改造后的亮度调节更加直观, 阅读详情

相关推荐

飞腾E2000单板移植openEuler 5.10内核与麒麟系统的实践指南

本文详细介绍了在飞腾E2000单板上移植openEuler 5.10内核并搭配麒麟系统根文件系统的完整实践指南。内容涵盖从编译环境搭建、内核配置裁剪、设备树适配,到根文件系统准备、U-Boot引导配置及启动调试的全流程,旨在帮助开发者打造一个内核版本新、软件生态全的稳定混合系统。

weixin_29309475的博客 258

牛客练习赛49 B 筱玛爱阅读 (状压DP,子集生成)

链接:https://ac.nowcoder.com/acm/contest/946/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262875K,其他语言525750K 64bit IO Format: %lld 题目描述 筱玛是一个热爱阅读的好筱玛,他最喜欢的事情就是去书店买书啦! 一天,他来到一家有 n n本书的书店,筱玛十分快乐,决定把这家店里所有的书全...

weixin_30824599的博客 215

Jetpack Compose Navigation实战:从基础到高级导航模式

本文全面解析Jetpack Compose Navigation在Android开发中的应用,从基础导航实现到高级模式(如单任务/单顶模式),涵盖参数传递、嵌套导航、深层链接等核心功能。通过实战代码示例展示如何优化导航性能,并与ViewModel、Hilt等架构组件整合,为开发者提供高效的Compose导航解决方案。

pz890123456的博客 372

UVA 1252 Twenty Questions 状压DP

简单状压DP: 当前状态s如果这个物品有状态a个属性,枚举下一个要猜测的特征k dp[s][a]=min(dp[s][a],max(dp[s+k][a],dp[s+k][a+k])+1);dp[s][a]=min(dp[s][a],max(dp[s+k][a],dp[s+k][a+k])+1); 4643 - Twenty QuestionsAsia - Tokyo - 2009/201

码代码的猿猿 1248

新手也能搞定!用ADS 2023从零设计一个超宽带Wilkinson功分器(附完整版图)

本文详细介绍了如何使用ADS 2023从零开始设计超宽带Wilkinson功分器,涵盖介质板参数设置、微带线计算优化、版图生成验证等关键步骤。通过实例演示和常见问题排查,帮助射频工程新手快速掌握功分器设计技巧,提升设计效率。

weixin_42692935的博客 476

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南)

本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。

efc12345678的博客 304

uva 1252 Twenty Questions 状压dp

集合上的dp,看小紫书想了好久~ 有n个物体,m个特征,最少询问多少次能保证猜到是哪个问题。 首先在读入的时候将每个物体转化为一个二进制整数,用一个集合s来表示已经询问了哪些特征。 用d(s,a)来表示询问了集合s的特征,有集合a个特征已经具备,还需要问多少个特征的最小值。a一定为s的子集。 则状态方程为 d(s,a) = min{  max(d(s+{k},a+{k}),(s+{k},a

catfish的专栏 688

【实战】Python 携程酒店价格实时抓取爬虫项目全解析

摘要:本文介绍了一个基于Python的携程酒店价格实时抓取系统开发方案。系统采用Requests、BeautifulSoup和Selenium等技术栈,实现了多城市、多日期的酒店数据采集,包括价格、评分、位置等关键信息。通过请求头伪装、IP代理、随机等待等反爬策略,有效应对携程的反爬机制。系统支持数据清洗、去重和CSV/Excel导出,并提供了多线程优化、代理池集成等进阶方案。本文详细阐述了技术原理、代码实现和优化策略,同时强调了数据采集的合法合规性,为旅游行业数据分析提供了可靠的数据获取方案。

2503_91057718的博客 2605

【题解】UVA1252:Twenty Questions

@vjudge 状压 可以这样设计状态 dfs(s,a)dfs(s,a)dfs(s,a)表示当前已经猜测的集合,目前还没有确定的数在sss集合里面的共同特征为aaa,还要猜几次 枚举下一次猜的位为kkk 对于当前状态的答案是 sum=max(dfs(s∣2k,a),dfs(s∣2k,a∣2k))+1sum=max(dfs(s|2^k,a),dfs(s|2^k,a|2^k))+1sum=max(dfs(s∣2k,a),dfs(s∣2k,a∣2k))+1 对于每个kkk,取答案的最小值 至于边界,若满足状态(s

ModestCoder_的博客 457

杰理-tone

低音质格式切换高音质格式:切换提示音格式,未导出,编译下载没有提示音;提示音导出,再次编译下载,提示音正常高音质格式切换低音质格式:不需要导出,直接编译下载,提示音正常。

m0_67447112的博客 954

【Python】秋招机考 —— 2025/9/17 华为 AI 方向

秋招机考,华为 AI,使用 Python 完成编程。

一杯水果茶!足矣~ 1163

uva 1252 - Twenty Questions(记忆化搜索)

题目链接:uva 1252 - Twenty Questions 题目大意:给出m和n,表示有n个长度为m且由01组成的字符串,要求询问k个位置,以区分这n个字符串,每次询问一个位置,将会得到该位置的字符,注意询问k次的位置并非固定: 例:5 4 10100 11000 00001 00010 ans = 2;询问了第1个位置后,区分开了(1)(2)和(3)(4),然而区分(

不慌不忙、不急不躁 1533

20251121更新纷玩岛

【代码】20251121更新纷玩岛。

猫敷雪 1017

UVA-1252 Twenty Questions (状压dp)

题意:有n件物品,每件物品有m个特征,可以对特征进行询问,询问的结果是得知某个物体是否含有该特征,要把所有的物品区分出来(n个物品的特征都互不相同)最小需要多少次询问? 分析:要做的是鉴别出来我心里所想的那一个物品(0-1串),所以鉴别出来一个就可以了,而又不知道心里想的是哪一个,所以取需要询问次数最多的,取每个物品(0-1串)能被鉴别出来需要的次数中次数最大的,才能保证所有物品(0-1串)在该...

常胜将军的博客 230

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

uva1252 Twenty Questions 状压dp

// uva1252 Twenty Questions 状压dp // // 解题思路: // // 状压dp. // // dp[s,a]表示已经问的特征的集合为s,想象中物品的集合为a最少还要问 // 多少次.则状态转移为 // dp[s,a] = min(dp[s,a],max(dp[s+(k),a],dp[s+(k),a+(k)])+1); // 我们已经知道已询问的特征集为

TIMELIMITE的专栏 530

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

uva 1252——Twenty Questions

题意:给定n个物品,每个物品用01串表示,表示具备与否某个特征,然后每次可以询问一个特征,问最少询问几次能够确定一个物品。 思路:状压Dp,将这些数的特征压缩成一个数,把询问过的和没询问的都用一集合表示,然后枚举没有询问的记忆化搜索。 code: #include #include #include #include #include #include #incl

坚持不懈 386

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【UVa】【DP】1252 Twenty Questions

UVa 1252 Twenty Questions 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门◆

IDDFS 241

[UVA1252] Twenty Questions && 状压DP

感觉状压DP都是无比的神啊 好难想啊= =  看了LRJ分析才搞出来的  对于cnt的处理 假设某物体的特征为A 枚举到的状态为s 那么s & A这个已有特征集里面就有一个可行物体A 所以要++ 开始(A[i][j] - '1') 打成了(A[i] - '1') 也不报个错 长教训了 #include #include #include #include using name

shiyukun1998的专栏 447

UVA 1252 Twenty Questions

状态压缩DP 题意: 有n个长度为m的二进制串,每个都是不同的。为了把所有字符串区分开,你可以询问,每次可以问某位上是0还是1。问最少提问次数,可以把所有字符串区分开来。 解法: 设dp[s1][s2]为询问集合为s1,答案为s2,还需要询问几次能区分开。所以有: dp[s1][s2] = 0 ,当和答案s2相同的串个数小于等于1时。 dp[s1][s2] = min(dp

= = 1497

Twenty Questions UVA - 1252 (状压DP)

题意如下: 给出M个特征和N个物体。每个物体有M个特征中的某一些。现在给出N个物体中的一个物体,可以询问是否具有某项特征,问至少需要多少次询问,才能确认这个物体。 题目链接:https://vjudge.net/problem/UVA-1252 题目分析:因为特征数最多只有11个,很容易的想到状压DP。而且这个问题是一个取与不取得问题,那状态肯定有两种状压方式。对于当前阶段,就有取和不取两个

lwgkzl的博客 488

UVa 1252 - Twenty Questions(记忆化搜索,状态压缩dp)

题目大意 有n个长度为m的二进制串,每个都是不同的。 为了把所有字符串区分开,你可以询问,每次可以问某位上是0还是1。 问最少提问次数,可以把所有字符串区分开来。

D_Double's Journey 3902

UVA - 1252 Twenty Questions(状态压缩&记忆化搜索)

题目链接:UVA - 1252 Twenty Questions题意 有n(0思路 从m的数据范围以及题意,很容易可以想到状态压缩,用二进制位来表示集合。 dp(i, j) = c i表示已经询问过的特征的集合 j表示已经确定我选的物体具有的特征的集合 那么显然的,j一定是i的子集。 c表示当前状态还需询问的次数 dp(i, j) = 1 + min(

YiShi's Blog 1516

UVa1252 Twenty Questions

传说中的状态压缩DP。。把某一类状态压缩成

A Cube Master 842

UVA1252 Twenty Questions (状压dp)

题目大意: 给你两个数n,m 再给你n个物品的特征值用长度为m的二进制数字表示 随机选一个物品让你来猜 问你最少猜多少次能猜中 思路: 状压dp 设s表示已经猜过的物品的特征值 a表示s中目标物品包含的特征值 用d[s][a]表示状态 之后猜的时候分成两部分 枚举二进制的每位数字 一部分是不包含这个特征值的情况,一个部分是包含这个特征值的情况 然后因为要最少猜多少次才能猜中嘛 这里两个数字要取最大值,然后枚举的时候取最小值 还有猜到只剩1个时候就说明猜完了 只剩两个的时候再猜一次就好了 具体看代码 AC代码

m0_53807008的博客 209

Twenty Questions UVA - 1252 (状压dp)

Twenty Questions UVA - 1252 题意:n个物体,每个物体有m个特征,问最少询问几次可以唯一确定一个物体。 d[s][a]表示已经问了s中为1的位置,状态为a时最少还需要问几次 (简言之s保存的是询问过的位置。。。) 【我们每次把物品中已经询问的位置(即s为1的那些位置)都和状态a一致的选出来,如果只有一个,说明我们已经找到,否则,继续询问备选缩小范围。】...

weixin_30347009的博客 153

状压DP+记忆化搜索 UVA 1252 Twenty Questions

题目传送门 1 /* 2 题意:给出一系列的01字符串,问最少要问几个问题(列)能把它们区分出来 3 状态DP+记忆化搜索:dp[s1][s2]表示问题集合为s1。答案对错集合为s2时,还要问几次才能区分出来 4 若和答案(自己拟定)相差小于等于1时,证说明已经能区分了,回溯。否则还要加问题再询问 5 */ 6 /****...

weixin_34341117的博客 115
上一篇: Headmaster's Headache UVA - 10817 dp集合构造
下一篇: Fund Management UVA - 1412 状压dp 状态的表示
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值