cf 1203 boxers
題意:n個拳擊手,每個體重都可以減一 加一 或不變,問該怎麼操作才能使不同體重拳擊手數量最多。
思路:貪心思想,先記錄每個體重有多少人,乙個體重最多能擴充套件成3種體重,所以從小到大開始要先將體重-1看是否已經存在,若存在,則不變,若原體重存在則判斷+1是否存在,若都不存在就將該體重進行標記,若是從大到小迴圈,則是優先順序反過來。解釋為什麼要向一端移動,因為要盡可能給能擴充套件成兩個或三個體重的體重讓位置,所以要向遞增或遞減方向移動。
注意要特判體重為1的選手。
引用如下**
#include
#include
#include
#include
#include
using
namespace std;
#define ll long long
ll a[
200000];
ll tp[
150005];
ll tp2[
150005];
intmain()
for(
int i =
1; i <
150001
; i++)if
(tp[i]!=0
)}else
//然後保持體重
if(tp[i]!=0
&& tp2[i]==0
)//最後才是提公升體重。
if(tp[i]!=0
&& tp2[i+1]
==0)}
}}ll ans =0;
for(
int i =
0; i <
150005
; i++
) cout << ans << endl;
return0;
}
CF1203 兼第五次訓練賽(B)
cf 1203 equal rectangles 題意 先給出乙個整數n,然後再給出4 n個整數,判斷是否能組成n個面積相等的矩形。思路 先講陣列進行排序,然後將第一大和最小的邊進行組合,然後是第二大和第二小 以此類推,但是期間要注意檢驗每次配對的數字是否都是成對出現的,若是有反例,輸出no,在定義...
第五次訓練 G題
問題簡述 森林中j可向四個方向移動,同時火源向四個方向擴散,當j逃到地圖外則視作成功逃離,問j能否逃離森林,若能,輸出最短時間。問題分析 由最短路徑可知,需要用到bfs。除了人外,森林中還有火源會隨著人移動不斷向四處擴散,則只需用兩次bfs即可。第乙個bfs模擬火源的移動,將火源擴散到每個方格時的最...
ACM第五次積分賽
做出三道題,第二名,總積分上公升到第八名,繼續加油!sau acm總比賽成績 姓名賬號 上學期成績 第一次成績 第二次成績 第三次成績 第四次成績 第五次成績 總成績張國慶 143401010421 20168.8 69.2 6087.2 91.6 577.8 陳福春springhack 201.5...