这是一道使用状压dp覆盖图形的问题,我们定义f[i][j][k]表示当第i行的状态为j,前i行一共k个国王时的方案数。其中,j表示将当前这一行状态压缩后对应的二进制数。状态转移方程为f[i][j][k]=∑f[i-1][x][num(x)].我们先预处理出每一个合法的状态,并记录他们用了多少国王,再进行dp即可。

当然,本题可以用滚动数组优化,但是朴素的算法可以通过。

 1 #include <iostream>
 2 using namespace std;
 3 int n,k;
 4 typedef long long ll;
 5 ll f[11][1<<11][1<<11],ans;
 6 int tot,s[1<<11],num[1<<11];
 7 inline int get(int s) {
 8     int ret=0;
 9     while(s) {
10         ret++;
11         s&=s-1;
12     }
13     return ret;
14 }
15 int main() {
16     ios::sync_with_stdio(false);
17     cin>>n>>k;
18     for(int i=0;i<1<<n;i++) {
19         if(i&(i<<1)) continue ;
20         s[++tot]=i;
21         num[tot]=get(i);
22     }
23     f[0][1][0]=1;
24     for(int i=1;i<=n;i++) {
25         for(int j=1;j<=tot;j++)
26             for(int x=num[j];x<=k;x++)
27                 for(int k=1;k<=tot;k++)
28                     if(!(s[j]&s[k])&&!(s[k]&(s[j]<<1))&&!(s[k]&(s[j]>>1)))
29                         f[i][j][x]+=f[i-1][k][x-num[j]];
30     }
31     for(int i=1;i<=tot;i++)
32         ans+=f[n][i][k];
33     cout<<ans<<endl;
34     return 0;
35 }

AC Code

转载于:https://www.cnblogs.com/shl-blog/p/10702456.html

【LOJ#10170】国王相关推荐

  1. LOJ#2087 国王饮水记

    解:这个题一脸不可做... 比1小的怎么办啊,好像没用,扔了吧. 先看部分分,n = 2简单,我会分类讨论!n = 4简单,我会搜索!n = 10,我会剪枝! k = 1怎么办,好像选的那些越大越好啊 ...

  2. 提高篇 第五部分 动态规划 第4章 状态压缩类动态规划

    例1 骑士(Sgu223) 1592:[例 1]国王 信息学奥赛一本通(C++版)在线评测系统 https://blog.csdn.net/guoyangfan_/article/details/82 ...

  3. NOIP2012 DAY1 T2 国王游戏

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

  4. LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理

    题目:https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] %= p[ i ] ,因为在 multiset 里找的时候还需要真实值. 2.注意用 m ...

  5. 特斯拉“国王”王权不保

    作者 | Just 出品 | AI科技大本营(公众号ID:rgznai100) 中国有句古话,"偷鸡不成蚀把米". 发推一时爽,本就麻烦缠身的马斯克不会想到,8 月 7 日那条考虑 ...

  6. 【题解】P1080 国王游戏(贪心+高精python天下第一)

    P1080 国王游戏 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排 ...

  7. P1080 国王游戏(贪心+大数乘除)

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...

  8. 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)

    题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...

  9. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  10. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

最新文章

  1. 随行付微服务测试之静态代码扫描
  2. python实现http下载文件-Python实现http文件下载
  3. 程序员面试题精选100题(57)-O(n)时间的排序[算法]
  4. 软件过程软件Scrum敏捷开发
  5. 第六章 Qt布局管理器Layout
  6. 手机卫士09_应用程序四种查看_ListView小标题_进程管理
  7. (菜鸟入门)使用pytorch框架实现前馈神经网络
  8. 计算机硬件系统教具,计算机硬件系统 (2)
  9. mysql密码自动被改_每日一shell(十一)mysql强制自动修改密码
  10. 多操作赋的语义判断(如 int *a和int* a)
  11. 点云数据的类型主要分为_点云数据处理方法概述
  12. 当当1024购书活动,100张4折优惠券,薅羊毛啦!
  13. emule最新服务器地址,关于emule 服务器列表
  14. 5G 室内融合定位白皮书
  15. Python中整除(//)和取余(%)问题
  16. 哪款苹果无线充电宝最好?苹果无线充电宝哪个牌子好
  17. java zlib1.dll,zlib1.2.11静态编译
  18. idea自动下载gradle失败解决方案
  19. 2020年4月TIOBE语言排行榜-你知道少儿编程语言Scratch吗
  20. 程序员职场策略——重新定义自己的核心竞争力

热门文章

  1. python编程100例讲解_【python】编程语言入门经典100例--4
  2. 【渝粤教育】国家开放大学2019年春季 8680电工电子技术 参考试题
  3. 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (54)
  4. 从OpenGL ES 2.0到Direct3D 11.1之路
  5. MySQL之视图、触发器、事务、存储过程、函数
  6. 2018-2019-1 20165212 《信息安全系统设计基础》第八周学习总结(pwd)
  7. 结合Django+celery二次开发定时周期任务
  8. presentViewController 后调用pushViewController 无效解决方案
  9. [转]介绍几个C#正则表达式工具
  10. SQL Server2000 在 win2003上安装不上,我的解决办法