*牛客集訓營第六場補題(未完結)
阿新 • • 發佈:2019-02-05
status pre 現在 需要 href sin cmp 規模 sync
她把題目按難度分為四等,分值分別為6,7,8,9。
已知小B共出了m道題,共n分。
求小B最少出了多少道6分題。
第一天,小j的工資為n元,之後每天他的工資都比前一天多d元。
已知煤氣竈需要m元,求小j最少工作幾天才能買到煤氣竈。
現在有m種顏色,對於第i種顏色,小B有a_i單位的顏料,每單位顏料可以染項鏈的一個珠子;
同時,小B對於第i種顏色的喜愛度為b_i。
已知項鏈有n個珠子,求染色後每個珠子的顏色的喜愛度之和的最大值。
(每個珠子只能至多被染一次,不被染色則喜愛度為0)
題目鏈接:
題號 | 標題 | 已通過代碼 |
---|---|---|
A | 出題 | 點擊查看 |
B | 煤氣竈 | 點擊查看 |
C | 項鏈 | 點擊查看 |
D | 美食 | 點擊查看 |
E | 海嘯 | 點擊查看 |
F | 石頭剪刀布 | 點擊查看 |
G | 區間或和 | 點擊查看 |
H | 肥豬 | 點擊查看 |
I | wzoi | 點擊查看 |
J | 迷宮 | 點擊查看 |
A:思維
題目描述
小B準備出模擬賽。她把題目按難度分為四等,分值分別為6,7,8,9。
已知小B共出了m道題,共n分。
求小B最少出了多少道6分題。
輸入描述:
兩個正整數n,m
輸出描述:
一個數,表示答案。
若無解,輸出"jgzjgzjgz"。
輸入
34 5
輸出
1
輸入
32 5
輸出
3
輸入
5 1
輸出
jgzjgzjgz
備註:
n,m≤1012
描述說明:
m道題n分,n/m>9||n/m<6 無解 ;只有用7還太大的時候才會用6,所以再判斷m*7比總分大,說明要用6代替7,所以大多少就用多少6代替多少7;否則7,8,9就可以,輸出0;
#include<iostream> using namespace std; int main() { long long n, m; cin >> n >> m; if (n > 9 * m || n < 6 * m) { cout << "jgzjgzjgz\n"; } else { if (m * 7 > n)cout << 7 * m - n << "\n"; else cout << 0 << "\n"; } return 0; }
B:二分
題目描述
小j開始打工,準備賺錢買煤氣竈。第一天,小j的工資為n元,之後每天他的工資都比前一天多d元。
已知煤氣竈需要m元,求小j最少工作幾天才能買到煤氣竈。
輸入描述:
四個整數 n,m,d,x
分別表示小j第一天的工資,煤氣竈的價格,工資每天的增長量,答案不超過x
輸出描述:
一個數表示答案
輸入
10 100 20 100
輸出
4
說明
10+30+50+70>=100
備註:
0≤n,d≤10^9,n+d>0
1≤m≤10^18
1≤x≤10^9
描述說明:
數據規模比較大,枚舉肯定超時,用二分就可以了,還有就是用long long
#include<iostream> using namespace std; long long n, m, d, x; int cha() { long long l = 1, r = x,aa=1; while (l <= r) { long long mid = (l + r) >> 1; if ((mid*(n+n+(mid - 1)*d)/ 2) < m && ((mid + 1)*(n+n+mid*d) / 2) >= m) { aa = mid+1; break; } else if ((mid*(n+n+(mid-1)*d)/2)<m) l = mid+1; else r = mid-1; } return aa; } int main() { cin >> n >> m >> d >> x; long long ans; ans=cha(); cout << ans << endl; return 0; }
C:貪心,STL_sort_cmp
題目描述
小B想給她的新項鏈染色。現在有m種顏色,對於第i種顏色,小B有a_i單位的顏料,每單位顏料可以染項鏈的一個珠子;
同時,小B對於第i種顏色的喜愛度為b_i。
已知項鏈有n個珠子,求染色後每個珠子的顏色的喜愛度之和的最大值。
(每個珠子只能至多被染一次,不被染色則喜愛度為0)
輸入描述:
第一行兩個數n,m
第二行m個數a_i
第三行m個數b_i
輸出描述:
一個數表示答案
輸入
5 3 1 2 3 3 2 1
輸出
9
輸入
5 3 1 2 1 3 2 1
輸出
8
備註:
1≤n,m≤10^5,0≤ai,bi≤10^6
描述說明:
貪心,定義一個結構體,從喜愛度由大到小排序.
#include<iostream> #include<algorithm> using namespace std; #define ll long long struct test { ll a; ll b; }x[100010]; bool cmp(const test aa,const test bb) { return aa.b > bb.b; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n, m; long long ans = 0; cin >> n >> m ; for (int i = 0; i < m; i++) cin >> x[i].a; for (int i = 0; i < m; i++) cin >> x[i].b; sort(x, x + m, cmp); int i=0,j = 0; while (j < n&&i<m) { while (x[i].a > 0&&j<n&&i<m) { ans += x[i].b; // cout << ans << " "; x[i].a--; j++; } i++; } cout << ans<<endl; }
*牛客集訓營第六場補題(未完結)