题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1758

状态压缩的DP,dp[i][st]表示状态为st考虑后面i个人所有人最小花费,

因为每个科目有三种状态,可以用一个三进制数表示,

状态不是很多,所以可以把预先把每个数的三进制预处理出来,

决策为选和不选。

#include<bits/stdc++.h>
using namespace std;
const int maxs = ;
const int MAXSTA = +;
const int maxn = ;
int base[maxs+],trp[MAXSTA][maxs+];
int dp[maxn][MAXSTA];
int tch[maxn],cost[maxn],sa;
int s,m,n;
const int INF = 0x3fffffff;
void preDeal()
{
base[] = ;
for(int i = ; i <= maxs; i++){
base[i] = *base[i-];
}
for(int i = ; i < MAXSTA; i++){
int x = i, cnt = ;
while(x){
trp[i][cnt++] = x%;
x /= ;
}
}
} int dfs(int i,int st)
{
if(i == n) return st == sa? :INF;
int &ans = dp[i][st];
if(~ans) return ans;
ans = dfs(i+,st);
//int nst = st;
for(int j = ; j < s; j++){
if(trp[tch[i]][j] && trp[st][j] != ){
st += base[j];
}
}
ans = min(ans,dfs(i+,st)+cost[i]);
return ans;
} int work()
{
sa = base[s]-;
int st = ,sum = ;
for(int i = ; i < m; i++){
int c; scanf("%d",&c);
sum += c;
while(getchar()!='\n'){
int sub = getchar()-'';
int t = trp[st][sub] ;
if(t != ){
st += base[sub];
}
}
}
for(int i = ; i < n; i++){
scanf("%d",cost+i);
tch[i] = ;
while(getchar()!='\n'){
tch[i] += base[getchar()-''];
}
}
memset(dp,-,sizeof(dp));
return sum + dfs(,st);
} int main()
{
//freopen("in.txt","r",stdin);
preDeal();
while(scanf("%d%d%d",&s,&m,&n),s){
printf("%d\n",work());
}
return ;
}

UVA 10817 - Headmaster's Headache(三进制状压dp)的更多相关文章

  1. ZRDay6A. 萌新拆塔(三进制状压dp)

    题意 Sol 这好像是我第一次接触三进制状压 首先,每次打完怪之后吃宝石不一定是最优的,因为有模仿怪的存在,可能你吃完宝石和他打就GG了.. 因此我们需要维护的状态有三个 0:没打 1:打了怪物 没吃 ...

  2. HDU 3001 三进制状压DP

    N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方程: dp[i+b[k]][k]= ...

  3. hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp

    题目链接 题意 给定一个\(N\)个点的无向图,求从任意一个点出发,经过所有点的最短路径长度(每个点至多可以经过两次). 思路 状态表示.转移及大体思路 与 poj 3311 Hie with the ...

  4. Travelling (三进制+状压dp)

    题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read(){ ,f= ...

  5. HDU - 3001 Travelling(三进制状压dp)

    Travelling After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best ch ...

  6. HDU 3001 三进制 状压dp

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. 状压DP UVA 10817 Headmaster's Headache

    题目传送门 /* 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][s2]表示s ...

  8. 三进制状压 HDOJ 3001 Travelling

    题目传送门 题意:从某个点出发,所有点都走过且最多走两次,问最小花费 分析:数据量这么小应该是状压题,旅行商TSP的变形.dp[st][i]表示状态st,在i点时的最小花费,用三进制状压.以后任意进制 ...

  9. Codeforces Round #297 (Div. 2) [ 折半 + 三进制状压 + map ]

    传送门 E. Anya and Cubes time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

随机推荐

  1. myeclipse同时部署两个项目-permgen space

    黑色头发:http://heisetoufa.iteye.com/ 使用myeclipse启动两个SSH2的部署在tomcat6下的项目报出java.lang.OutOfMemoryError: Pe ...

  2. DOM学习笔记(二)对象方法与属性

    所有 HTML 元素被定义为对象,而编程接口(对象的访问)则是对象方法和对象属性. 事实上,常用的只用window对象及其子对象document对象,以及事件Event对象. Window 对象 Wi ...

  3. 求N!的长度【数学】

    转自:http://blog.csdn.net/fengdian29147001/article/details/11992755 给一个数X,len=log10(X)+1就是X这个数的长度 ①:当N ...

  4. ugui学习资料

    官网文档 http://docs.unity3d.com/Manual/index.html 官网视频教程http://unity3d.com/learn/tutorials/modules/begi ...

  5. 蓝桥杯T42(八数码问题)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T42 题意:中文题诶- 思路:bfs 将没种九宫格的状态看作一个状态节点,那么只需求起始节点到目标节点的最短路 ...

  6. [Xcode 实际操作]一、博主领进门-(10)Xcode右侧界面介绍

    目录:[Swift]Xcode实际操作 本文将演示Xcode右侧界面介绍. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 右上角第三个[辅助编辑器]按钮,将代码切 ...

  7. [Xcode 实际操作]八、网络与多线程-(11)使用同步Post方式查询IP地址信息

    目录:[Swift]Xcode实际操作 本文将演示如何通过Post请求,同步获取IP地址信息. 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据. 在项目导航区,打开视图控制器的代码文件[Vi ...

  8. Proteomes of paired human cerebrospinal fluid and plasma: Relation to blood-brain barrier permeability in older adults (文献分享一组-潘火珍)

    题目:Proteomes of paired human cerebrospinal fluid and plasma: Relation to blood-brain barrier permeab ...

  9. js对象—类型和属性特性

    前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...

  10. 解决XP“不是有效Win32程序” 不是改Platform toolset

    背景 最近在写一个窗口程序,想在Windows XP上也能跑.先用vs 2015的App Wizard生成了一个实例窗口程序,按照网上大部分攻略,将 "Properties - Genera ...