UVa1252 Twenty Questions

全国30米分辨率逐年植被覆盖度(FVC)数据集 植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。往往参照《土壤侵蚀分类分级标准》,将植被覆盖度划分为4个等级:<30%为低覆盖度、30%—45%为中低覆盖度、45%—60%为中覆盖度、>60%为高覆盖度。本数据集包括1986至2022年间,全国植被覆盖度数据,FVC范围值为0-1,数据为浮点型,GeoTIFF格式。NDVImax 和NDVImin分别为区域内最大和最小的NDVI值。 阅读详情

        传说中的状态压缩DP。。把某一类状态压缩成二进制位。dp(s,a)代表的是提问集合为s,确认具备状态集合为a的情况下,仍需最少提问次数。这个解法妙在两个地方,第一使用int表示一个集合,一个二进制位表示一个元素,这个大家都知道;第二是很好地概括了边界条件,分析出了在什么情况下不需要进一步提问,设置了一个假象的物体,其实这个物体可以指代所有存在的物体。。在状态转移的过程中,min函数是为了最优化提问,不问不必要的问题,max函数是为了考虑所有物体中,可能的最坏情况。注意到求解过程中会计算一些不存在的状态,但是好在不存在的状态不会影响结果。

        但是这道题还是有让我搞不明白的地方,提问的时候顺序应该是无关紧要的,但是如果我人为规定了提问顺序,就会WA。(见代码注释部分)


#include <iostream>    
#include <stdio.h>    
#include <cmath>    
#include <algorithm>    
#include <iomanip>    
#include <cstdlib>    
#include <string>    
#include <memory.h>    
#include <vector>    
#include <queue>    
#include <stack>    
#include <map>  
#include <set>  
#include <ctype.h>    
#define INF 10000000
#define ll long long
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))
#define MAXN 100010

using namespace std;  

int obj[130];
int m,n;

int strtobit(char* str){
	int num=0;
	for(int i=0;i<m;i++){
		if(str[i]=='1')num+=(1<<(m-i-1));
	}
	return num;
}

int dp[3000][3000];

int fun(int s,int a){
	if(dp[s][a]!=-1)return dp[s][a];
	int cnt=0;
	for(int i=1;i<=n;i++){
		if( (obj[i]&s)==a)cnt++;
	}
	if(cnt<=1){
		dp[s][a]=0;
		return 0;
	}
	int re=INF;
	
	int k=m;
	/*for(k=0;k<m;k++){
		if( s&(1<<k) ){
			break;
		}
	}*/
	
	while(k--){
		if( s&(1<<k) ) continue;
		int t=1<<k;
		re=min( re , max(fun(s^t,a^t),fun(s^t,a))+1 );
	}

	dp[s][a]=re;
	return re;
}

int main(){
	while(cin>>m>>n){
		if(m==0&&n==0)break;
		memset(dp,-1,sizeof(dp));
		
		char str[15];
		for(int i=1;i<=n;i++){
			cin>>str;
			obj[i]=strtobit(str);
		}
		
		cout<<fun(0,0)<<endl;
	}
	return 0;
}


C语言读取CSV文件的方法1 逗号分隔值文件格式(CSV),以纯文本形式存储表格数据,它是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。本文介绍利用C语言标准库中的一个字符串处理函数 strtok()来对CSV文件内容进行读取的基本方法 阅读详情

相关推荐

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5569

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

Consider a closed world and a set of features that are defined for all the objects in the world. Each feature can be answered with ``yes" or ``no". Using those features, we can identify any object fro

Remilia's 2176

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

Uva1252 详解 20个问题 Twenty Questions

嗯

JACK_JYH的博客 969

Python电梯II

输入数据有若干组(最多不超过1000组),每组数据的第一行为四个如题目中所示的整数N,u,d,s,由空格分隔开。第二行为不同楼层需要上下楼的请求, 最多不超过1000个。每个请求的格式为"from-to",其中"from"和"to"为所在楼层和要到达的楼层,保证from!=to。

沐风—云端行者 910

【网络安全】零基础入门网络安全劝退指北

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一起探讨学习。 如何入门 简单了解网络安全 网络安全就是指的确保网络系统中的数据不被别人破坏,而网安工程师就是涉及程序来维护网络安全。 网安方向有很多职位,比如安全产品工程师,安全分析师,数据恢复工程师,网络架构工程师,安全编程工程师,以及网络集成工程师等。 工作内容主要包括: 安全评测,风

