【Codeforces Round #424 (Div. 2) C】Jury Marks
【Link】:http://codeforces.com/contest/831/problem/C
【Description】
有一個人參加一個比賽;
他一開始有一個初始分數(shù)x;
有k個評委要依次對這個人評分;
依照時間順序依次給出這k個人的評分(可能為負數(shù),負數(shù)的時候,表示分數(shù)會降低,而如果為正,則分數(shù)增加);
然后有一個人記得這k次評分中的n次評分過后這個人的評分;
(即知道其中k個評委評完分之后,那個人的k個即時分數(shù))
(這k個分數(shù)各不相同);
問你x有多少種不同可能;
【Solution】
先算出評分變化的前綴和數(shù)組pre;
然后for(int i = 1;i <= k;i++)//枚舉一個評委;
*******for (int j = 1;j <= n;j++)//枚舉一個評分{
*********int x = b[j]-pre[i];//算出第j個評分在第i個評委之后,初始評分該是什么
}
這里,要記錄下每個x,以及這個x是由第幾個評分得到的;
如果有一個x,它能由所有的n個評分都得到;
那么這個初始評分就是可行的;
因為保證b數(shù)組各不相同,
則如果有一個評分j在第i個位置獲得了初始評分x;
其他評分j’不可能在第i個位置也獲得初始評分x
這就說明,獲得初始評分x的所有n個評分肯定都是在不同的位置(即擺在不同的評委評完分之后)得到的;
相同的x,統(tǒng)計是不是n個評分都出現(xiàn)過;
是的話,遞增答案;
直接用map+set寫會超時;
于是,排序,去重,加個map,這樣時間更快;
【NumberOf WA】
3
【Reviw】
如果想到了更優(yōu)的方法,就不要猶豫,盡量加快速度;
STL也不能濫用啊。
【Code】
轉(zhuǎn)載于:https://www.cnblogs.com/AWCXV/p/7626197.html
總結(jié)
以上是生活随笔為你收集整理的【Codeforces Round #424 (Div. 2) C】Jury Marks的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj2144: 跳跳棋(二分/倍增)
- 下一篇: 12. 抽象与密封