链接

题意:

  有n个人,每个人可能会说:

  • 第x个人是好人/坏人
  • 如果第x个人是好人/坏人,则第y个人是好人/坏人

思路:

  状压dp,首先每个人所说的人只能是他前面10个人,所以对于第i个人记录下,他前面十个人的情况。

  对于第i个人,如果他说的话一个状态不冲突,那么i可以由这个状态转移。

  注意:对于“如果第x个人是好人,那么第y个人是坏人 “,那么x是好人,y是好人是不满足的。但是除了x是好人y是坏人这种情况满足,x是坏人,也是满足的。(一定要学好语文!)

代码

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath> using namespace std; int dp[][];
char str[];
int k; void work1(int i,int x,int z) {
int t = ( << k);
for (int j=; j<t; ++j) {
if (((j>>(x-i+k))&)==z) dp[i][(j+t)>>] = max(dp[i][(j+t)>>],dp[i-][j]+);
dp[i][j>>] = max(dp[i][j>>],dp[i-][j]);
}
}
void work2(int i,int x,int y,int z1,int z2) {
int t = ( << k);
for (int j=; j<t; ++j) {
int t1 = ((j>>(x-i+k))&) == z1,t2 = ((j>>(y-i+k))&) != z2;
if (!(t1&&t2)) dp[i][(j+t)>>] = max(dp[i][(j+t)>>],dp[i-][j]+);
dp[i][j>>] = max(dp[i][j>>],dp[i-][j]);
}
}
int main() {
int T,n,x,y,z;
scanf("%d",&T);
while (T--) {
scanf("%d%d",&n,&k);
memset(dp,-,sizeof(dp));
for (int j=,t=(<<(k-)); j<t; ++j) dp[][j] = ;
for (int j=(<<(k-)),t=(<<k); j<t; ++j) dp[][j] = ; for (int i=; i<=n; ++i) {
scanf("%s%s%s%d",str,str,str,&x);
if (str[]=='P') {
scanf("%s%s%s",str,str,str);
if (str[]=='g') z = ;
else z = ;
scanf("%s",str);
work1(i,x,z);
}
else {
scanf("%s%d%s%s%s",str,&x,str,str,str);
if (str[]=='g') z = ;
else z = ;
scanf("%s%s%d%s%s%s",str,str,&y,str,str,str);
work2(i,x,y,z,str[]=='g');
scanf("%s",str);
}
}
int ans = ;
for (int i=,t=(<<k); i<t; ++i) ans = max(ans,dp[n][i]);
printf("%d\n",ans);
}
return ;
}

C17K:Lying Island的更多相关文章

  1. openJudge C17K:Lying Island

    地址:http://poj.openjudge.cn/practice/C17K/ 题目: C17K:Lying Island 查看 提交 统计 提问 总时间限制:  2000ms 内存限制:  26 ...

  2. 【状压DP】OpenJ_POJ - C17K Lying Island

    https://vjudge.net/contest/171652#problem/K [题意] 小岛上有n个人,有些是好人(一定是真话),有些是坏人(可能是真话也可能是假话),现在要判断最多有多少好 ...

  3. PKU_campus_2017_K Lying Island

    思路: 题目链接http://poj.openjudge.cn/practice/C17K/ 状压dp.dp[i][j]表示第i - k人到第i人的状态为j的情况下前i人中最多有多少好人. 实现: # ...

  4. uva 592 Island of Logic (收索)

      Island of Logic  The Island of Logic has three kinds of inhabitants: divine beings that always tel ...

  5. LightOJ 1418 Trees on My Island (Pick定理)

    题目链接:LightOJ 1418 Problem Description I have bought an island where I want to plant trees in rows an ...

  6. [LeetCode] Island Perimeter 岛屿周长

    You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...

  7. 463. Island Perimeter

    https://leetcode.com/problems/island-perimeter/ 在一个N×N的矩阵中,N<100,1代表岛,0代表海,岛内没有海,求岛的周长 [[0,1,0,0] ...

  8. Leetcode-463 Island Perimeter

    #463. Island Perimeter You are given a map in form of a two-dimensional integer grid where 1 represe ...

  9. LeetCode Island Perimeter

    原题链接在这里:https://leetcode.com/problems/island-perimeter/ 题目: You are given a map in form of a two-dim ...

随机推荐

  1. 建立本地yum源

    使用环境 服务器处于内网,需要更新 网络资源紧张,节约带宽 建立yum目录 mkdir -p /opt/opmgmt/yum rsync服务器列表 centos mirrors epel mirror ...

  2. Jetty服务器的使用

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  3. C语言中 fputs() fgets() 的使用方法

    一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针): 其中的n是一个正整数.表示从文件中读出的字符串不超过 n-1 ...

  4. 关于HTML5,最牛逼的10本书!

    关于HTML5,最牛逼的10本书! 关于HTML5,最牛逼的10本书.rar HTML5+CSS3从入门到精通 李东博 著 推荐指数:★★★☆ 简介:本书通过基础知识+中小实例+综合案例的方式,讲述了 ...

  5. 花3分钟了解下C/C++中的函数可变参简单实现

    1.可变参函数的原理 C/C++函数的参数是存放在栈区的,并且参数的入栈是从参数的右边开始,即最后一个参数先入栈,而第一个参数最后才入栈,所以,根据栈的后进先出性质,函数总能找到第一个参数.所以,可变 ...

  6. myeclipse 10 创建webservice

    java 快捷创建webservice 收集一下,方便一下查阅 详情去看一下这个老哥,里面写得非常详细: http://hyan.iteye.com/ -- http://www.cnblogs.co ...

  7. IOS 计算文字尺寸(UILabel)

    方式1 :普通用法 #define  MJNameFont [UIFont systemFontOfSize:14] /** * 计算文字尺寸 * * @param text 需要计算尺寸的文字 * ...

  8. VERITA Netbackup日常巡检详细说明

    VERITA备份日常监控 一. 相关检查方法.命令 1.1 启动NBU的图形管理界面: /usr/openv/netbackup/bin/jnbSA & 1.2字符界面命令: 1.2.1cat ...

  9. 2017.11.4 JavaWeb-----基于JavaBean+JSP求任意两数代数和(改进的在JSP页面中无JSP脚本代码的)+网页计数器JavaBean的设计与使用

    修改后的JSP中不含有JSP脚本代码这使得JSP程序的清晰性.简单 1.设计JavaBean 的Add.java 类 package beans; public class Add { private ...

  10. 2、SpringBoot+Mybatis整合------一对一

    开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/SpringBoot_Mybatis01/tree/93398da60c647573645917b2 ...