互联网老辛 4590

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

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

D_Double's Journey 3902

【数据集】MODIS 的 MOD07 大气廓线产品概述及下载

MODIS 的 MOD07 大气廓线产品概述及下载

WW、forever的博客 552

UVA 1252-Twenty Questions(状态压缩DP+子集枚举)

题目大意:有n个物品,每个物品有m个特征,每个物品的每个特征都可能有或没有,现在假定某个物品,通过询问某些特征来确定这个物品,问最多需要多少次就可以确定物品。 每次询问之后可能根据答案不同来采取不同的进一步询问的策略。 用d[S][S0]表示目前询问了S,得到的回答是S0(即那个物品在S中有S0这些特征),最少还需询问多少次。枚举下一次询问的特征完成递推。最终d[0][0]就是答案。S

dilemma的专栏 1014

Multisim14.0仿真应用设计(十六)74LS138译码器应用仿真

74LS138为3线-8线译码器。

zhusl6688的博客 2982

YOLOv8【第十章:多任务扩展深度篇·第16节】车道线检测——基于 YOLOv8-Seg 的车道线分割与拟合!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1万+

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 1517

【WorkBuddy专栏39】零基础也能做小程序——WorkBuddy微信小程序开发完全指南

【WorkBuddy专栏39】零基础也能做小程序——WorkBuddy微信小程序开发完全指南

AI人人懂 3175

【UVa】【DP】1252 Twenty Questions

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

IDDFS 241

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

uva 1252——Twenty Questions

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

坚持不懈 387

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【UVA1252】Twenty Questions

题面 有n(n≤128)个物体,m(m≤11)个特征。每个物体用一个m位01串表示,表示每个特征是具备还是不具备。我在心里想一个物体(一定是这n个物体之一),由你来猜。你每次可以询问一个特征,然后我会告诉你:我心里的物体是否具备这个特征。当你确定答案之后,就把答案告诉我(告知答案不算“询问”)。如果你采用最优策略,最少需要询问几次能保证猜到?例如,有两个物体:1100和0110,只要询...

Ashley_2013的博客 158

Twenty Questions UVA - 1252

题目传送门思路:这个题目很巧妙啊,一看就是一个状压DP,但是这个题我觉得难点在于如何求得状态转移以后的状态,一开始想了很久都没有想出来,然后看了lrj的书上写的,确实十分的巧妙,我们用dp[s][a]来表示当前已经询问了集合s的问题,具有集合a特征的还要询问最少多少次才能求得最优解,然后我们可以预处理一个数组来记录每一个状态下有多少个满足的物体。#include <algorithm> #inclu

且听风吟 466

【Uva 1252】Twenty Questions

【Link】: 【Description】 给你n个物体,每个物体都有m种属性; (每个物体的属性都能和别的物体的属性区别) 现在,你已知这n个物体; 然后让一个人心里想一个物体 你可以问这个人,这个物体是否有第i个属性; 显然,这样最后是肯定能问出来你心里所想的那个物体的; 问你,在最坏的情况下,最少要问多少次才够; 【Solution】 ...

AWCXV 80

UVA1252 Twenty Questions

DFS记忆化搜索,状态压缩DP

H992109898的博客 536

【题解】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

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

uva1252 Twenty Questions

A - Twenty Questions Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 1252 Appoint description: Description Download as PDF Consider a closed w

eeeaaaaa的专栏 463

UVa 1252 Twenty Questions

Consider a closed world and a set of features that are defined for all the objects in the world. Each feature can be answered with ``yes" or ``no". Using those features, we can identify any object fro

c21c21的专栏 367

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

【题解】UVA1252 Twenty Questions

题意 有 n 个物品,每个物品有 m 个特征,每次询问一个特征,求最少多少次能确定所求物品。 Solution: 考点:状压 dp 。 首先不能暴力枚举,这样第二个样例输出 5。但是它启发我们当某一组特征 cnt[S]=1 时答案是唯一的。 因为决策是变化的,所以考虑设 dp[S][T] 表示当前问了集合 S 的特征,其中集合 T 的答案是 1 的最小询问数。显然当 cnt[S][T]=1 时返回 0 ,cnt[S][T]=0 是不合法状态。 时间复杂度 O(m3^m+n2^m) 。 思考:询问顺序是否对答

cqbzlydd的博客 248
上一篇: UVa12093 Protecting Zonk
下一篇: UVa10817 Headmaster's Headache
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值