鏈結
有m個問題。 n個人分別對m個問題有自己的解法,僅僅有ab兩種。(相當於n條長度為m的01序列),在m中任意選取問題,使得序列在相應的位置上的答案不同的序列有至少k對,問選取問題的方案數。
解法:狀態壓縮dp,dp[i][state] 表示 state狀態在前i行一共有幾對不同。
那麼狀態轉移方程為: dp[i][state] = dp[i-1][state] + i-1 - vis[andlast]。 加號後面是什麼意思呢? 每一行的狀態最多增加 i-1貢獻。 因此再減去重複的,剩下就是第i行的貢獻了。andlast是state& cur[i] ,相當於state規範了選哪些行,和cur[i]按位與之後,剩下的就是第i行在state規範下的問題回答情況了。
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn = 1050;
typedef long long ll;
int cur[maxn];
char st[maxn];
int dp[maxn][1<<11], vis[1<<11];
int main()
}printf("case #%d: ",cas++);
if(n*(n-1)/2 = k)
ans++;
printf("%d\n",ans);}}
return 0;
}
百度之星 1001調查問卷 狀態壓縮
題目大意 有m個問題。n個人分別對m個問題有自己的解法,僅僅有ab兩種。即,相當於n條長度為m的01序列,在m中任意選取問題,使得序列在相應的位置上的答案不同的序列有至少k對,問選取問題的方案數。題目思路 狀態壓縮dp,dp i state 表示 state狀態在前i行一共有i對不同。即對於每種狀態...
2018百度之星資格賽 1001 調查問卷
題意 度度熊為了完成畢業 需要收集一些資料來支撐他的論據,於是設計了乙份包含 mmm 個問題的調查問卷,每個問題只有 a 和 b 兩種選項。將問卷散發出去之後,度度熊收到了 nnn 份互不相同的問卷,在整理結果的時候,他發現可以只保留其中的一部分問題,使得這 nnn 份問卷仍然是互不相同的。這裡認為...
2014百度之星1001
problem description 魔法師百小度也有遇到難題的時候 現在,百小度正在乙個古老的石門面前,石門上有一段古老的魔法文字,讀懂這種魔法文字需要耗費大量的能量和大量的腦力。過了許久,百小度終於讀懂魔法文字的含義 石門裡面有乙個石盤,魔法師需要通過魔法將這個石盤旋轉x度,以使上面的刻紋與天...