loj10170
在 n×n 的棋盘上放 k 个国王,国王可攻击相邻的 8 个格子,求使它们无法互相攻击的方案总数。
----------------------------------------------------------------------------------------------------------------------
状态压缩DP
首先选出可用的状态
然后进行动归。
f[i][s][k]:表示到第i行,第i行的状态为st[s]的情况下,放置了k个国王的方案数。
f[i][s][k]=sum(f[i-1][S][k-cs[s]]),条件是状态st[s]和st[S]不冲突。
第一次没有开LONGLONG,于是进行了替换!!比较暴力!!!
----------------------------------------------------------------------------------------------------------------------
代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 long long n,k;
4 long long st[1<<10+5],js,cs[1<<10+5];
5 long long f[11][1<<10+5][105];
6 void getst(long long n)
7 {
8 for(long long i=0;i<(1<<n);++i)
9 {
10 if((i & (i<<1))==0)
11 {
12 st[js]=i;
13 long long tp=0;
14 for(long long j=0;j<n;++j)
15 if((i & (1<<j)))tp++;
16 cs[js++]=tp;
17 }
18 }
19 }
20 void dp()
21 {
22 for(long long s=0;s<js;++s)f[1][st[s]][cs[s]]=1;
23 for(long long i=2;i<=n;++i)
24 for(long long s=0;s<js;++s)
25 for(long long l=0;l<=k;++l)
26 for(long long j=0;j<js;++j)
27 if(((st[s]&st[j])==0)&&((st[s]&(st[j]>>1))==0)&&((st[s]&(st[j]<<1))==0))
28 f[i][st[s]][l]+=f[i-1][st[j]][l-cs[s]];
29 long long ans=0;
30 for(long long s=0;s<js;++s)ans+=f[n][st[s]][k];
31 cout<<ans;
32 }
33 int main()
34 {
35 cin>>n>>k;
36 getst(n);
37 dp();
38 return 0;
39 }
loj10170的更多相关文章
- Loj10170骑士
试题描述 在 n×n(1≤n≤10)的棋盘上放 k(0≤k≤n)个国王(可攻击相邻的8个格子),求使它们无法互相攻击的方案总数. 输入 输入有多组方案,每组数据只有一行为两个整数n和k. 输出 每组数 ...
随机推荐
- API企业级网关设计
前言 摘自--https://github.com/aCoder2013/blog/issues/35 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员.商品.推荐服务等等. 那 ...
- 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...
- CF Grakn Forces 2020 1408E Avoid Rainbow Cycles(最小生成树)
1408E Avoid Rainbow Cycles 概述 非常有趣的题目(指解法,不难,但很难想) 非常崇拜300iq,今天想做一套div1时看见了他出的这套题Grakn Forces 2020,就 ...
- 线程方法wait()和notify()的使用
实现需求: 开启2个线程,1个线程对某个int类型成员变量加1,另外1个减1,但是要次序执行,即如果int型的成员变量是0,则输出01010101这样的结果 代码如下 1 package test; ...
- Akka Typed 官方文档之随手记
️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Dom ...
- Salesforce 大数据量处理篇(二)Index
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/ ...
- 使用vs code搭建Q#开发环境 (Mac)
Q# 是微软几年前发布的一门用于模拟量子编程的语言. 3年前我在当时风靡的博客网站 ITEYE 上发布过如何在windows上搭建其开发环境:Q#开发环境搭建.时过境迁,不但iteye不知何处去,连Q ...
- python中环境变量的使用
前言 之前就经常用,今天来凑个篇数. 在开发的过程中,我们经常会将代码中某些可能更改的,比如redis地址,数据库地址,限流阈值等参数写活来提高灵活性, 传统的方式可能是写在配置文件中,比如 xml ...
- 认识webservice
1.为什么需要webservice? 目前还有很多商用程序继续在使用C++.Java.Visual Basic和其他各种各样的语言编写.现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构 ...
- 了解一下ajax
AJAX:是一种无需重新加载页面的情况下能够更新部分(局部更新)网页的技术. 1. 概念:ASychronous JavaScript And XML 异步的JavaScript和XML 首先了解一下 ...