造資料時的快速生成方法

2021-08-01 19:58:54 字數 1482 閱讀 8909

最近z老師要求出題目,出題目可以分為以下幾步:

1.寫體面

2.造資料  寫標程

3.檢測一下  寫個說明

這篇文章就造資料這個過程來謝謝我的感悟並分享一些技巧

那這道分塊題為例

分塊入門4(blocks_4.cpp)

時間限制:1s   記憶體限制:256m

description

給定乙個長為n的序列,要求支援m次下列操作

1.區間加法,即對一段區間內的數整體加上乙個數val

2.區間求和,即輸出一段區間內的數的和

input

*第一行:兩個整數n,m

*第二行:n個整數,a[i]表示原數列中的第i個數

*第3~m+2行:每行格式如下:add x y val 或 sum x y

output

對於每一行詢問,輸出第x個數到第y個數之間的數的和

sample input

10 5

1 2 3 4 5 6 7 8 9 10

add 1 5 3

sum 6 2

add 4 7 2

add 2 6 1

sum 1 10

sample output

資料範圍

50%的資料1<=n,m<=10000,

100%的資料,1<=n,m<=100000,1<=x,y<=n, 0<=val,a[i]<=100000

x不一定<=y,記得使用scanf,printf.

source

我們有了這樣乙個造資料的過程:

void make_data(int n,int m,int min_val,int max_val,int min_range)

return 0;

}

注意到這裡的十個檔案是0~~9.in

這是為什麼吶?

因為ascii碼中只有字元』0』~~』9』 啊

所以在這裡就不用1~~10.in 了,畢竟為了方便

造十個資料的方法到這裡就結束了

但是我們就是要1~~10.in 檔案呢,或者說我們要造100組資料該怎麼辦呢?

其實也很簡單,因為只是多了幾個字元而已,所以寫個過程生成檔名就ok了

void make_name(int k,char name)

while (k)

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

name[len-i]=num[i]+'0';

name[len]='.'; name[len+1]='i'; name[len+2]='n'; name[len+3]='\0';

}

最後,就是根據標程生成.out檔案時也可以用類似方法

這樣就再也不用一次次生成了!

當然這種方法比較簡陋,還有很多高大上的方法,比如bat批處理,或者string型別中的一些函式都可以快速完成轉換,之後我會再寫一篇文章介紹的。

陣列的生成方法

1 1.由列表生成 2np.array list output array list 34 2.陣列的基本操作 56 import numpy as np78 10種陣列初始化方法 9 1 建立乙個長度為10的陣列,陣列的值都是0 10 np.zeros 10,dtype int 1112 2 建立...

軟體測試中通用資料生成方法

軟體測試中非常重要的乙個工作就是生成和維護測試資料,而這個工作恰恰是繁瑣 重複而極易出錯的。無疑找到一種通用的資料生成方法是極具意義的。本文闡釋了如何使用指令碼語言 php,加上簡單的 ini 配置檔案來達到這個目的的。測試資料的生成和維護在測試中是非常重要的一環。很多用例實際上就是在修改所測程式的...

android OTA差分包的生成方法

在make android系統後,會生成系統的img檔案。make otapackage 會生成sd卡用的全部系統公升級包,有260m多。要生成增量公升級包。需要按以下步驟。mkdir ota source build envsetup.sh choosecom 1 1 7 eng make mak...