記乙個比較好的列舉方法

2021-10-03 08:21:35 字數 1063 閱讀 7903

//——如果k>n或者k>m,那麼肯定就把矩陣選完了————

//這裡我這麼處理主要是因為我後面的有個判斷把這種情況給直接continue掉了,

//debug的時候不想的再寫別的了就這樣了

//k=n或者m就已經能把矩陣選完,所以結果肯定是一樣的

if (k > n) k = n;

if (k > m) k = m;

//————————————————————————————————————————

long long  sum=0;  //sum是本次列舉的方案的和

for (int i = 1; i <= n; i++) //把選中的行都加上

if (b[i]) sum += sh[i];

memset(sl, 0, sizeof(sl));//行選得不同矩陣就不同,所以sl陣列每次都要清乾淨

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

if (!b[i]) sl[j] += a[i][j]; //第i行沒有選,j列的和需要加上a[i][j](第i行選了a[i][j]就清零了不能加)

sort(sl+1, sl+1+m);

for (int i=1,j=m; i<=numl; i++,j--) sum += sl[j]; //把最大的numl列的和加到方案裡

ans = max(ans, sum);//維護答案

}

//————————————列舉+貪心結束——————————————

printf("%lld\n", ans);

return 0;

小東西:gcc有乙個叫做__builtin_popcount的內建函式,它可以精確的計算1的個數。儘管如此,不同於__builtin_ctz,它並沒有被 翻譯成乙個硬體指令(至少在x86上不是)。相反的,它使用一張類似上面提到的基於表的方法來進行位搜尋。這無疑很高效並且非常方便。

其他語言的使用者沒有這個選項(儘管他們可以重新實現這個演算法)。如果乙個數只有很少的1的位,另外乙個方法是重複的獲取最低的1位,並且清除它。

乙個比較好的面試

乙個比較好的面試是能夠問出求職者擅長哪方面而哪方面不足的面試。如果面試官針對求職者不足之處窮追猛打,或是炫耀自己的才能,這是不足取的。對於求職者而言,面試是重點環節,要守時是當然的了。如果不能按時參加面試,最好提前通知對方。著裝上不需要過分準備,舒服 乾淨就好了。一般的it公司對技術人員都不會有很高...

乙個比較好的ASP翻頁

收藏了乙個比較快的翻頁,使用方便哦 程式如下 顯示翻頁 資料庫,查詢條件,每頁個數,頁面名稱,當前頁數,get字尾 function fanye db,tiaojian,geshu,yemian,page,gets sql select count as co from db tiaojian se...

乙個比較好的 JS 時間格式化方法

今天看到乙個比較好的 js 時間格式化方法,記錄一下。from meizz export default function formatdate fmt,timestamp if y test fmt fmt fmt.replace regexp.1,date.getfullyear substr ...