CCF認證201903 3損壞的RAID5

2021-10-03 06:37:38 字數 2502 閱讀 8209

201903-3損壞的raid5

吐槽一下

題目給的2個用例都過了,但還是只有10分,但個人原因只是為了練習熟練度,所以也不太在意分數。。。如果有哪位同學知道為啥是10分,萬望告知

演算法設計+題目分析

1、 用乙個矩陣讀入所有的塊資料;

string p[maxv]

;

2、再按照塊大小(8個字元)分割這些資料,儲存在vector裡

vector p_s[maxv]

;

3、根據塊的數量是否大於2決定接下來的操作,如果是2就直接找尋資料,如果大於2,轉入操作4;

4、這時候需要求的待查詢塊的條帶編碼、磁碟號、磁碟內的順序號:

條帶號=塊號/條帶內的塊數量;

磁碟號=條帶號%磁碟數量;

磁碟內的條帶順序號=int(條帶號/(磁碟數量-1));

磁碟內的塊順序號=磁碟內的條帶順序號*條帶內的塊數量+(條帶號+1)%條帶內的塊號;

5、如果所查的塊號沒丟失,直接列印;

6、如果所查的塊號丟失了,就將其餘n-1塊的資料做異或(此處涉及16進製制轉化成2進製,和2進製轉化成16進製制),然後列印;

7、如果給予的塊數量小於n-1或有其他非法情況,列印-

幾個核心點

1、幾個編號的取得,此處很神奇;

2、進製的轉化(我的方法有一點暴力)

環境

visual c++6.0

#include

#include

#include

#include

using

namespace std;

const

int maxv=

1010

;string p[maxv]

;//儲存的塊資料

vector p_s[maxv]

;//按照8字元劃分好的塊資料

void

create_p_s

(string s,

int a)

}string trans_2_16

(vector<

int> r)

//cout}vector<

int>

yh(vector<

int> c, vector<

int> r)

return r;

}vector<

int>

trans_16_2

(string s)

if(h==14)

if(h==13)

if(h==12)

if(h==11)

if(h==10)

}if(s[i]

>=

'0'&& s[i]

<=

'9')

if(h==8)

if(h==7)

if(h==6)

if(h==5)

if(h==4)

if(h==3)

if(h==2)

if(h==1)

if(h==0)

}}return c;

}void

c_print

(int n,

int s,

int l,

int a,

int one_num)

vector<

int> c;

for(

int i=

0; istring result=

trans_2_16

(r);

cout<}else cout<<

"-"

c_print_1

(int n,

int s,

int l,

int a,

int one_num)

for(

int i=

0; istring result=

trans_2_16

(r);

cout<}else cout<<

"-";}}

intmain()

cin>>m;

if(n==2)

}else

}int kk;

for(

int ii=

0; ii1; ii++

) cin>>kk;

if(kksize()

) cout<;else cout<<

"-";

return0;

}int a;

for(

int ii=

0; ii1; ii++

) cin>>a;

c_print_1

(n, s, l, a, one_num)

;return0;

}

CCF損壞的RAID硬碟

1 使用太多次cin讀入,會嚴重降低讀入速度,需要加上這一句話。ios sync with stdio false 一定要有這句話才能提高速度 2 這裡需要注意的是 如果在程式中加入了上面那一句 不能出現scanf和cin,printf和cout混用的情況。因為上面那一句 實際上是解除了scanf和...

CCF認證 送貨

問題描述 為了增加公司收入,f公司新開設了物流業務。由於f公司在業界的良好口碑,物流業務一開通即受到了消費者的歡迎,物流業務馬上遍及了城市的每條街道。然而,f公司現在只安排了小明乙個人負責所有街道的服務。任務雖然繁重,但是小明有足夠的信心,他拿到了城市的地圖,準備研究最好的方案。城市中有n個交叉路口...

ccf認證最大的矩形

問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i 1 i n 個矩形的高度是hi。這n個矩形構成了乙個直方圖。例如,下圖中六個矩形的高度就分別是3,1,6,5,2,3。請找出能放在給定直方圖裡面積最大的矩形,它的邊要與座標軸平行。對於上面給出的例子,最大矩形如下圖所示的陰影部分,面積...