博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 状压DP练习[3]
阅读量:6918 次
发布时间:2019-06-27

本文共 2212 字,大约阅读时间需要 7 分钟。

题意:$m*n:\ m,n \le 12$的牧场,有的格子不能选,相邻不能同时选,求方案数


$f[i][j]$前$i$行当前行选的集合为$j$

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=13,S=(1<<12)+5,P=1e8;inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){
if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f;}int m,n;int f[N][S],cant[N];inline void mod(int &x){
if(x>=P) x-=P;}int main(){ //freopen("in","r",stdin); m=read();n=read(); for(int i=1;i<=m;i++) for(int j=0;j
View Code

 




 

 

题意:$n \le  16$个数字排列,所有相邻数字相差$\ge k$的方案数


 

$f[i][j]$表示当前已经选上的数字集合为$j$,以第$i$个数字结尾的方案数

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=18,S=(1<<16)+5,P=1e8;inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){
if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f;} int n,k,a[N];ll f[N][S];int main(){ //freopen("in","r",stdin); n=read();k=read(); for(int i=0;i
k ) f[i][s]+=f[j][t]; } ll ans=0; for(int i=0;i
View Code

 




题意:有N头牛,它们可能患有D种病,现在从这些牛中选出若干头来,但选出来的牛患病的集合中不过超过K种病,最多选几头


 

$f[i][s]$表示前$i$头病集合为$j$最多选几头

用更新的写法比较好,因为你不知道去掉第$i$头后其他牛有没有第$i$头牛的病,还得预处理之类的

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=1005,S=(1<<15)+5;inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){
if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f;}int n,m,k,a[N],f[S];inline int bitCount(int n){ int c=0; for(;n;++c) n&=(n-1); return c;}int main(){ //freopen("in","r",stdin); n=read();m=read();k=read(); for(int i=1;i<=n;i++){ int c=read(); while(c--) a[i]|= 1<<(read()-1); } int All=1<
=0;j--) f[j|a[i]]=max(f[j|a[i]],f[j]+1); int ans=0; for(int j=0;j

 

转载地址:http://lehcl.baihongyu.com/

你可能感兴趣的文章
Java实战之文章翻译:Better Java —— 教你如何编写现代化的Java程式
查看>>
洛谷 P1880 石子合并
查看>>
3年收10亿,普陀山悄悄改名重启IPO
查看>>
一文弄清物联网的OTA
查看>>
Unity3D开发游戏世界天空盒
查看>>
智能媒体管理(IMM)视频分析中明星识别介绍
查看>>
【机器学习PAI实战】—— 玩转人工智能之商品价格预测
查看>>
条码打印软件如何设置双排标签纸尺寸
查看>>
eclipse中使用hibernate连接mysql
查看>>
k8s 面向应用开发者的基础命令
查看>>
RDS 5.7的物理备份恢复到本地的方法
查看>>
C# Winform快速开发平台与软件配置平台
查看>>
Kubernetes 新概念 “Initializers”解析(上):能让你为集群编写插件的新模型
查看>>
sql server 高可用故障转移(完结)
查看>>
MSSQL sql server order by 1,2 的具体含义
查看>>
蚂蚁的开放:想办法摸到10米的篮筐
查看>>
WPF 线程:使用调度程序构建反应速度更快的应用程序
查看>>
使用Docker(Mac)搭建 Nginx/Openresty - Kafka - kafkaManager
查看>>
“搜狗分身”技术正式亮相乌镇,携手新华社发布全球首个AI合成主播
查看>>
WPF 启动唯一程序(项目,exe,实例)
查看>>