UVa1252 Twenty Questions

PostgreSQL:十五. 性能优化 十五. 性能优化 优化简介: PostgreSQL优化一方面是找出系统的瓶颈,提高PostgreSQL数据库整体的性能; 另一方面,需要合理的结构设计和参数调整,以提高用户操作响应的速度; 同时还要尽可能的节省系统资源,以便系统可以提供更大负荷的服务。 PostgreSQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。例如: 通过优化文件系统,提高磁盘IO的读写速度; 通过优化操作系统调度策略,提高PostgreSQL的在高负荷情况下负载能力; 优化表结构、索引、查询 阅读详情

        传说中的状态压缩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;
}


FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例 上一篇文章种总结了MultiBoot 关键技术,分为:一个指令、二种位流、三种方式、四样错误。针对以上四句话我们接下来详细分析。在开始解析之前我们先准备两个文件,一个是控制LED闪烁的文件,通过更换引脚约束可以控制不同LED,这样就可以指示是启动MultiBoot位流还是Golden位流。还有一个文件就是uart发送文件,会指示启动的位流格式和启动地址。文件都比较简单,就不列举了,文件详见文后的链接。对于 IPROG 指令目前有三种实现方式,分别为:1)通过约束脚本添加;2)通过ICAPE2原语 阅读详情

相关推荐

Python爬虫实战:5分钟搞定大众点评评论数据抓取(附完整代码)

本文详细介绍了使用Python爬虫高效获取大众点评评论数据的5个关键技巧,包括环境配置、智能页面解析、反反爬策略、数据存储与容错设计以及性能优化。通过实战案例和完整代码,帮助开发者快速掌握文本挖掘技术,适用于市场分析和商业决策。

weixin_30660027的博客 290

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

51单片机基础知识

前言 周末闲着无聊,以后定时更新一期关于51单片机的学习案例,以供大家平时参考使用。至于单片机,你可以理解为人的大脑,而人各项身体器官的运作需要意识给到大脑,然后大脑再驱动我们的中枢神经进行相应的动作,这里的意识可以理解为我们要写的程序,而人的器官相当于各种输出设备,例如我们以后要学的LED、电机、各种传感器等等。学好单片机能让你找到一份相对不错的工作,当然越可观的东西也是要付出相应努力的。 一、51单片机是什么? 通常我们一说到 51 单片机,指的都是兼容IntelMCS-51体系架构的一系列单片机,而

qq_43537819的博客 6905

Uva1252 详解 20个问题 Twenty Questions

嗯

JACK_JYH的博客 969

Verilog基本代码结构及常用语句always、begin...end解读

Verilog基本代码结构及常用语句always、begin...end解读 线性反馈以为寄存器(LFSR)

weixin_62380586的博客 1万+

保姆级教程:用Multisim仿真快速上手二极管、MOSFET和IGBT的开关特性

本文提供了一份详细的Multisim仿真教程,帮助读者快速掌握二极管、MOSFET和IGBT的开关特性。通过搭建实验电路、观察波形特征和参数影响分析,深入解析了反向恢复过程、米勒平台现象和拖尾电流效应。适合电力电子初学者和工程师通过仿真建立直观理解,提升电路设计能力。

weixin_29290863的博客 499

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

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

D_Double's Journey 3902

上海计算机学会2020年5月月赛C++乙组T2经济普查

中国正在以前所未有的力度推进脱贫攻坚,国家计划在2020年使得在现行标准下的贫困人口实现全面脱贫,为此,需要对居民的经济状况进行普查。 题目描述 给定一个正整数n,表示人口数量。一开始,每个居民拥有的财产记为a1​,a2​,⋯,an​,财产可能发生两种变化: 一种来源于个体,由某个居民的经济活动而产生。在某个时刻,某个居民的财产会直接变成某个数值,可能升高也可能降低。 一种来源于政策,在某个时刻,国家会对财产低于某个标准线全部的居民,实施政策支持,使得他们的财产全部正好到达标准线。 给定这些变

长春高老师编程 911

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

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

dilemma的专栏 1014

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2423

实战篇| app爬虫不用真机

之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)

youbingchen的博客 597

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

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

【UVa】【DP】1252 Twenty Questions

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

IDDFS 241

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

uva 1252——Twenty Questions

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

坚持不懈 387

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

【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、付费专栏及课程。

余额充值