2018.12.30【NOIP提高組】模擬賽C組總結
2018.12.30【NOIP提高組】模擬賽C組總結
今天成功迴歸開始做比賽
感覺十分良(zhōng)好(chà)。
- 統計數字(count.pas/c/cpp)
- 字串的展開(expand.pas/c/cpp)
- 矩陣取數遊戲(game.pas/c/cpp)
- 樹網的核(core.pas/c/cpp)
統計數字(count.pas/c/cpp) | 100 |
---|---|
字串的展開(expand.pas/c/cpp) | 100 |
矩陣取數遊戲(game.pas/c/cpp) | 0 |
樹網的核(core.pas/c/cpp) | 10 |
統計數字(count.pas/c/cpp)
題目描述
某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。
輸入
輸入檔案count.in包含n+1行:
第1行是整數n,表示自然數的個數。
第2~n+1行每行一個自然數。
輸出
輸出檔案count.out包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用一個空格隔開。
樣例輸入
8
2
4
2
4
5
100
2
100
樣例輸出
2 3
4 2
5 1
100 2
資料範圍限制
40%的資料滿足:1<=n<=1000
80%的資料滿足:1<=n<=50000
100%的資料滿足:1<=n<=200000,每個數均不超過1 500 000 000(1.5*10^9)
個人解析
這道題一拿到手,啊!~~~殺豬般的叫聲在機房裡迴響
第一眼想到的離散化,直接sort一遍再統計一下,AC
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,p,a[200001],t[10001 ],k[10001];
bool cmp(int x,int y)
{
return x<y;
}
int main()
{
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
for (i=1;i<=n;i++)
{
if (a[i]!=a[i-1])
{
t[++p]=1;
k[p]=a[i];
}else t[p]++;
}
for (i=1;i<=p;i++)
printf("%d %d\n",k[i],t[i]);
}
字串的展開(expand.pas/c/cpp)
題目描述
在初賽普及組的“閱讀程式寫結果”的問題中,我們曾給出一個字串展開的例子:如果在輸入的字串中,含有類似於“d-h”或“4-8”的子串,我們就把它當作一種簡寫,輸出時,用連續遞增的字母或數字串替代其中的減號,即,將上面兩個子串分別輸出為“defgh”和“45678”。在本題中,我們通過增加一些引數的設定,使字串的展開更為靈活。具體約定如下:
(1)遇到下面的情況需要做字串的展開:在輸入的字串中,出現了減號“-”,減號兩側同為小寫字母或同為數字,且按照ASCII碼的順序,減號右邊的字元嚴格大於左邊的字元。
(2)引數p1:展開方式。p1=1時,對於字母子串,填充小寫字母;p1=2時,對於字母子串,填充大寫字母。這兩種情況下數字子串的填充方式相同。p1=3時,不論是字母子串還是數字子串,都用與要填充的字母個數相同的星號“*”來填充。
(3)引數p2:填充字元的重複個數。p2=k表示同一個字元要連續填充k個。例如,當p2=3時,子串“d-h”應擴充套件為“deeefffgggh”。減號兩側的字元不變。
(4)引數p3:是否改為逆序:p3=1表示維持原有順序,p3=2表示採用逆序輸出,注意這時仍然不包括減號兩端的字元。例如當p1=1、p2=2、p3=2時,子串“d-h”應擴充套件為“dggffeeh”。
(5)如果減號右邊的字元恰好是左邊字元的後繼,只刪除中間的減號,例如:“d-e”應輸出為“de”,“3-4”應輸出為“34”。如果減號右邊的字元按照ASCII碼的順序小於或等於左邊字元,輸出時,要保留中間的減號,例如:“d-d”應輸出為“d-d”,“3-1”應輸出為“3-1”。
輸入
輸入檔案expand.in包括兩行:
第1行為用空格隔開的3個正整數,依次表示引數p1,p2,p3。
第2行為一行字串,僅由數字、小寫字母和減號“-”組成。行首和行末均無空格。
輸出
輸出檔案expand.out只有一行,為展開後的字串。
Sample Input1:
1 2 1
abcs-w1234-9s-4zz
Sample Output1:
abcsttuuvvw1234556677889s-4zz
Sample Input2:
2 3 2
a-d-d
Sample Output2:
aCCCBBBd-d
Sample Input3:
3 4 2
di-jkstra2-6
Sample Output3:
dijkstra2************6
資料範圍限制
【限制】
40%的資料滿足:字串長度不超過5
100%的資料滿足:1<=p1<=3, 1<=p2<=8, 1<=p3<=2。字串長度不超過100
個人解析