本文主要是介绍【河北经贸大学蓝桥杯热身赛】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
B 奇怪的数字对
第二题题目有点问题,可以重复取相同的数
#include<iostream>
using namespace std;
int gcd(int a,int b)
{if(b==0){return a;}elsereturn gcd(b,a%b);
}
int main()
{int res=0;for(int i=1;i<=2022;i++){for(int j=1;j<=2022;j++){if(gcd(i,j)==1)res++;}}cout<<res<<endl;
}
C 蛇形填数
提供赛时两位同学的做法
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;void run()
{int i, j; ll sum = 1;for (i = 1; i <= 17; i ++ ) sum += 4*i;cout <<sum<<endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();}
#include <bits/stdc++.h>using namespace std;
int a[110][110];
void solve()
{int x = 1, cnt = 0;for(int i = 1; i <= 100; i++){cnt++;if(cnt % 2 == 0){for(int j = 1, k = i; j <= i && k >= 1; j++, k--){a[j][k] = x++; }}else{for(int j = i, k = 1; j >= 1 && k <= i; j--, k++){a[j][k] = x++; }}}cout << a[18][18] << endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T = 1;//cin >> T;while(T--)solve();return 0;
}
E 钞票探测
直接暴力即可,注意一不是素数
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;int a[N];void run()
{int i, j;int ans = 0; for (i = 1; i <= 2022; i ++ ) {int flag = 0;for (j = 2; j*j <= i; j ++) {if(i % j == 0) {flag = 1;break;}}if(!flag)ans += 1;}cout << 306 << endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();}
F 小贸的蓝桥杯成绩
注意要四舍五入,以下两种写法均可
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e4 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;int a[N];void run()
{cout << fixed << setprecision(0);int n; cin >>n;int ans = 0;int pass = 0, good = 0;for(int i = 1; i <= n; i ++) {int x; cin >> x;if(x >= 60) pass += 1;if(x >= 85) good += 1;}double ans1 = round(pass*100.0/n);double ans2 = round(good*100.0/n);cout << ans1 << "%\n";cout << ans2 << "%";
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();return 0;}
#include<bits/stdc++.h>using namespace std;const int N = 10010;int n;
int a[N];int main()
{cin >> n;for(int i = 0; i < n; i++)cin >> a[i];int x = 0,y = 0;for(int i = 0; i < n; i++){if(a[i] >= 60) x ++;if(a[i] >= 85) y ++;}cout << (int)((x * 1.0 / n * 100) + 0.5) << "%" << endl;cout << (int)((y * 1.0 / n * 100) + 0.5) << "%" << endl;
}
H 取金币
简单dp,只需要给出状态转移方程即可,如果不会,可以自行百度学习
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e3 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;int a[N][N];
int f[N][N];void run()
{int i, j; int n; cin >> n;for (i = 1; i <= n; i ++ ) {for (j = 1; j <= n; j ++) {cin >> a[i][j];}}for (i = 1; i <= n; i ++ ) {for (j = 1; j <= n; j ++ ) {f[i][j] = max(f[i-1][j], f[i][j-1]) + a[i][j];}}cout << f[n][n] << endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();}
I 砝码称重
给出赛时两位同学的写法
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;int w[N];
bool f[1010][N];void run()
{int i, j; int n, m = 0; cin >> n;for (i = 1; i <= n; i ++) cin >> w[i], m += w[i];f[0][0] = 1;for (i = 1; i <= n; i ++ ) {for(j = 0; j <= m; j ++ ) {f[i][j] = f[i-1][j] // 上一次可以成功,这次也能成功 ||f[i-1][abs(j-w[i])] // 加上w[i],注意这里取绝对值||f[i-1][j+w[i]]; // 减去w[i]}}int ans = 0;for (i = 1; i <= m; i++ ) ans += f[n][i];cout << ans << endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();}
#include<bits/stdc++.h>using namespace std;const int N = 230 , M = 2e5 + 50 , B = 1e5 + 10;bool f[N][M];//f(i,j)表示只从前i个数中选,和为j的方案,属性:是否为空
int sum;
int n;
int a[N];
int cnt;int main()
{cin>>n;//砝码有正负两个值 for(int i = 1;i <= 2 * n;i ++){cin>>a[i];i ++;a[i] = -a[i - 1];sum += a[i - 1];//正的数之和 }//初始化,0肯定可以凑成 for(int i = 0;i <= 2 * n;i ++)f[i][B] = true; for(int i = 1;i <= 2 * n;i ++)//2 * n个物品 for(int j = -sum;j <= sum;j ++)//可以称量的范围 {//可以选 if( j - a[i] >= -sum && j - a[i] <= sum ) f[i][j + B] = f[i][j + n + B] + f[i - 1][j - a[i] + B];//不选f[i][j + B] = f[i][j + B] + f[i - 1][j + B]; } //ansfor(int j = 1;j <= sum;j ++)if(f[2 * n][j + B] == true)//可以凑出cnt ++;cout<<cnt;return 0;
}
J 荧光夜跑来啦
dijstar模板题,有很多种写法,如果不会可以学一下
#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define deb2(x, y) cout << #x << '=' << x << ',' << #y << '=' << y <<endlusing namespace std;const int N = 1e5 + 10, mod = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> PII;int h[N], e[N*2], ne[N*2], w[N], idx;void add(int a, int b, int c) {e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++ ;
// cout<<idx-1 << ' ' << a << ' ' << e[idx-1] << ' ' << w[idx-1] <<endl;
}int d[N], st[N];
void dij() {int i, j;memset(d, 0x3f, sizeof d);memset(st, 0, sizeof st);d[1] = 0; priority_queue<PII, vector<PII>, greater<PII>> q;q.push({d[1], 1});while(!q.empty()) {auto t = q.top(); q.pop();int x = t.second;if(st[x]) continue;st[x] = 1;for (i = h[x]; i != -1; i = ne[i]) {int y = e[i];if(st[y]) continue;if(d[y] > d[x] + w[i]) {d[y] = d[x] + w[i];q.push({d[y], y});}}}
}void run()
{int i, j; int n, m; cin >>n >>m;memset(h, -1, sizeof h);while(m -- ) {int a, b, c; cin >> a >> b >> c;
// deb2(a, b);add(a, b, c);
// add(b, a, c);}dij();if(d[n] <0x3f3f3f3f)cout << d[n] << endl;else cout << "impossible";
}signed main()
{ios::sync_with_stdio(false), cin.tie(0);cout << fixed; cout.precision(18);int T = 1;//cin >> T;while(T -- ) run();}/*
3 3
1 2 5
2 3 3
1 3 9
*/
这篇关于【河北经贸大学蓝桥杯热身赛】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!