本文出自 http://blog.csdn.net/shuangde800
题目传送门
题意:
你最初只有一个武器,你需要按照一定的顺序消灭n个机器人(n<=16)。每消灭一个机器人将会得到他的武器。
每个武器只能杀死特定的机器人。
问可以消灭所有机器人的顺序方案总数。
思路:
看到了n的规模这么小,就知道可以用状态压缩解决了。
f[s]表示状态为{s}时的方案总数.
我们设{s-1}是s状态把一个二进制位是1的变为0的所有情况,相当于集合中少了某个机器人的所有情况
那么f[s] = sum{ 所有的{s-1}, 消灭了{s-1}个机器人时获得的武器能够杀掉少了的这个机器人}
初始化f[0] = 1, 表示一个机器人都不杀的方案有1个
代码:
/**==========================================
* This is a solution for ACM/ICPC problem
*
* @author: shuangde
* @blog: blog.csdn.net/shuangde800
* @email: zengshuangde@gmail.com
*===========================================*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long int64;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int MAXN = 10010;
int n, maxState;
int p[20];
char str[20];
int kill[(1<<16)+10];
int64 f[(1<<16)+10];
int main(){
int T;
int cas = 1;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i=0; i<=n; ++i){
scanf("%s", str);
p[i] = 0;
for(int j=0; str[j]; ++j)
if(str[j] == '1')
p[i] |= (1<<j);
}
maxState = (1<<n)-1;
kill[0] = p[0];
for(int s=1; s<=maxState; ++s){
kill[s] = p[0];
for(int i=0; i<n; ++i)
if((s>>i) & 1) kill[s] |= p[i+1];
}
memset(f, 0, sizeof(f));
f[0] = 1;
for(int s=1; s<=maxState; ++s){
f[s] = 0;
for(int i=0; i<n; ++i)if( (kill[s^(1<<i)]>>i) & 1){
f[s] += f[s^(1<<i)];
}
}
printf("Case %d: %lld\n", cas++, f[maxState]);
}
return 0;
}
分享到:
相关推荐
LSI 阵列卡windo系统管理软件,Windows_LSI-MegaRAID_Storage_Manager LSI 阵列卡windo系统管理软件,Windows_LSI-MegaRAID_Storage_Manager LSI 阵列卡windo系统管理软件,Windows_LSI-MegaRAID_Storage_Manager ...
富士(FUJI)的FRENIC-MEGA系列变频器是一款高性能、多功能的工业自动化设备,广泛应用于各种工业环境中的电机控制。该系列变频器以其高效节能、精确控制和丰富的功能集成为业内瞩目。在提供的“FUJI-富士 高性能多...
洛克人时间的齿轮
本压缩包文件"FRN-MEGA(G1S).rar"包含了有关富士电机(Fuji Electric)FRN-MEGA系列变频器的详细说明书。富士电机是全球知名的电气设备制造商,其FRN-MEGA系列变频器以其高性能、高可靠性和易用性而受到业界的广泛...
【AVR-mega16 实现计算器项目详解】 在嵌入式系统开发中,使用AVR微控制器(如ATmega16)实现计算器是一项基础且实用的实践。AVR-mega16是一款低功耗、高性能的8位微控制器,具有丰富的外设接口和足够的处理能力,...
在电子工程领域,AVR-mega16是一个广泛使用的微控制器,由Atmel(现已被Microchip Technology收购)制造。它基于AVR RISC(Reduced Instruction Set Computer)架构,具有高速性能、低功耗和丰富的外设接口。nRF2401...
Arduino Mega 2560是一款基于Atmel AVR系列微控制器的开源硬件开发平台,它在Arduino UNO的基础上扩展了更多的输入输出引脚以及更强的处理能力。标题中的"arduino-mega2560"指的是这个项目或资源是关于Arduino Mega ...
Knutwurst的i3 MEGA(M / S / P / X)固件(基于Marlin 2.0.x) (毕特GENUR DURCHLESEN!/请仔细阅读!) 温恩·迪尔·盖菲尔特(Wenn dirgefällt),是马赫(Kanst du mir hier einen)的玛菲(Kaffest * Es ...
富士FRENIC-MEGA系列样本.pdf 富士FRENIC-MEGA系列是富士电机推出的高端变频器产品线,旨在提供高效、精准的电机控制解决方案。该系列变频器集成了先进的技术和丰富的功能,适用于各种工业环境,包括但不限于制造业...
### AT-MEGA16单片机控制的音乐播放器知识点解析 #### 一、基础知识介绍 在探讨AT-MEGA16单片机控制音乐播放器的具体实现之前,我们需要先了解几个基本概念: - **AT-MEGA16单片机**:AT-MEGA16是一款由Atmel公司...
atmega16u2-Mega2560固件 烧录用的 可用于UNO 328P MEGA2560等开发板
在RL-Mega-Man项目中,开发者可能使用这些工具来构建和训练模型。 强化学习的基本流程包括四个要素:状态(State)、动作(Action)、奖励(Reward)和环境(Environment)。在《Mega Man》游戏中,状态可以是游戏...
【iOS游戏应用源代码——jsz-Mega-Fill-Up-cfde55c.zip】是一个包含iOS游戏开发源代码的压缩文件。这个项目名为“jsz-Mega-Fill-Up”,可能是一个小型或中型的游戏应用,由开发者jsz创建。版本标识符“cfde55c”通常...
官方离线安装包,亲测可用
VMware ESXi 6.0 support for the Avago MegaRAID SAS 12.0 Gb/s Controller(s) Driver name and version:scsi-megaraid-sas 6.610.15.00-1OEM.600.0.0.2494585 Compatible ESX version: VMware ESXi 6.0 ...
AVR-STM32-Arduino-Mega2560 (3).pdsprj
标题“grblmain-Mega2560_grbl_corexy_源码”涉及到的是一个开源项目,专门针对Arduino Mega2560开发板和CoreXY机械结构的GRBL固件。GRBL是一种轻量级的、用于控制CNC(计算机数控)机器的实时运动控制系统,它用...