1.傳送門:牛客13594-選擇困難症
題意:給你k類物品,每類物品有a[i]個每個物品都有乙個value,每類物品最多選乙個,要求有多少種選法使得總value>m(沒要求每類物品都必須選)
題解:很明顯是一道dfs的題,但是要剪枝優化,假設我們當前所有物品的總vaule>m,那麼我們只要算這件物品之後的組合總數就行了(特別注意每類物品可以不選,即num[0]=0,dfs每類物品的個數要從位置0開始而不是1),用乙個mul陣列來記錄每類的方案數.
**:
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include11 #include 12 #include 13
#define ll long long
14#define fi first
15#define se second
16#define pb push_back
17#define me memset
18const
int n = 1e6 + 10;19
const
int mod = 1e9 + 7;20
using
namespace
std;
21 typedef pairpii;
22 typedef pairpll;
2324
intk;
25 ll m,ans,a[20][200],mul[20],num[200
];26
2728
void dfs(int
pos,ll sum)
35 dfs(pos+1,sum+a[pos][i]);36}
37}3839
intmain()
47 sort(a[i]+1,a[i]+1+num[i]);48}
49 ans=0
;50 mul[k+1]=1;51
for(int i=k;i>=1;--i) mul[i]=mul[i+1]*(num[i]+1
);52 dfs(1,0
);53 printf("
%lld\n
",ans);54}
5556
return0;
57 }
2.傳送門:牛客14132-貝倫卡斯泰露
題意:問是否可以將乙個陣列變成成兩個完全相同的陣列(元素必須從子串行選)
題解:可以直接暴搜,a[ne]表示的是我當前要新增給a1或a2的值,假如它等於a1,那麼就給a2,否則給a1(即a2放不放數永遠看a1),假如a1或a2的長度》n/2,就說明這種方案不行,回溯.因為無論如何第乙個數一定給a1,所以直接dfs(1,0,2);
**:
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include11 #include 12 #include 13
#define ll long long
14#define fi first
15#define se second
16#define pb push_back
17#define me memset
18const
int n = 1e6 + 10;19
const
int mod = 1e9 + 7;20
using
namespace
std;
21 typedef pairpii;
22 typedef pairpll;
2324
intt;
25int
n,a[n];
26int
a1[n],a2[n];
2728
bool dfs(int p1,int p2,int
ne)35 a1[p1+1]=a[ne];
36return dfs(p1+1,p2,ne+1
);37}38
39int
main()
5152
return0;
53 }
兩道baidu試題
1 簡述 n個空間,存放a到a n 1的數,位置隨機且數字不重,a為正且未知,現在第乙個空間的數被誤設定為 1。說明 已經知道被修改的數不是最小的。例子 n 6,a 2,原始的串為5,3,7,6,2,4。現在被別人修改為 1,3,7,6,2,4。現在希望找到5。思路 充分利用等差數列性質。法一 開一...
兩道筆試題
昨天一朋友找工作,碰到兩道演算法筆試題,都是當於鍊錶操作的.原題具體的還原不過來了,不過大致是 1.有一單鏈表,找出最後第m個節點.昨天看到問題時,想到了小學應用題 汽車過山洞,假如這個汽車開著開著,等到車頭剛要出山洞,車尾離山洞出口也有一段距離嘛.這樣,這個題方法出來了 cpp node find...
暴力解題兩道
求 n n n 的位數。n nn 不大於 1e7。解 1 將 1,n 1,n 1,n 中的整數逐個相乘。每當中間結果大於10時,不斷地將中間結果除以10並記下除以10的次數。保證中間結果小於10即可。最蠢最暴力的辦法。考慮到 n 最大為 1e7 應該用 int64來儲存中間結果。時間複雜度為o nl...