Processing math: 100%

bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1231

【题解】

状压dp!f[S][i]表示状态为S,最后一个奶牛为i的方案数,枚举前一个奶牛判断即可。

复制代码
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = (1 << 17) + 10, N = 23;
const int mod = 1e9+7;

# define RG register
# define ST static

int n, K, a[N], t[N], tn; 
ll f[M][N];
inline int ABS(int x) {return x>=0 ? x : -x;} 

int main() {
    cin >> n >> K;
    for (int i=1; i<=n; ++i) cin >> a[i];
    for (int i=1; i<=n; ++i) f[1<<i-1][i] = 1; 
    for (int sta = 1; sta < (1<<n); ++sta) {
        tn = 0; 
        for (int i=1; i<=n; ++i) if(sta & (1<<i-1)) t[++tn] = i; 
        if(tn == 1) continue;
        for (int i=1; i<=tn; ++i)
            for (int j=1; j<=tn; ++j) {
                if(j == i) continue;
                if(ABS(a[t[j]] - a[t[i]]) > K) 
                    f[sta][t[i]] += f[sta^(1<<t[i]-1)][t[j]];
            }
    }
    ll ans = 0;
    for (int i=1; i<=n; ++i) ans += f[(1<<n)-1][i]; 
    cout << ans;
    return 0;
}
View Code
复制代码

 

posted @   Galaxies  阅读(254)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示