牛客小白月赛97
比赛链接:牛客小白月赛97
A
思路
代码
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 10; int num[N]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { int a; cin >> a; num[a]++; } for (int i = 1; i <= 100; i++) { if (num[i] >= 3) { cout << "YES" << endl; return 0; } } cout << "NO" << endl; return 0; }
B
思路
代码
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 10; ll a[N]; int main() { int n, flag = 0; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; if (a[i] == 0) { flag = 1; } } if (flag == 1) cout << "NO" << endl; else cout << "YES" << endl; return 0; }
C
思路
代码
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e6 + 10; const ll mod = 1e9 + 7; ll qsm(ll x, ll y) { ll res = 1; while (y) { if (y & 1) { res *= x; res %= mod; } x *= x; x %= mod; y /= 2; } return res; } ll c(ll x, ll y) { ll res = 1; for (ll i = x + 1; i <= y; i++) { res *= i; res %= mod; } ll res2 = 1; for (ll i = y - x; i >= 1; i--) { res2 *= i; res2 %= mod; } res *= qsm(res2, mod - 2); res %= mod; return res; } int main() { int n, x; cin >> n >> x; ll now = pow(sqrt(x), 2), num = sqrt(x); if (num < n) { cout << 0 << endl; return 0; } ll res = 1; for (int i = num; i > n; i--) { res += c(n - 1, i - 1); res %= mod; } cout << res ; return 0; }
D
思路
代码
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e2 + 10; struct point{ ll x, y, num; }; int dis[10][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; ll a[N][N], c[N][N], dp[20][20][10010]; int main() { ll n, m, p; cin >> n >> m >> p; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { for (int k = 0; k <= p; k++) { dp[i][j][k] = 1e9; } } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; a[i][j] %= (p - 1); } } for (int i =1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> c[i][j]; } } queue<point>q; q.push({1, 1, a[1][1]}); dp[1][1][a[1][1]] = 0; while (!q.empty()) { ll x = q.front().x, y = q.front().y, num = q.front().num; q.pop(); for (int i = 0; i < 4; i++) { ll dx = x + dis[i][0], dy = y + dis[i][1]; if (dx > n || dx < 1 || dy > m || dy < 1) continue; ll dnum = (num + a[dx][dy]) % (p - 1); if (dp[dx][dy][dnum] <= dp[x][y][num] + 1) continue; dp[dx][dy][dnum] = dp[x][y][num] + 1; q.push({dx, dy, dnum}); } } if (dp[n][m][0] != 1e9) cout << dp[n][m][0]; else cout << -1 << endl; return 0; }
E
思路
代码
F
思路
代码
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步