牛客網練習賽15 B

2021-08-18 18:12:19 字數 1997 閱讀 1014

#include//#includeusing namespace std;

#define ll long long

#define inf 1e-5

const int inv2=500000004;

const int inf=2147483647;

const int max=100010;

const int mod=1e9+7;

struct v2;

struct node

}};

bool cmp(const v2 &a,const v2 &b)

node *root=new node();

char str[max*6];

char name[15];

int toint(char c)

void dfs(node *now,int step)

}if(now->li.size()>0)

printf("\n");}}

str[step]=0;}

int main(int argc,char *argv)else

for(i=2;ison[k])else

}temp.num0=num0;

now->li.push_back(temp);

}memset(str,0,sizeof(str));

dfs(root,0);

return 0;

}

第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。

amy 8.999999999999999999999999999999999999999990000

bob 8.9999999999999999999999999999999999999999800

cat 8.9999999999999999999999999999999999999999899999999

沃老師並不會告訴大家分數的排名,但學生間競爭激烈,大家都想知道自己的作文成績在班上的排名。

但由於作文分數的小數部分可能超級長,難以用肉眼比較兩個數的大小關係,請你幫忙寫個程式,把所有學生按照作文分數排序吧〜

輸入共有n + 1行。

第一行有乙個正整數n,代表班上有幾個人。

接下來n行中的第i行,包含乙個字串namei,以及乙個小數scorei,分別代表第i個人的名字以及第i個人的作文得分。

輸出總共n行,每行由乙個名字和乙個小數構成,第i行代表著分數第i高的人的名字以及他的作文得分,代表作文得分的小數必須和輸入一模一樣,也就是原本末尾有多少零,輸出也要有相同數量的零。

若分數相同,則名字字典序比較小的放在前面。

這題看似是高精度排序(難道就這麼簡單?),其實仔細看每個高精度浮點數長度是len=6*1e5,高精度比較的時間是o(len);算上排序要超時的,為了防止高精度壓位,資料還特地是6*1e5,要是6*1e4沒準優化能混過去。

知道排序不行,正解也很快能想到,字典樹的dfs去輸出

在輸入時候構建字典樹,但是有個細節。若分數相同,則名字字典序比較小的放在前面。

字典樹節點維護10個指標之外,還有乙個列表用c++的vector表示,列表是空表示,沒有以當前節點結束的字串

注意這句,分數相同意味著浮點數數值相同,相同情況下按照名字字典序輸出

那麼在程式輸入就要處理這塊,把每個名字字尾沒用的0去掉,同時記錄去掉多少0

然後怎麼樣,每次輸入完字串,插入字典樹。

每個字串插入完成後在結束的節點的vector插入資料,有2個資料,剛才記錄的去掉多少0,以及人的名字,也就是vector也要維護乙個結構體

怎麼輸出,dfs字典樹,用後續輸出的方式。

迭代輸出列表的元素(如果有的話),輸出前要sort對名字排序,按照字典序

好了這道題就完成了

**:

牛客練習賽15

時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...

牛客網練習賽33

tokitsukaze最近沉迷一款rpg。這個rpg一天有k分鐘,每一天從第1分鐘開始。有n種怪物,第i種怪物每天第一次出現的時間為xi分鐘,第二次出現的時間為2 xi分鐘,第三次出現的時間為3 xi分鐘.同一時刻出現的怪物種類越多,打怪獲得的經驗也越高。為了高效練級,tokitsukaze想知道在...

牛客網練習賽33

tokitsukaze最近沉迷一款rpg。這個rpg一天有k分鐘,每一天從第1分鐘開始。有n種怪物,第i種怪物每天第一次出現的時間為xi分鐘,第二次出現的時間為2 xi分鐘,第三次出現的時間為3 xi分鐘.同一時刻出現的怪物種類越多,打怪獲得的經驗也越高。為了高效練級,tokitsukaze想知道在...