ABC348F 题解
一些注意点:
一看到这种题就应该往 bitset 的方向想。
如果用 bitset,就应该跳脱之前的思维,尝试从最朴素的暴力重新想起。
看到这道题,发现直接做非常的不可做的样子,考虑 bitset。
我们可以先枚举左端点 \(l\)。这样,当我们枚举 \(j\) 时,对于所有的 \(k\) 使得 \(a_{k, j} = a_{l, j}\) 的 \(k\),\((l, k)\) 可以多一个相等的下标。
于是考虑使用 bitset,\(p_{i, x, j}\) 表示 \(a_{i, j}\) 是否等于 \(x\)。然后直接异或操作即可。
/*******************************
| Author: DE_aemmprty
| Problem: F - Oddly Similar
| Contest: AtCoder - Toyota Programming Contest 2024#4(AtCoder Beginner Contest 348)
| URL: https://atcoder.jp/contests/abc348/tasks/abc348_f
| When: 2024-04-06 20:37:56
|
| Memory: 1024 MB
| Time: 2000 ms
*******************************/
#include <bits/stdc++.h>
using namespace std;
long long read() {
char c = getchar();
long long x = 0, p = 1;
while ((c < '0' || c > '9') && c != '-') c = getchar();
if (c == '-') p = -1, c = getchar();
while (c >= '0' && c <= '9')
x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return x * p;
}
const int N = 2007;
long long n, m, ans;
int a[N][N];
bitset <N> s[N][1007], res;
void solve() {
n = read(), m = read();
for (int i = 1; i <= n; i ++) for (int j = 1; j <= m; j ++) {
a[i][j] = read();
s[j][a[i][j]][i - 1] = 1;
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++)
res[j - 1] = 0;
for (int j = 1; j <= m; j ++)
res ^= s[j][a[i][j]];
for (int j = i; j < n; j ++)
if (res[j]) ans ++;
}
cout << ans;
}
signed main() {
int t = 1;
while (t --) solve();
return 0;
}
ABC348F 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- f-string 高效的字符串格式化
f-string,称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal Strin ...
- HarmonyNEXT手动申请权限以及使用系统控件获取地址坐标的案例(区别)
一.手动申请位置权限 1.1.申请位置权限 申请ohos.permission.LOCATION.ohos.permission.APPROXIMATELY_LOCATION权限. "req ...
- 面试题:Java中sleep和wait方法的区别
摘要:介绍sleep方法和wait方法的相同点和区别. 在学习JAVA多线程的时候,不少人会把函数sleep和wait搞混,傻傻分不清,简单粗暴地认为都是使得线程进入等待状态,比如就分不清方法sl ...
- js节流函数与防抖函数
防抖函数和节流函数都是为了解决JavaScript中频繁触发事件而导致的性能问题,但它们的实现方式和使用场景有所不同. 一.防抖函数 防抖函数的作用是在事件触发后一定时间内没有再次触发该事件时,才执行 ...
- 从理解AI到驾驭文字:一位技术爱好者的写作工具探索手记
三年前,当我第一次接触AI写作工具时,它生成的文字还带着明显的机械感,段落间的逻辑时断时续.如今,这些系统已经能写出颇具文采的散文,甚至模仿特定作家的风格.这种进化轨迹恰好为学习者提供了一个观察AI发 ...
- 最值得关注的2025年公众号编辑器Top 10,提升你的内容质量
公众号编辑器全面指南:10款主流工具深度评测 前言 公众号编辑器作为新媒体和自媒体人日常必备的工具,能极大提升公众号运营效率和内容质量.面对众多类型和风格各异的公众号编辑器网站,如何选择一款真正适合自 ...
- 11.Java SDK源码分析系列笔记-Hashtable
目录 1. 是什么 2. 如何使用 3. 原理分析 3.1. uml 3.2. 构造方法 3.3. put方法 3.3.1. 使用synchronized加锁 3.3.2. 计算key落在entry数 ...
- 2022成都.NET开发者Connect线下活动
传送门:2021年成都.NET开发者Connect线下活动 2022年5月7日晚,在成都市高新区孵化园旁的大蓉和拉德芳斯店,2022成都.NET开发者Connect线下活动圆满结束,来自成都地区东南西 ...
- vue入门(二)基于前面的基础的一个小Demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C# datagridView 表格渲染变色 ( 动态改变表格值) 绘制时改变表格值
private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { ...