![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
紫书
流锡
不想当菜狗捏
展开
-
UVA1252 Twenty Questions (状压dp)
题目大意:给你两个数n,m再给你n个物品的特征值用长度为m的二进制数字表示随机选一个物品让你来猜问你最少猜多少次能猜中思路:状压dp设s表示已经猜过的物品的特征值a表示s中目标物品包含的特征值用d[s][a]表示状态之后猜的时候分成两部分枚举二进制的每位数字一部分是不包含这个特征值的情况,一个部分是包含这个特征值的情况然后因为要最少猜多少次才能猜中嘛这里两个数字要取最大值,然后枚举的时候取最小值还有猜到只剩1个时候就说明猜完了只剩两个的时候再猜一次就好了具体看代码AC代码原创 2021-08-19 23:57:39 · 100 阅读 · 0 评论 -
UVA10817 Headmaster‘s Headache
题目大意:有m个老师与n个求职者还有s个科目老师必须选,求职者可选可不选要求这s个科目都要有至少两个人教问你最少花费是多少思路:状压dp我们可以设s1用二进制表示目前恰好有一个人教的科目s2表示有两个人教的科目s0表示目前没有人教的科目面对老师的时候把他的花费跟他教的科目都放进来而求职者的时候就有两种状态了直接跳到下一个人不选或者选他加入他的花费主要还是二进制方面表示状态的东西可能比较难想具体看代码#include <bits/stdc++.h>using na原创 2021-08-18 11:18:59 · 72 阅读 · 0 评论 -
UVA 1218 Perfect Service(树形dp)
题目大意:有n个点要求在一些点安装服务器,使不是服务器的点恰好与一台服务器计算机相邻最少要装多少个点思路:树形dpd[u][0]表示u是服务器,子节点是服务器或者不是服务器的状态d[u][1]表示u不是服务器,u的父亲是服务器,u的子节点都不是服务器的状态(如果有一个子节点是服务器那u久相邻两台服务器了)d[u][2]表示u和u的父亲不是服务器,u的一个子节点是服务器的状态然后就写状态转移方程(v是u的子节点)d[u][0]=sum(min(d[v][1],d[v][2])+1d[u原创 2021-08-14 23:48:56 · 100 阅读 · 0 评论 -
UVA1347 Tour
题目大意:给你n个坐标按x递增顺序给出坐标让一个人按严格x递增顺序走到最后一个点之后再从最后一个点严格向左走回来要求走的时候除了起点终点经过两次以外其他点全部都经过一次问最短路径思路:dp这里紫书的第一个图是有问题的题目要求人向右走的时候x要严格增加,向左走的时候严格变小不能经过一个超过1个点坐标的时候又反过来走不然如果可以这题是无解的思路就是两个人从起点出发走两条没有相同点的路径最终走到终点设dp[i][j]表示第1个人走到第i点,第二个人走到第j点还需要多少距离到终点因为dp原创 2021-08-10 17:09:06 · 58 阅读 · 0 评论