題意是將給出的數相加計算出 其中p 的倍數的最大個數。由題意可得,在任意兩個數相加時,其模值必在0—p-1之間,將兩數相加的模值替換掉之前的兩個數字,得到長度減一的效果,用0和1 標記對應模值是否出現,從而代表被處理過的但還沒有達到 p 的倍數的值, 直到某次得到的模值為 0 時,再清空之前的標記(代表得到了 p 的倍數);在此過程中記錄清空標記的次數,b
#include
using
namespace std;
intmain()
else
} cout << res << endl;
}return0;
}
由題意可得,三個人為一組的小隊中,至少需要兩名能力為 2 的選手,最多需要一名能力為 1 的選手;而附加條件為任意兩個選手之間不相互認識。當兩個能力為1 的選手相互認識時,這顯然對我們的組合結果沒有影響,而當能力為 2 的選手與任意能力的選手認識時,組合的結果會在沒有任何人相互認識的結果要小。由這個性質,我們可以先用二位陣列ki[i][j]表示 i 位選手能力為 j 時的組合數,再先後一一新增在介紹後相互認識的選手,組成連通塊,然後減去此連通塊下,造成的組合數減少的數量,從而達到選手之間兩兩不相識的效果。
#include
using
namespace std;
typedef
long
long ll;
const
int n =
100005
;const ll mod =
1e9+7;
int one[n]
;int two[n]
;int x, n;
int u, v;
struct functions
void
init()
void
add_ncm
(ll a, ll b)}}
void
reduce_union
(ll a, ll b)}}
ll res()
}solve;
int pos[n]
;int
find_pos
(int p)
void
unions
(ll x, ll y)
intmain()
cout << solve.
res(
)<< endl;
for(
int i =
1; i < n; i++)}
return0;
}
2013第三場多校
第三場多校 至今最慘的一場多校。共作出兩題。1008 狀態壓縮優化的搜尋 0 比賽時候直接狀態壓縮dp,結果tle了。沒有算好時間複雜度,第一次交的時候沒有測大資料。應該多想幾種方法,做到一a才行,不然卡題會卡很久。1 後來直接搜尋,從最後乙個狀態開始搜,每次都用乙個回文串,然後搜另乙個的最小步數。...
2014多校聯合 第三場
1002 redraw beautiful drawings 最大流。用sap gap優化的模版過的。1.源點 每一行對應的點,流量限制為該行的和 2.每一行對應的點 每一列對應的點,流量限制為k 3.每一列對應的點 匯點,流量限制為該列的和 跑一遍最大流。如果流量小於總權值和,那麼說明imposs...
2019湖南多校第三場
開場lfw過a,然後byf突然想到e的構造方法,wa了一發開始查錯,shl中途看g,說 這不是bzoj原題嗎?拿到一血帶歪榜,然後byf該出e拿到一血又帶歪榜。shl寫出b,之後lfw c想複雜調不出,shl wa一發c過掉 byf發現f題是幾何題,想起了寒假剛幾何起步的lfw,byf開始帶著lfw...