放假前大佬給出的9道訓練題。這道題時間2s。剛開始想的就沒去做。後來看這道題的時候,覺得這個題是乙個鍛鍊思維的好題。
舉例 16 5
16 可以拆分為 4(10000)
(變換) 4 --->(3,3)---->(2,2,3)--->(2,2,2,2)--->(2,2,2,2,1) 此時滿足條件 輸出
#include#include#include#include#include#include#include#include#include#include#include#include#define pi acos(-1)
#define close ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
typedef long long ll;
const int max_n=1000000+50;
const int inf=0x3f3f3f3f;
const double eps = 1e-10;
ll mod = 1e9+7;
priority_queueq,q; //開兩個優先佇列的原因是 我們可以用來標記最高位
int s[max_n];
int main()
if(cnt > k){
cout<<"no"<
CODEFORCES 535B 解題報告
仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...
CodeForces 816B(區間計數)
codeforces 816b 題意 給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。解法 將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...
Codeforces 965B 題解報告
當k 1時,取第乙個 的座標即可 當k 1時,需要求出每乙個點在上下左右四個方向所能到達的最遠處,記為up,down,left,right,再取上下方向和左右方向的和的最大值,即 max 0,up down k max 0,left right k n,k map int,input split a...