Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 091 912 4899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

hsg tin 12 2020 có giải và test

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Lê Anh Đào
Ngày gửi: 13h:34' 12-12-2023
Dung lượng: 1.5 MB
Số lượt tải: 41
Số lượt thích: 1 người (Vương Văn Cường)
Bài 1: Dùng cấu trúc tuần tự, lặp (Dạng đề "làm theo yêu cầu") Vì K <= 9 nên D sẽ có giá trị từ 2 tới 10 (Hệ nhị
phân tới hệ thập phân) Liên tục thực hiện thao tác lấy số dư của phép chia N chia cho D cho tới khi số dư của nó
khác K, số lần thực hiện được chính là số lượng số K ở phần cuối của N khi chuyển sang hệ số D. Từ đó tìm ra
được đáp án
#include
using namespace std;
#define int long long
#define pii pair
#define fi first

#define se second
#define endl '\n'
#define TASK "chuyendoi"
int n, k;
int val(int d) {
int ret = 0;
int N = n;
while(N % d == k) {
++ret;
N /= d;
}
return ret;
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
if(fopen(TASK".inp", "r")) {
freopen(TASK".inp", "r", stdin);
freopen(TASK".out", "w", stdout);
}
cin >> n >> k;
int ans1, ans2 = -1;
for(int d = 2; d <= 10; ++d) {
int tmp = val(d);
if(tmp > ans2) {
ans1 = d;
ans2= tmp;
}
}
cout << ans1 << ' ' << ans2;
}
Bài 2: Dùng QHĐ
Gọi F[i] là chi phí nhỏ nhất để trả tiền vé cho i người đầu tiên (người 1 -> i)
Với mỗi người có số thứ tự lớn hơn hoặc bằng 1 ( i >= 1):
TH1: Người thứ i không nhờ ai mua vé hộ (F[i] = F[i - 1] + a[i])
Với mỗi người có số thứ tự lớn hơn hoặc bằng 2 (i >= 2):
TH2: Người thứ i tự mua vé hoặc nhờ người i - 1 mua vé hộ F[i] = min(TH1, F[i - 2] + b[i - 1])
Với mỗi người có số thứ tự lớn hơn hoặc bằng 3 (i >= 3):
TH3: Người thứ i tự mua vé, hoặc nhờ người thứ i - 1 mua vé hộ, hoặc nhờ người thứ i - 2 mua vé cho cả 3 người
F[i] = min(TH1, TH2, F[i - 3] + c[i - 2])
#include
using namespace std;
//Num

#define int long long
#define ld long double
//Vector or String
#define all(v) v.begin(), v.end()
#define sor(v) sort(all(v))
#define sz(v) (long long) v.size()
#define remu(v) v.erase(unique(all(v)), end(v))
#define pb push_back
#define eb emplace_back
//Pair Map
#define fi first
#define se second
#define pii pair
#define mii map
#define mib map
//Loop
#define fou(i, a, b) for(int i = a; i <= b; i++)
#define fod(i, a, b) for(int i = a; i >= b; i--)
//Gragh
const int dx[8] = {0, 0, 1, -1, -1, -1, 1, 1};
const int dy[8] = {1, -1, 0, 0, -1, 1, -1, 1};
//Some Func
template bool ckmin(T &a, const T &b) {
return b < a ? a = b, 1 : 0;
}
template bool ckmax(T &a, const T &b) {
return a < b ? a = b, 1 : 0;
}
string its(int n) {
stringstream ss;
ss << n;
string s;
ss >> s;
return s;
}
int sti(string s) {
stringstream ss;
ss << s;
int n;
ss >> n;
return n;
}
//Input Output
#define FIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define TASK "MUAVE"
#define el '\n'

//Mod MaxN
const int MOD = 1e9 + 7;
const int MAX = 2e5 + 1;
const int INF = 1e18;
const ld PI = acos((ld)-1);
void solve() {
int n;
cin >> n;
int a[n + 1], b[n + 1], c[n + 1], f[n + 1];
for(int i = 1; i <= n; i++) {
cin >> a[i] >> b[i] >> c[i];
}
f[0] = 0;
for(int i = 1; i <= n; i++) {
f[i] = f[i - 1] + a[i];
if(i > 1) f[i] = min(f[i], f[i - 2] + b[i - 1]);
if(i > 2) f[i] = min(f[i], f[i - 3] + c[i - 2]);
}
cout << f[n];
}
signed main() {
FIO;
freopen(TASK".inp", "r", stdin); freopen(TASK".out", "w", stdout);
int Q = 1;
//cin >> Q;
while(Q--) {
solve();
}
}
 
Gửi ý kiến