Codeforces Round 963 (Div. 2)
情况时间:2024年8月4日22:35
题解A题意4n个问题,每个答案正确选项abcd个数都是n。给出答案,有?则无。问你最多对几题。
思路简单统计。不超过n的都加进去,超过n按n来算。
代码12345678910111213141516171819202122232425262728void solve(){ int ans[4]={0,0,0,0}; int n; cin >> n; string s; cin >> s; int len = 4 * n; int wen = 0; for (int i = 0; i < len; i++) { if (s[i] == '?') wen++; else ans[s[i] - 'A']++; } sort(ans, ans + 4); int f = 0; for (i ...
Educational Codeforces Round 168 (Rated for Div. 2)
情况时间:2024年7月30日22:35ABC
题解A题意密码连续输两个相同的耗时少。给出字符串增加一个字符让密码耗时长。
思路找两个相同的之间加一下。
代码me12345678910111213141516171819202122{ string s; cin >> s; bool flag = true; for (int i = 0;i<s.size()-1 ;i++){ cout << s[i]; if(s[i] == s[i+1] && flag){ flag = false; if (s[i] != 'z') cout << (char)(s[i] + 1); else cout << 'a'; } } cout ...
Pinely Round 4 (Div. 1 + Div. 2)
情况时间:2024年7月28日22:35
题解A题意 奇数元素个数的数组。能去掉相邻两个元素,最后剩下最大?
思路偶数位置必删,找奇数位置的最大值。
代码123456789101112131415void solve(){ int n; cin >> n; vector<int> a(n); vector<int> b(n); for (int i = 0; i < n; ++i) { cin >> a[i]; if (i % 2 == 0) b.push_back(a[i]); } sort(b.begin(), b.end()); cout << b[b.size() - 1] << endl;}
B题意好数组: bi=ai&ai+1 按位与。给出b,输出一种a或不存在
思路我的思路:先找能否有:条件是连续三个数相同位置不能 1 0 1之后再输出 ...
Codeforces Round 962 (Div. 3)
情况时间:2024年7月26日22:35
题解A题意鸡两只腿,牛4。一共n腿,最少多少只动物
代码1234567891011121314151617void solve(){ int t; cin >> t; int ans = 0; if (t % 4 == 0) { ans = t / 4; } else { ans = (t / 4) + 1; } cout << ans << endl;}
jiangly先/2,看奇偶,再/2
B题意缩一个矩阵。
思路因为放缩长度内的都相等,所以直接从原矩阵隔着一个长度找一个。
代码Fool’s v12345678910111213141516171819202122232425void solve(){ int n, k; cin >> n >> k; int rx = n / k; ...
Codeforces Round 947 (Div. 1 + Div. 2)
情况时间:2024年7月25日15:05这场做的不太正经没认真(2小时a题···)
题解A题意给出一个数组,你可以拆成左右两部分然后交换顺序,问你能否让他单调递增?
思路环形检测这个数组的递增性,最多一处不递增。
代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455void solve(){ int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int cnt = 0; for (int i = 1; i < n; i++) { if (a[i] < a[i - 1]) { if (cnt == 0) ...
Codeforces Round 961 (Div. 2)
情况完成:A/B1时间:2024年7月23日22:35
题解A题意边长n正方形。确定在所有 k 芯片放置中占用对角线的最小可能数量。
思路刚开始1个。后面2个。
代码1234567891011121314151617181920212223242526272829void solve(){ int n,k; cin >> n >> k; if(k == 0) { cout << 0 << "\n"; return; } if(n>=k){ cout << 1 << "\n"; return; } int ans = 1; k-=n; for (int i = n-1; i >= 1; --i) { k -= i; ans++; if ...
Codeforces Round 960 (Div. 2)
情况太惨烈了···时间:2024年7月20日22:35AB。https://imagebed-c8c.pages.dev/file/8e9b4283ee6cd1e5679c3.png
题解A题意Alice和Bob在一个大小为 n的数组 a中玩游戏。他们轮流做手术,爱丽丝先开始。不能操作的玩家将输。首先,将变量 mx设置为 0 。在一个操作中,玩家可以做:
选择索引 i( 1≤i≤n ),使 ai≥mx𝑎𝑖≥𝑚𝑥 并将 mx𝑚𝑥 设置为 ai 。然后,将 ai设置为 0 。
判断爱丽丝是否有获胜策略。
思路就是每个数都是偶数个就会输,只要有奇数个,就稳赢
代码REN(多开一个数组不就行了)1234567891011121314151617181920void solve(){ cin >> n; vector<int> aa(n + 1); vector<int> bb(n + 1); for (int i = 1, x; i <= n; i++) { cin > ...
Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
情况时间:2024年7月18日22:35ABCpass
题解A题意给一个nm矩阵,元素为1~nm,输出每个位置不一样元素的矩阵。如果不能,输出-1.
思路往后位移一个。不能只有一种情况就是只有一个元素。
代码12345678910111213141516171819202122232425262728void solve(){int n , m ;cin >> n >> m ;vector<int> a(n*m+1,0);if(n*m == 1){ cin >> n; cout << -1 << endl; return;}else{ int nums = n * m; for (int i = 0; i < nums; ++i) { cin >> a[i];}a[nums] = a[0];for (int j = 1; j <= nums; ++j){ cout & ...
EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2)
情况时间:2024年7月17日12:50-14:50
题解A思路数学
代码123456void solve(){ int n, k; cin >> n >> k; cout << (n - 1) * k + 1 << endl;}
B题意您将获得一个长度为 n 的整数数组 a您可以应用以下操作任意次数(可能为零):
首先,选择一个整数 k ,使得 1≤k≤n 并支付 k+1 硬币。
然后,精确地选择 k 索引,使得 1≤i1<i2<…<ik≤n 。
然后,对于从 1 到 k 的每个 x ,将 aix增加 1 。
求出使 a 不递减所需的最小硬币数
思路贪心,找出要加的,和顺序没啥关系。
代码12345678910111213141516171819202122232425262728293031323334353637383940414243void solve(){ int n; vector<int> a; vector<int ...
Codeforces Round 958 (Div. 2)
情况时间:2024年7月16日22:35复健场,被A题当头棒喝···吐了。
题解A题意对一个多重集合(可以有重复数字的集合)。刚开始只有一个数n,之后可以去掉任意一个数,增加不超过k个数,使得这些数和为n。求让这个多重集合都为1的最小操作数。
思路一次最多可以拆下来k-1个1,然后总值为n,拆到最后一个1就少一次操作。因此是(n-1)/(k-1)上取整。
代码数组模拟123456789101112131415161718192021222324252627282930313233void solve(){ int n, k; cin >> n >> k; if (n == 1) { cout << 0 << endl; return; } if (n <= k) { cout << 1 << endl; return; } int arr[N ...