Nộp bài | Các bài nộp | Làm tốt nhất | Về danh sách bài |
NKTEST - Kiểm tra chương trình |
Test tuy không phải là phương pháp để chứng minh tính đúng đắn của chương trình, nhưng vẫn được sử dụng rộng rãi để phát hiện lỗi sai và tăng độ tin cậy. Có nhiều phương pháp hiệu chỉnh chương trình, nhưng nội dung chủ yếu vẫn dựa trên cơ sở chọn các bộ tests để đi vào các nhánh khác nhau của chương trình.
Cho mô tả chương trình dưới dạng các dòng lệnh. Các lệnh tuyến tính được ký hiệu là S, lệnh rẽ nhánh không đầy đủ được xác định bởi 2 câu lệnh IF và END_IF, lệnh rẽ nhánh đầy đủ được xác định bởi 3 câu lệnh IF, ELSE, và END_IF. Điều kiện sau IF được bỏ qua trong mô tả. Chương trình kết thúc bằng lệnh ENDPROGRAM.
Yêu cầu: xác định số lượng tests cần thiết để kiểm tra tất cả các nhánh của chương trình.
Dữ liệu
Gồm nhiều dòng, mô tả một chương trình theo định dạng đã nêu.
Kết qủa
Gồm 1 dòng duy nhất, chứa số lượng tests cần thiết để kiểm tra tất cả các nhánh của chương trình.
Giới hạn
Kết quả không vượt quá 231-1
Ví dụ
Dữ liệu: S IF S S ELSE IF IF S ELSE S END_IF S ELSE S END_IF END_IF S ENDPROGRAM Kết qủa 4 Dữ liệu: S IF END_IF ENDPROGRAM Kết qủa 2 Dữ liệu: S S ENDPROGRAM Kết qủa 1
Được gửi lên bởi: | Jimmy |
Ngày: | 2007-12-01 |
Thời gian chạy: | 0.100s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | Tất cả ngoại trừ: ERL GOSU JS-RHINO NODEJS PERL6 PYPY RUST SED VB.NET |
Nguồn bài: | UVA |
hide comments
|
||||||
2021-11-15 03:02:24
www.spoj.com/problems/BOOKS1 www.spoj.com/problems/AGGRCOW www.spoj.com/problems/INVCNT http://www.spoj.com/problems/PT07Y/ http://www.spoj.com/problems/NAKANJ/ www.spoj.com/problems/BENEFACT http://www.spoj.com/problems/MICEMAZE/ http://www.spoj.com/problems/BUGLIFE/ www.spoj.com/problems/GCPC11J http://www.spoj.com/problems/ABCPATH/ http://www.spoj.com/problems/ALLIZWEL/ http://www.spoj.com/problems/TRAFFICN/ www.spoj.com/problems/EASUDOKU http://www.spoj.com/problems/EZSUDOKU/ http://www.spoj.com/problems/MKJUMPS/ Local server Local server GSCS server (Vietnamese) http://www.spoj.com/problems/HERDING/ http://www.spoj.com/problems/ELEVTRBL/ http://www.spoj.com/problems/LABYR1/ http://www.spoj.com/problems/SHOP/ http://www.spoj.com/problems/SERGRID/ http://www.spoj.com/problems/ONEZERO/ |
||||||
2021-11-12 10:28:19
3 3 3 3 3 4 2 2 2 2 7 4 1 0 1 1 0 1 Output 0 2 3 |
||||||
2021-11-12 10:28:01
#include <iostream> using namespace std; #define FOR(i,a,b) for(int i=(a); i<=(b); i++) #define FORD(i,a,b) for(int i=(a); i>=(b); i--) typedef long long LL; const int MAXN = 20000; int N; LL a[MAXN+1]; LL SUM_LR[MAXN+2]; LL SUM_RL[MAXN+2]; int _maxCount; void F(); void backtrack(const int& start, const int& end, int count); int main() { freopen("ChiaDoi2_in.txt","r",stdin); // freopen("ChiaDoi_out.txt","w",stdout);// int T; cin >> T; FOR(i,1,T) F(); return 0; } void F() { cin >> N; FOR(i,1,N) cin >> a[i]; SUM_LR[0] = 0; FOR(i,1,N) SUM_LR[i] = SUM_LR[i-1] + a[i]; SUM_RL[N+1] = 0; FORD(i,N,1) SUM_RL[i] = SUM_RL[i+1] + a[i]; if(SUM_LR[N] == 0) cout << N-1 << endl; else{ _maxCount = 0; backtrack(1,N,0); cout << _maxCount << endl; } } void backtrack(const int& start, const int& end, int count) { if(start < end) { FOR(i,start,end-1) { // Chia doi duoc LL L = SUM_LR[i] - SUM_LR[start-1]; LL R = SUM_RL[i+1] - SUM_RL[end+1]; if(L == R) { count++; if(count > _maxCount) _maxCount = count; //cout << "Tach " << i << " - " << (i+1) << endl; backtrack(start,i,count); backtrack(i+1,end,count); return; // Không có dòng return này sẽ bị TLE count--; // Khi có return ở trên rồi thì cái này cũng vô ích } } } } |
||||||
2021-11-11 02:46:27
2 3 7 2 1 5 1 2 2 2 4 10 10 2 1 5 1 2 2 2 9 11 Sample Output #1 6 #2 12 |
||||||
2021-11-11 02:46:08
Level 4 Minimal Big Sum Suppose 'A' is a non empty zero indexed array of 'N' integers and 'K' is another Integer. Array 'A' needs to be divided into 'K' blocks of consecutive elements. Size of the block is any integer such that , 0 <= size of block <= N. Every element of the array should belong to some block. The sum of the block from X to Y equals A[X] + A[X + 1] + ... + A[Y]. The sum of empty block equals 0. The big sum is defined as the maximal sum of any block. For example, you are given integers 'K' = 3 and array A such that: A[0] = 2 A[1] = 1 A[2] = 5 A[3] = 1 A[4] = 2 A[5] = 2 A[6] = 2 The array can be divided, for example, into the following blocks: [2, 1, 5, 1, 2, 2, 2], [], [] with a big sum of 15; [2], [1, 5, 1, 2], [2, 2] with a big sum of 9; [2, 1, 5], [], [1, 2, 2, 2] with a big sum of 8; [2, 1], [5, 1], [2, 2, 2] with a big sum of 6. The goal is to minimize the big sum. In the above example, 6 is the minimal big sum. |
||||||
2021-08-21 03:07:19
nxhieu Hai Phong vo doi Last edit: 2021-08-21 03:10:50 |
||||||
2021-05-27 18:04:15
Tham khảo: https://vnspoj.github.io/problems/NKTEST |
||||||
2018-02-01 17:06:54
ad cho bài giải đi k hiểu đề bài |
||||||
2016-12-15 16:52:25
bài dễ 1 hit |
||||||
2016-11-27 06:19:51 hồ vãn tuấn
de la the loai gi vay? |