2016 8 4入營測試

2021-07-16 04:57:06 字數 3226 閱讀 6190

·題目大意:

給出一串音符,判斷ta是a小調還是c大調。給出了以下定義:①重音是乙個小節開頭的音②a小調的主音是a、d、e,c大調的主音是c、f、g。③由重音中是a小調的主音多還是c大調的主音多判斷這首曲是a小調還是c大調,如果主音數相同,若最後乙個音是a小調的主音,這首曲子就是a小調,否則就是c大調。

·資料規模:

序列長度不超過100。

·解題思路:

這題的原題目比較長,但是這題並不難,從題中可以看出是一道模擬題,資料規模很小。直接做就可以了。

·注意事項:

看題時要仔細,尤其是題目長的時候,不要漏掉了關鍵點,有必要時可以做標記。

·**:

#include 

#include

#include

using

namespace

std;

ifstream fin("ljestvica.in");

ofstream fout("ljestvica.out");

#define cin fin

#define cout fout

string s;

int counta=0,countc=0;

int pd(char c) //判斷音符是c大調ora小調

int main()

if (s[i]=='|') f=true; //利用f取出重音

}// cerr << counta << ' ' << countc << '\n';

if (counta==countc) //判斷重音個數相等情況

if (counta>countc) cout

<< "a-mol\n";

else

cout

<< "c-dur\n";

return

0;}

·題目大意:

給出n個點,座標為(x,y)(0≤x,y≤m),問是否存在四個點(a,b,c,d)(a﹤b,c﹥d,a≠c或者b≠d),使ab之間的曼哈頓距離和cd之間的曼哈頓距離相等。(多組資料)

曼哈頓距離:兩個點在標準座標系上的絕對軸距總和。

·資料規模:

80% 1≤n≤1000

100% 1≤t≤50 , 1≤n≤50000 , 0≤m≤100000

·解題思路:

首先看80%的資料,n不超過1000,就可以用暴力的方法:將每兩個點之間的曼哈頓距離都計算出來,用乙個計數陣列儲存下來,發現被計了一次以上的就輸出yes,否則輸出no。但仔細看這道題,就會發現兩個座標值最大都是10^5,也就是說,最多也只有2×10^5種,所以只要在計算曼哈頓距離時就判斷,一找到就退出,時間複雜度最多為o(2×10^5),不會超時。

·注意事項:

不要重複算a-b和b-a的距離。

·**:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

ifstream fin("teacher.in");

ofstream fout("teacher.out");

#define cin fin

#define cout fout

int n,m;

bool f[200006];

int x[100006],y[100006];

void work() //處理

f[abs(x[i]-x[j])+abs(y[i]-y[j])]=true; //標記

}cout

<< "no\n";

}int main()

}

·題目大意:

給你乙個長度為n的數列a,請你計算裡面有多少個四元組(a,b,c,d)滿足:

a≠b≠c≠d,1≤a﹤b≤n,1≤c﹤d≤n,aa﹤ab,ac﹥ad

·資料規模:

15% n <= 100

100% n <= 50000

·解題思路:

首先看15%的資料,可以直接列舉,o(n^4),剛好10^8,危險過15%。

100%就要用到數學上的一些技巧,首先樹狀陣列求出b,d(或a,c)的可能數量,相乘,再用容斥原理去重即可(具體看程式)。

·**:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

ifstream fin("world.in");

ofstream fout("world.out");

#define cin fin

#define cout fout

struct num

};num a[50006];

int b[50006],f[50006];

int sl[50006],sr[50006],bl[50006],br[50006];

long

long ans1,ans2,ans;

int n;

bool _cmp(num a,num b)

long

long ask(int pos) //詢問比pos(已離散化)小的數的個數

/*---------------------------------*/

int main()

sort(a+1,a+n+1,_cmp);

for (int i=1;i<=n;i++) //離散化

memset(f,0,sizeof f);

for (int i=1;i<=n;i++)

memset(f,0,sizeof f);

for (int i=n;i>0;i--)

for (int i=1;i<=n;i++)

ans=ans1*ans2;

for (int i=1;i<=n;i++) //利用容斥原理去掉重複

cout

<< ans << endl;

return

0;}

2016 8 4 開營測試總結

第一題 題意 字串用 分隔為乙個個小結,統計每一小節第乙個字母分別屬於和的次x1 x2。若x1 x2,輸出a mol 若x2 x1輸出c dur 若x1 x2 則用字串最後乙個字母屬性來決定。分析 直接模擬。程式 include include int main else if am cd am c...

冒煙測試 測試 Beta測試 效能測試

冒煙測試 也可稱為showcase 這一術語描述的是在將 更改嵌入到產品的源樹中之前對這些更改進行驗證的過程。冒煙測試 smoke test 在測試中發現問題,找到了乙個bug,然後開發人員會來修復這個bug。這時想知道這次修復是否真的解決了程式的bug,或者是否會對其它模組造成影響,就需要針對此問...

軟體測試中的 測試 測試和 測試

常用來表示軟體測試過程中的三個階段,是第一階段,一般只供內部測試使用 是第二個階段,已經消除了軟體中大部分的不完善之處,但仍有可能還存在缺陷和漏洞,一般只提供給特定的使用者群來測試使用 是第三個階段,此時產品已經相當成熟,只需在個別地方再做進一步的優化處理即可上市發行。在軟體交付使用之後,使用者將如...