当前位置: 首页 > news >正文

2023 ICPC Jinan

2023 ICPC Jinan

ICPC Jinan

G

考虑找矛盾。首先对于同一行,翻转和不翻是一个矛盾,对于相异的行,若一行的翻转或不反转会使同一列产生多余的 1,则又是一个矛盾。将每一行拆成两个点,一个点代表不翻转该行,一个点代表翻转该行,然后将所有的矛盾作为边连起来,会得到一个图,对于图中的连通块,若是二分图,则这个连通会对答案产生乘 2 的贡献,否则,乘 0。

在建图之前,先要初步判断一下合法性,否则会因为建的边太多而导致 TLE。

std::string g[N + 5];
std::vector<int> adj[N + 5 << 1], col[N + 5];
int cnt[N + 5];
int color[N + 5 << 1];void init(int n, int m) {for (int i = 0; i < n + n; ++i) {adj[i].clear();color[i] = 0;}for (int i = 0; i <= m; ++i) {col[i].clear();cnt[i] = 0;}
}bool dfs(int cur, int c) {if (color[cur] != 0) {return color[cur] == c;}color[cur] = c;for (auto &to : adj[cur]) {if (!dfs(to, 3 - c)) {return false;}}return true;
}void solve() {int n = 0, m = 0;std::cin >> n >> m;init(n, m);for (int i = 0; i < n; ++i) {std::cin >> g[i];for (int j = 0; j < m; ++j) {cnt[j] += (g[i][j] - '0') + (g[i][m - 1 - j] - '0');}}i64 ans = 1ll;int mid = (m + 1) >> 1;for (int i = 0; i < mid; ++i) {if (cnt[i] > 2) {ans = 0ll;break;}}for (int i = 0; i < n && ans != 0; ++i) {// 建边adj[i].push_back(i + n);adj[i + n].push_back(i);for (int j = 0; j < m; ++j) {// 不翻转if (g[i][j] == '1') {for (auto &t : col[j]) {adj[i].push_back(t);adj[t].push_back(i);}}// 翻转int k = m - 1 - j;if (g[i][k] == '1') {for (auto &t : col[j]) {adj[i + n].push_back(t);adj[t].push_back(i + n);}}}// 统计for (int j = 0; j < m; ++j) {if (g[i][j] == '1') {col[j].push_back(i);}if (g[i][m - 1 - j] == '1') {col[j].push_back(i + n);}}}for (int i = 0; i < n && ans != 0; ++i) {if (color[i] != 0) {continue;}if (dfs(i, 1)) {ans <<= 1;if (ans >= Mod) {ans -= Mod;}}else {ans = 0;}}std::cout << ans << '\n';
}

K

一个关键的 trick 是,我们令 \(a_i \leftarrow a_i - i\),这样做的能够使一段公差为 1 的 等差序列变成相等的数,于是问题就变成了可以在规定的操作次数内,能操作出的最长的段使得段内所有的数都相等。双指针 加上 堆顶堆动态维护中位数 容易解出。

M

首先求凸包,标记凸包上的点,然后枚举每个不在凸包上的点,以该点为中心对所有点进行极角排序,排完序后相邻的且同时时凸包上的点会对答案产生一的贡献。

http://www.zskr.cn/news/21207.html

相关文章:

  • Spring应用上下文的获取和保存Bean
  • Redis的数据类型选择
  • pipeline解决Redis频繁命令往返导致的性能瓶颈
  • 依赖冲突的发现和解决
  • day011
  • 算法模版
  • C#/.NET/.NET Core技术前沿周刊 | 第 57 期(2025年10.1-10.12)
  • Cheap Context and Expensive Context
  • Agent之殇
  • 元类编程
  • 1014
  • HEAD以及分离头指针
  • git思维导图总结
  • Python 并发编程:`concurrent.futures` 模块
  • CSharp: Aspose.CAD 25.10 Convert DWG and DXF to PDF
  • matlab 2025b + adalm-pluto 链接测试
  • Fortran 实现英文数字验证码识别系统
  • P3111 [USACO14DEC] Cow Jog S 题解 - 符星珞
  • Patch_SCN for Linux 功能完善---惜分飞
  • CSP-J 2025 入门级模拟赛 Day6 复盘 B. 罐の水表
  • 完整教程:Android Framework默认给应用添加dangerous级别权限
  • 高级语言作业第一次随笔
  • k8s Service Nodeport 用于集群外部访问
  • 10月14日日记
  • PHP虚拟主机测试页面
  • 20251014周二日记
  • 财务怎样做到业财融合 - 智慧园区
  • Gradle使用
  • Spring Boot项目中集成Spring Security OAuth2和Apache Shiro
  • 完整教程:S7-200 SMART 开放式用户通信(OUC)深度指南:TCP/ISO-on-TCP(上)