度度熊為了完成畢業**,需要收集一些資料來支撐他的論據,於是設計了乙份包含 mm 個問題的調查問卷,每個問題只有 'a' 和 'b' 兩種選項。
將問卷散發出去之後,度度熊收到了 nn 份互不相同的問卷,在整理結果的時候,他發現可以只保留其中的一部分問題,使得這 nn 份問卷仍然是互不相同的。這裡認為兩張問卷是不同的,當且僅當存在至少乙個被保留的問題在這兩份問卷中的回答不同。
現在度度熊想知道,存在多少個問題集合,使得這 nn 份問卷在只保留這個集合的問題之後至少有 kk 對問卷是不同的。
input
第一行包含乙個整數 tt,表示有 tt 組測試資料。
接下來依次描述 tt 組測試資料。對於每組測試資料:
第一行包含三個整數 nn,mm 和 kk,含義同題目描述。
接下來 nn 行,每行包含乙個長度為 mm 的只包含 'a' 和 'b' 的字串,表示這份問卷對每個問題的回答。
保證 1≤t≤1001≤t≤100,1≤n≤1031≤n≤103,1≤m≤101≤m≤10,1≤k≤1061≤k≤106,給定的 nn 份問卷互不相同。
output
對於每組測試資料,輸出一行資訊 "case #x: y"(不含引號),其中 x 表示這是第 xx 組測試資料,y 表示滿足條件的問題集合的個數,行末不要有多餘空格。
sample input
2sample output2 2 1
aabb
2 2 2
aabb
case #1: 3解題思路:我們將a-b的問題序列轉化成為0-1二進位制序列從而轉為整數特徵,而問題子集情況也可以使用0-1進製序列表示。通過位運算就可以表示問題子集對應的問題結果0-1序列,進而轉為整數特徵。先將n個問卷的問題特徵值排序。排序後就可以清晰得到相同問題問卷數目,比如有這樣的排序結果[1 2 2 3 3],那麼問卷2 和 3的問題是一樣的,問卷 4 和 5 的是一樣的。通過相同問題數目就可以很容易得到相同問題問卷的對數。我們想如果將總的問題對數減去相同的問題的問卷對數那麼就得到了不一樣問卷的對數。上面的例子就是5 * 4 / 2 - 2 * 1 / 2 - 2 * 1 / 2 等於8。case #2: 0
#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
int n,m,k;
ll ans;
ll a[2010],b[2010];
bool ok(ll x)
mapmp;
for(int i=1; i<=n; i++)//二進位制整數值相容代表調查問卷相同。
ll total=n*(n-1)/2;
map::iterator it;
for(it=mp.begin(); it!=mp.end(); it++)
}if(total>=k)
return true;
else
return false;
}int main()
else
}a[i]=bs.to_ulong();
}ans=0;
for(ll i=1; i<=(1<}
printf("case #%d: %lld\n",t++,ans);
}return 0;
}
HDU6344 調查問卷 狀壓 模擬
給出nn 個答卷,每個答卷有m m道判斷題,全部由aa和b b組成。這m m道判斷題裡有多少個題目子集,滿足至少有k k對試卷在這些問題上面的答案是不同的。m 10m 1 0,可以考慮先狀壓。設a i a i 為第ii 張試卷壓縮後的狀態,那麼列舉乙個題目子集s s,將s s與所有試卷進行與運算,並...
7 調查問卷
1.1 當初為什麼報 軟體工程 大資料 這個專業?1.2 當初對 xx 專業的期待和想象是什麼?1.3 當初希望自己是如何投入這個專業的學習的?1.4 結合過去的一學期,你目前在專業學習方面情況如何,有什麼收穫,是否有什麼困難?2.1 你是怎麼學習 c 語言的?作業,實驗,教材,其他 目前為止估算自...
使用者調查問卷
調查問卷,是獲取使用者客觀資料的方式。使用者問卷調查的設計,需注意的幾點 1.針對的目的使用者 老使用者 新使用者,使用者規模,是否有地域 職業 年齡要求?2.每乙個在調查問卷中的問題,要反問自己 是不是一定要通過使用者調查問卷的方式,才能獲取?畢竟,乙份使用者調研問卷,從設計到 發放到 找使用者的...