#include<iostream>#include<algorithm>usingnamespace std;constint N =110;int n, m;int v[N], w[N], s[N];int f[N][N];intmain(){
cin >> n >> m;for(int i =1; i <= n; i++) cin >> v[i]>> w[i]>> s[i];for(int i =1; i <= n; i++)for(int j =0; j <= m; j++)for(int k =0; k <= s[i]&& k*v[i]<= j; k++)
f[i][j]=max(f[i][j], f[i-1][j - v[i]* k]+ w[i]* k);
cout << f[n][m]<< endl;return0;}
二、AcWing 5. 多重背包问题 II
1. 问题描述
2. 问题解决
#include<iostream>#include<algorithm>usingnamespace std;constint N =12010, M =2010;int n, m;int v[N], w[N];int f[N];intmain(){
cin >> n >> m;int cnt =0;for(int i =1; i <= n; i ++){int a, b, s;
cin >> a >> b >> s;int k =1;while(k <= s){
cnt++;
v[cnt]= a*k;
w[cnt]= b*k;
s -= k;
k *=2;}if(s >0){
cnt++;
v[cnt]= a*s;
w[cnt]= b*s;}}
n = cnt;for(int i =1; i <= n; i++)for(int j = m; j >= v[i]; j--)
f[j]=max(f[j], f[j - v[i]]+ w[i]);
cout << f[m]<< endl;return0;}
三、AcWing 9. 分组背包问题
1. 问题描述
2. 问题解决
#include<iostream>#include<algorithm>usingnamespace std;constint N =110;int n, m;int v[N][N], w[N][N], s[N];int f[N];intmain(){
cin >> n >> m;for(int i =1; i <= n; i++){
cin >> s[i];for(int j =0; j < s[i]; j++)
cin >> v[i][j]>> w[i][j];}for(int i =1; i <= n; i++)for(int j = m; j >=0; j--)for(int k =0; k < s[i]; k++)if(v[i][k]<= j)
f[j]=max(f[j], f[j - v[i][k]]+ w[i][k]);
cout << f[m]<< endl;return0;}
四、蓝桥杯十一届 单词分析
1. 问题描述
2. 问题解决
#include<iostream>usingnamespace std;constint N =25;
string str;int h[N];intmain(){
cin >> str;for(char c : str)
h[c -'a']++;int maxi =23;for(int i =23; i >=0; i--)if(h[maxi]<= h[i]) maxi = i;
cout <<char(maxi +'a')<< endl;
cout << h[maxi]<< endl;return0;}
五、蓝桥杯十一届 成绩统计
1. 问题描述
2. 问题解决
#include<iostream>#include<cmath>usingnamespace std;constint N =10010;int n;int a[N];intmain(){
cin >> n;int j =0, y =0;for(int i =0; i < n; i++){
cin >> a[i];if(a[i]>=60) j++;if(a[i]>=85) y++;}
cout <<int(round(j /1.0/ n *100))<<'%'<< endl;
cout <<int(round(y /1.0/ n *100))<<'%'<< endl;return0;}