Tin học CP Guide 101 - Ep 1: Prologue and Problem 1

quoclanxxx

Học sinh
Thành viên
23 Tháng mười hai 2015
15
40
46
Yên Bái
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Chào mọi người.

Thì như trưa nay mình có đề cập, mình sẽ mở một chuyên mục mới cho bộ môn Tin học chúng ta, mình gọi đó là Competitive Programing (viết tắt là CP) Guide 101 (Cẩm nang Lập trình thi đấu 101), dành cho những bạn đang và có hứng thú với bộ môn này. Đây là nơi mình sẽ chia sẻ những lý thuyết, kinh nghiệm của mình khi tham gia CP, giúp các bạn có được kiến thức vững vàng cùng với chúng. Những bài tập, bài học mình đưa ra đều có tính chọn lọc ngẫu nhiên, và khá là hạn hẹp, nên nếu có gì thắc mắc hoặc bổ sung thì các bạn cứ comment ở dưới ha. :3

Với mỗi một tuần mình sẽ có 2 tập vào ngày T7 và CN, với lịch trình rất đơn giản.
  • T7: Mình sẽ đưa ra problem liên quan đến bài học sẽ có vào ngày CN, các bạn hãy cùng mình giải, code để vượt qua bài toán đó.
  • CN: Mình sẽ chọn ra một vài bạn (có thể tối đa là 5) để nhận xét và chấm code, sau đó đưa ra solution cũng như bài học hôm đó.
Mong các bạn ủng hộ chuyên mục này, và nếu bạn nào có bài học hay ý tưởng hay, thú vị thì có thể nhắn riêng hoặc comment trên blog, mình luôn sẵn sàng trả lời các bạn nha. :3

Và đó là prologue của mình, sau đây sẽ là Problem 1:

Cho mảng [TEX]A[/TEX] bao gồm [TEX]n[/TEX] phần tử [TEX]A_1, A_2,...A_n[/TEX]. Có [TEX]Q[/TEX], truy vấn, mỗi truy vấn bao gồm 2 số [TEX]l,r[/TEX] và yêu cầu ta tính tổng các phần tử [TEX]A_l, A_{l + 1},...A_r[/TEX].
Hãy thực hiện và in ra kết quả các truy vấn trên.

INPUT:
  • Dòng đầu tiên bao gồm số nguyên [TEX]N[/TEX] [TEX](1 \leqslant N \leqslant 10^5)[/TEX] thể hiện số phần tử thuộc mảng trên.
  • Dòng thứ hai bao gồm [TEX]N[/TEX] số nguyên [TEX]A_i[/TEX] ([TEX]1 \leqslant i \leqslant N, |{A_i}| \leqslant 10^3[/TEX]).
  • Dòng thứ ba bao gồm số nguyên [TEX]Q[/TEX] ([TEX] 1 \leqslant Q \leqslant 10^6 [/TEX]) - số lượng truy vấn.
  • [TEX]Q[/TEX] dòng sau, mỗi dòng gồm 2 số nguyên [TEX]l \: r[/TEX] [TEX](1 \leqslant l \leqslant r \leqslant N)[/TEX] thể hiện truy vấn của dòng đó.
OUTPUT:
Gồm [TEX]Q[/TEX] dòng, mỗi dòng một số nguyên duy nhất thể hiện kết quả của truy vấn tương ứng.
Solution sẽ có vào lúc 8h tối mai nhé.

Chúc các bạn học tốt nha. ^^
 

H.Bừn

Cựu Mod phụ trách Sinh học
Thành viên
18 Tháng ba 2017
1,218
2,568
419
Gia Lai
Chào mọi người.

Thì như trưa nay mình có đề cập, mình sẽ mở một chuyên mục mới cho bộ môn Tin học chúng ta, mình gọi đó là Competitive Programing (viết tắt là CP) Guide 101 (Cẩm nang Lập trình thi đấu 101), dành cho những bạn đang và có hứng thú với bộ môn này. Đây là nơi mình sẽ chia sẻ những lý thuyết, kinh nghiệm của mình khi tham gia CP, giúp các bạn có được kiến thức vững vàng cùng với chúng. Những bài tập, bài học mình đưa ra đều có tính chọn lọc ngẫu nhiên, và khá là hạn hẹp, nên nếu có gì thắc mắc hoặc bổ sung thì các bạn cứ comment ở dưới ha. :3

