日常刷题2025-2-9
1.日常刷题2025-3-162.日常训练2025-1-23.日常训练2025-1-34.日常训练2025-1-55.日常训练2025-1-86.日常训练2025-1-117.日常训练2025-1-128.日常训练2025-1-139.日常训练2025-1-1410.日常训练2025-1-1511.日常训练2025-1-1612.日常训练2025-1-1713.日常训练2025-1-1814.日常训练2025-1-1915.日常训练2025-1-2116.日常训练2025-1-2217.日常刷题2025-1-2318.日常训练2025-1-2419.日常刷题2025-1-2520.日常刷题21.日常刷题2025-2-6
22.日常刷题2025-2-9
23.日常刷题2025-2-1424.日常刷题2025-2-1525.日常刷题2025-2-1726.日常刷题2025-2-2027.日常刷题2025-2-2128.日常刷题2025-2-2229.日常刷题2025-2-2430.日常刷题2025-2-2631.日常刷题2025-2-2732.日常刷题2025-2-2833.日常刷题2025-3-134.日常刷题2025-3-235.日常刷题2025-3-336.日常刷题2025-3-537.日常刷题2025-3-638.日常刷题2025-3-739.日常刷题2025-3-840.日常刷题2025-3-941.日常刷题2025-3-1042.日常刷题2023-3-1143.日常刷题2025-3-1344.非常棒的二分和DP日常刷题2025-2-9
小L的位运算
rating:1400
思路:贪心+小巧思
有关贪心的小思维题。 由于反置代价小于等于交换代价,那么一定不能用交换去代替反置。 首先,如果交换的代价大于了两次反置的代价,那么直接全部使用反置即可。 否则,我们将不匹配的位置分类,发现最多只有四类,ab 分别是 00, 01, 10, 11 ,任意 两个不同种类不匹配的话,我们一定可以交换其中的某一位 0 和 1 使之两两匹配,那么我 们就只看最多的一类不匹配的位置的数量有没有超过总数的一半即可。 如果超过就超过的部分反置,其余匹配,否则一定存在一种分配方式使之匹配后至多 仅剩一个。 循环枚举一下即可,复杂度 O(n) 。
代码
#include<iostream> #include<cstring> #include<vector> using namespace std; using LL = long long; int main(){ #ifdef LOCAL freopen("data.in", "r", stdin); freopen("data.out", "w", stdout); #endif cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n; LL x, y; cin >> n >> x >> y; y = min(y, 2 * x); string a, b, c; cin >> a >> b >> c; int cnt[2][2]{}; int s = 0; for(int i = 0; i < n; i++){ int b1 = a[i] - '0'; int b2 = b[i] - '0'; int b3 = c[i] - '0'; if ((b1 ^ b2) != b3){ cnt[b1][b2] += 1; s += 1; } } int mx = 0; for(int i = 0; i < 2; i++){ for(int j = 0; j < 2; j++){ mx = max(mx, cnt[i][j]); } } int match = s / 2; if (mx * 2 > s) match = s - mx; cout << match * y + (s - 2 * match) * x << '\n'; }
小L的井字棋
rating:1000
思路:模拟
先判断根据已有的棋盘情况能否直接出两个棋子取胜。
如果不能再判断能否先出一个棋子,再一次出两个棋子取胜。一行或者一列或者一条对角线只要存在一个 O 存在那么这条线一定没有价值了,如果没有 O 存在那么就是有价值的位置,所以我们如果能找到一个 G 位置有两个以上有价值的线那么就能取胜。
代码
#include <bits/stdc++.h> using u64 = unsigned long long; using i64 = long long; typedef std::pair<int, int> pii; const int INF = 0x3f3f3f3f; const int mod = 998244353; const long long LINF = 1e18; void solve(){ std::vector<std::string> d(3); for (int i = 0; i < 3; i++){ std::cin >> d[i]; } int x = 0, o = 0; for (int i = 0; i < 3; i++){ x = 0, o = 0; for (int j = 0; j < 3; j++){ if (d[i][j] == 'O'){ o++; }else if (d[i][j] == 'X'){ x++; } } if (o != 0) continue; if (x != 0){ std::cout << "Yes\n"; return; } } for (int j = 0; j < 3; j++){ x = 0, o = 0; for (int i = 0; i < 3; i++){ if (d[i][j] == 'O') o++; else if (d[i][j] == 'X') x++; } if (o != 0) continue; if (x != 0){ std::cout << "Yes\n"; return; } } x = 0, o = 0; for (int i = 0; i < 3; i++){ if (d[i][i] == 'O') o++; else if (d[i][i] == 'X') x++; } if (x != 0 && o == 0){ std::cout << "Yes\n"; return; } x = 0, o = 0; for (int i = 0; i < 3; i++){ int j = 2 - i; if (d[i][j] == 'O') o++; else if (d[i][j] == 'X') x++; } if (x != 0 && o == 0){ std::cout << "Yes\n"; return; } std::vector<int> row(3), col(3); int aa = 0, bb = 0; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ if (d[i][j] == 'O') { row[i] = 1; col[j] = 1; if (i == j){ aa = 1; } if (i + j == 2) bb = 1; } } } // for (int j = 0; j < 3; j++){ // for (int i = 0; i < 3; i++){ // if (d[i][j] == 'O'){ // row[i] = 1; // col[j] = 1; // if (i == j) aa = 1; // else if (i + j == 2) bb = 1; // } // } // } // for (int i = 0; i < 3; i++){ // std::cout << row[i] << ' '; // } // std::cout<< '\n'; // for (int i = 0; i < 3; i++){ // std::cout << col[i] << ' '; // } // std::cout<< '\n'; // std::cout << aa << ' ' << bb << '\n'; for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ if (d[i][j] == 'G'){ int ok = 0; if (row[i] == 0) ok++; if (col[j] == 0) ok++; if (i == j && aa == 0) ok++; if (i + j == 2 && bb == 0) ok++; if (ok >= 2){ std::cout << "Yes\n"; return; } } } } std::cout << "No\n"; } signed main(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout<<std::setiosflags(std::ios::fixed)<<std::setprecision(15); int t = 1, i; std::cin >> t; for (i = 0; i < t; i++){ solve(); } return 0; }
本文作者:califeee
本文链接:https://www.cnblogs.com/califeee/p/18706200
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步