洛谷訓練新手村之「BOSS戰 入門綜合練習1」題解

2022-05-19 23:53:20 字數 1588 閱讀 5859

題目大意:陶陶有s點體力值,每個蘋果消耗體力值,問s體力值最多能摘多少蘋果。

解題思路:首先過濾掉摘不到的蘋果。其次從小到大排序,貪心思想:優先選擇消耗體力值小的蘋果。

實現**如下:

#include using namespace std;

const int maxn = 5050;

int n, m, s, a, b, x[maxn], y[maxn], ans;

int main()

sort(y, y+m);

for (int i = 0; i < m; i ++)

else break;

}cout << ans << endl;

return 0;

}

題目大意:求出所有桌布為a:b:c的三位數。

解題思路:遍歷第乙個數,判斷後兩個數是否都是三位數且剛好這三個數從1到9。

實現**如下:

#include using namespace std;

int a, b, c;

bool t[10];

bool check(int a)

for (int i = 1; i < 10; i ++) if (!t[i]) return false;

return true;

}int main()

}if (!flag) puts("no!!!");

return 0;

}

題目大意:給你乙個數,找三個素數使得它們的和是這個數。

解題思路:資料量偏大,所以採用素數篩法,然後再列舉。

實現**如下:

#include using namespace std;

const int maxn = 20020;

bool pp[maxn];

int n, a, p[maxn];

void init()

}int main()

}return 0;

}

解題思路:列舉出所有的狀態方案。因為直接列舉得開好多迴圈,所以我可以採用類似狀態壓縮的思想,每個狀態對應乙個三進製數,然後三進製數的每一位對應10個數字,這樣比較好解決一些。

實現**如下:

#include using namespace std;

int a[10], n, res;

int main()

n -= 10;

for (int i = 0; i < 59049; i ++)

if (cnt == n) res ++;

}cout << res << endl;

for (int i = 0; i < 59049; i ++)

if (cnt != n) continue;

for (int j = 0; j < 10; j ++)

cout << endl;

}return 0;

}

新手村之BOSS戰 入門綜合練習1

p1478 陶陶摘蘋果 公升級版 總 把力氣從小到大排序,判斷是否能摘到,累加。var j,ans,n,s,h,h1,i longint x,y array 1.5000 of longint procedure init var i longint begin readln n,s readln ...

洛谷訓練新手村之「陣列」題解

題目大意 求有多少蘋果樹的高度 le 陶陶的高度 30。解題思路 開陣列存資料,然後迴圈遍歷一遍。實現 如下 include using namespace std int a 11 cnt int main 題目大意 給你若干區間,求有多少點沒有被這些區間覆蓋。解題思路 開乙個 cut 陣列,cu...

新手村 Boss戰 入門綜合練習2 Cantor表

題目鏈結 按照從右上到左下的斜對角來看,每條對角線可以分成1個數字 2個數字 3個數字 對於乙個n,我們可以先找出來是在第幾層的,1是第一層,2 3是第二層,4 6是第三層 層數標號11 22 3 34 6 45 10 那麼顯然,k k 1 2 k 1 k2 時,有第 n 個表示式在第k層 其實這時...