23暑假友谊赛No.2
23暑假友谊赛No.2
A-雨_23暑假友谊赛No.2 (nowcoder.com)
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(nullptr); int a,b,c,d,x; cin >> a >> b >> c >> d >> x; cout << (a > x ? 0 : x - a) << ' ' << (b > x ? 0 : x - b) << ' ' << (c > x ? 0 : x - c)<< " " << (d > x ? 0 : x - d); return 0; }
B-吻_23暑假友谊赛No.2 (nowcoder.com)
啊,忘了加后取模,我真傻,真的.
#include <bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(nullptr); const int mod = 998244353; int n; cin >> n; n %= mod; cout << (n % mod + n % mod * (n - 1) % mod) % mod << endl; return 0; }
C-失_23暑假友谊赛No.2 (nowcoder.com)
模拟
#include <bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(nullptr); string s; int n; cin >> s >> n; vector<string> ans(n); for(auto &i : ans) cin >> i; vector<int> k(n); for(int i = 0;i < n;i ++){ if(ans[i].size() != s.size()){ k[i] = 0; }else{ for(int j = 0;j < s.size();j ++) k[i] += (ans[i][j] == s[j]); } } vector<string> res; int m = *max_element(k.begin(),k.end()); for(int i = 0;i < n;i ++){ if(k[i] == m) res.emplace_back(ans[i]); } sort(res.begin(),res.end()); for(auto i : res) cout << i << endl; return 0; }
D-吹_23暑假友谊赛No.2 (nowcoder.com)(动态规划)
\(dp[i][0/1]\)表示当前数为1或原数时的最大可爱值.
若当前数为1,则它的最大值为它左边为1的可爱值或为原数时加上原数 - 1的可爱值
若当前数为原数,则它的最大值为左边为1加上当前数 - 1 或 为 原数时加上原数与当前数的差的绝对值
#include <bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(nullptr); int n; cin >> n; vector<int> a(n); for(auto &i : a) cin >>i ; vector dp(n,vector<int>(2,0)); for(int i = 1;i < n;i ++){ dp[i][0] = max(dp[i - 1][0],dp[i - 1][1] + abs(a[i - 1] - 1)) ; dp[i][1] = max(dp[i - 1][0] + abs(a[i] - 1), dp[i - 1][1] + abs(a[i - 1] - a[i])); } cout << max(dp[n - 1][0],dp[n - 1][1]) << endl; return 0; }
E-唤_23暑假友谊赛No.2 (nowcoder.com)
首先边长为4,5,6的纸片都各需要一个正方形边框,而一个正方形边框可以装4个边长为3的纸片,边长为2和1的纸片可以放在这些纸片的空隙中,需要特殊处理.
一个边长为4的纸片可以放5个边长为2的,四个边长为3的纸片放不了边长为2的,一个边长为3的可以放5个,二个边长为3的可以放3个,三个边长为3的可以放1个,处理出当前有多少空隙可以放边长为2的纸片后继续处理边长为1的.
边长为1的只要看当前的边框面积减去已放入的纸片的面积,剩下的面积都能放边长为1的,比较一下看看还需不需要再继续加边框即可
#include <bits/stdc++.h> #define int long long using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(nullptr); int T; cin >> T; while(T--){ int s; cin >> s; int s3[] = {0,5,3,1}; vector<int> k(7); for(int i = 1;i <= 6;i ++) cin >> k[i]; int ans = 0; ans += k[6] + k[5] + k[4] + (k[3] + 3) / 4; int num2 = 5 * k[4] + s3[k[3] % 4]; if(k[2] > num2) ans += (k[2] - num2 + 8) / 9; int sum = ans * 36 - k[6] * 36 - k[5] * 25 - k[4] * 16 - k[3] * 9 - k[2] * 4; if(k[1] > sum) ans += (k[1] - sum + 35) / 36; cout << (ans > s ? "No" : "Yes") << endl; } return 0; }
本文作者:Ke_scholar
本文链接:https://www.cnblogs.com/Kescholar/p/17583414.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步