小码王自招辅导Day4-复赛形式真题训练
2025-07-04 16:54:26
发布于:广东
比赛链接 邀请码:DW2n
[CSP-J 2019] 数字游戏
#include <iostream>
using namespace std;
int main() {
int ans = 0;
string s;
cin >> s;
for(int i = 0; i < s.size(); i++)
ans += s[i] == '1';
cout << ans << endl;
return 0;
}
[CSP-J 2019] 公交换乘
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main() {
int n, ans = 0;
deque<pair<int, int>> dq;
cin >> n;
for(int i = 1; i <= n; i++) {
int opt, p, t;
cin >> opt >> p >> t;
if(opt == 0) {
ans += p;
dq.push_back({p, t});
}
else {
while(!dq.empty() && t - dq.front().second > 45) dq.pop_front();
for(auto it = dq.begin(); it != dq.end(); it++) {
if((*it).first >= p) {
dq.erase(it);
goto nt;
}
}
ans += p;
nt:;
}
}
cout << ans;
return 0;
}
[CSP-J 2024] 地图探险
#include <iostream>
#include <vector>
using namespace std;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
void solve() {
int n, m, k, ans = 0;
cin >> n >> m >> k;
vector<vector<char>> v(n + 1, vector<char>(m + 1));
vector<vector<bool>> flag(n + 1, vector<bool>(m + 1));
int x, y, d;
cin >> x >> y >> d;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
cin >> v[i][j];
flag[x][y] = true;
while(k--) {
int nx = x + dx[d], ny = y + dy[d];
if(nx < 1 || nx > n || ny < 1 || ny > m || v[nx][ny] == 'x') {
d = (d + 1) % 4;
continue;
}
x = nx, y = ny, flag[x][y] = true;
}
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
ans += flag[i][j];
cout << ans << '\n';
}
int main() {
int t;
cin >> t;
while(t--) solve();
return 0;
}
[CSP-J 2019] 纪念品
#include <iostream>
#include <vector>
using namespace std;
int main() {
int t, n, m;
cin >> t >> n >> m;
vector<vector<int>> p(n + 1, vector<int>(t + 1));
for(int i = 1; i <= t; i++)
for(int j = 1; j <= n; j++)
cin >> p[j][i];
for(int k = 1; k < t; k++) {
vector<int> dp(m + 1);
for(int i = 1; i <= n; i++)
for(int j = p[i][k]; j <= m; j++)
dp[j] = max(dp[j], dp[j - p[i][k]] + p[i][k + 1] - p[i][k]);
m += dp[m];
}
cout << m;
return 0;
}
全部评论 1
2025-07-04 来自 广东
1
有帮助,赞一个