傳送門
題意:當a[i]>a[j]並且a[i]<=a[j]+k時,可以將a[j]刪除。求最終數列可能的最小長度。
思路:(貪心)將序列進行排序,從前往後遍歷,滿足這個條件即可刪除。
證:因為對於ai-1,ai,ai+1三個排序好的數,如果ai能夠把ai-1刪除,則ai+1也能夠把ai-1刪除,換句話來說就是如果ai無法將ai-1刪除的話,ai+1也無法將ai-1刪除,只能留著。所以只要從前往後遍歷兩個數即可求得答案。
tips:有乙個細節就是存在相同的數,我用map記錄下所有數的出現次數,同時進行去重即可。
#include
#include
#include
using
namespace std;
const
int n=
1e6+10;
// 42 53 54 55 101 101 102
// 41 52 53 54 100 100 101
//
int a[n]
;map<
int,
int>b;
intmain()
sort
(a+1
,a+1
+n);
int len=
unique
(a+1
,a+1
+n)-
(a+1);
//去重
int ans=n;
for(
int i=
1;i<=len;i++
) cout
}
Problem D GJJ的日常之暴富夢(水題)
time limit 1 sec memory limit 128 mb submit 693 solved 120 submit web board gjj有個暴富夢。他夢想著有一天,他突然有了很多很多錢,他夢想著等他有錢了,要在自己的家裡挖兩個游泳池,乙個用來洗臉,乙個用來洗腳。他夢想著等他有錢...
codevs 5438 zbd之難題 水題日常)
時間限制 1 s 空間限制 1000 kb 題目等級 silver 題目描述 description zbd想要乙個計算器,請你編乙個計算器。輸入描述 input description 輸入只有一行,是乙個完整的計算表示式,表示式中無空格等分隔符。表示式中,用操作符 來分隔兩個非負整數。請輸出運算...
vijos 1034 家族(水題日常)
若某個家族人員過於龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關係圖,求任意給出的兩個人是否具有親戚關係。規定 x和y是親戚,y和z是親戚,那麼x和z也是親戚。如果x,y是親戚,那麼x的親戚都是y的親戚,y的親戚也都是x的親戚。第一行 三個整數n,m,p,n 5000,m 5000,...