Với mỗi một tuần mình sẽ có 2 tập vào ngày T7 và CN, với lịch trình rất đơn giản.
  • T7: Mình sẽ đưa ra problem liên quan đến bài học sẽ có vào ngày CN, các bạn hãy cùng mình giải, code để vượt qua bài toán đó.
  • CN: Mình sẽ chọn ra một vài bạn (có thể tối đa là 5) để nhận xét và chấm code, sau đó đưa ra solution cũng như bài học hôm đó.
Mong các bạn ủng hộ chuyên mục này, và nếu bạn nào có bài học hay ý tưởng hay, thú vị thì có thể nhắn riêng hoặc comment trên blog, mình luôn sẵn sàng trả lời các bạn nha. :3

Và đó là prologue của mình, sau đây sẽ là Problem 1:

Cho mảng [TEX]A[/TEX] bao gồm [TEX]n[/TEX] phần tử [TEX]A_1, A_2,...A_n[/TEX]. Có [TEX]Q[/TEX], truy vấn, mỗi truy vấn bao gồm 2 số [TEX]l,r[/TEX] và yêu cầu ta tính tổng các phần tử [TEX]A_l, A_{l + 1},...A_r[/TEX].
Hãy thực hiện và in ra kết quả các truy vấn trên.

INPUT:
  • Dòng đầu tiên bao gồm số nguyên [TEX]N[/TEX] [TEX](1 \leqslant N \leqslant 10^5)[/TEX] thể hiện số phần tử thuộc mảng trên.
  • Dòng thứ hai bao gồm [TEX]N[/TEX] số nguyên [TEX]A_i[/TEX] ([TEX]1 \leqslant i \leqslant N, |{A_i}| \leqslant 10^3[/TEX]).
  • Dòng thứ ba bao gồm số nguyên [TEX]Q[/TEX] ([TEX] 1 \leqslant Q \leqslant 10^6 [/TEX]) - số lượng truy vấn.
  • [TEX]Q[/TEX] dòng sau, mỗi dòng gồm 2 số nguyên [TEX]l \: r[/TEX] [TEX](1 \leqslant l \leqslant r \leqslant N)[/TEX] thể hiện truy vấn của dòng đó.
OUTPUT:
Gồm [TEX]Q[/TEX] dòng, mỗi dòng một số nguyên duy nhất thể hiện kết quả của truy vấn tương ứng.
Solution sẽ có vào lúc 8h tối mai nhé.

Chúc các bạn học tốt nha. ^^

Uây, một chương trình khá bổ ích luôn này, để tui ủng hộ nhen.
Mã:
#include <bits/stdc++.h>
using namespace std;

#define int ll
#define TASK ""
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define MASK(i) (1ll << (i))
#define BIT(x, i) (((x) >> (i)) & 1ll)
#define builtin_popcount __builtin_popcountll
#define Times cerr <<"\nTime: "<<clock()/(double)1000<<" sec"
// cout << setprecision(0) << fixed << ans;

#define FOR(i, l, r) for (int i = (l); i <= (r); ++i)
#define FORD(i, r, l) for (int i = (r); i >= (l); --i)
//  :>>

typedef long long ll;
typedef pair<int,int> ii;
typedef pair<ii, int> iii;
const int INF = 1e9;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
const int Sz = 1e6 + 5;

void setIO() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    if (fopen(TASK".inp","r")) {
        freopen(TASK".inp","r",stdin);
        freopen(TASK".out","w",stdout);
    }
}
/***------------------------- END ---------------------------***/
int n, pre[N];

void test_case() {
    int u, v;
    cin >> u >> v;
    cout << pre[v] - pre[u-1] << '\n';
}

signed main() {
    setIO();
    int TC = 1;
  
    cin >> n;
  
    FOR(i, 1, n) {
        int val;
        cin >> val;
        pre[i] = pre[i-1] + val;
    }
  
    while (TC--) {
          test_case();
    }
    return 0;
}

Bro nhận xét, có gì qua box Sinh dạo chơi chút xíu tham gia minigame ủng hộ nhen.
Chúc ep sau thành công, respect tinh thần của ông.

-----------------
Minigame - Truy tìm hội chứng ở người.
Khám phá thế giới sinh học.
 
Top Bottom