A - Xor Sum

似乎是很明显的字典树问题(不会啊,最后搬了一个板子修修改改以后才过了

AcWing 相似题目:143. 最大异或对

最后得吐槽一下 memset 为什么能这么慢啊 Kora!

改手动初始化之后从 TLE 降到 500ms

const int MAXN = 100005;
int tire[MAXN * 32][2];
ll arr[MAXN * 32], s;
int n, m;
int pos = 1; void insert(ll s) {
int root = 0;
for (int i = 31; i >= 0; i--) {
int x = (s >> i) & 1;
if (tire[root][x] == 0)
tire[root][x] = pos++;
root = tire[root][x];
}
arr[root] = s;
} ll search(ll s) {
bool flag = false;
int root = 0;
for (int i = 31; i >= 0; i--) {
int x = (s >> i) & 1;
if (tire[root][!x]) root = tire[root][!x];
else root = tire[root][x];
}
return arr[root];
} int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int T, Case = 1;
cin >> T;
while (T--) {
cin >> n >> m;
while (n--) {
cin >> s;
insert(s);
}
cout << "Case #" << Case++ << ":" << endl;
while (m--) {
cin >> s;
cout << search(s) << endl;
}
for (int i = 0; i < MAXN; ++i) arr[i] = 0;
for (int i = 0; i < MAXN; ++i) for (int j = 0; j < 2; ++j) tire[i][j] = 0;
}
return 0;
}

B - Wrong Subtraction (签到)

过于谨慎了,签到题情况都想全了还是自测半天数据。

\(k\) 不大,直接暴力模拟

int main() {
cin.tie(nullptr)->sync_with_stdio(false);
ll n, k; cin >> n >> k;
for (int i = 1; i <= k; ++i) {
int t = n % 10;
if (t == 0) n /= 10;
else n--;
}
cout << n;
}

C - Two-gram

为什么会理解错题意啊?!!

子串必须由相邻的两个字符组成。 说明字串长度为 \(2\)​ 啊

关于 string 似乎只能 push_back 加入字符了,

直接写 t = s[i] + s[i + 1] 会乱码

int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; string s;
cin >> n >> s; n -= 1;
int cnt = 0; string t = "";
for (int i = 0; i < n; i++) {
int ccnt = 1;
for (int j = i + 1; j < n; j++)
if (s[j] == s[i] && s[j + 1] == s[i + 1])
ccnt++;
if (ccnt > cnt) {
cnt = ccnt;
string tmp;
tmp.push_back(s[i]), tmp.push_back(s[i + 1]);
t = tmp;
}
}
cout << t << endl;
return 0;
}

E - Divide by three, multiply by two

看样例发现一个规律 12 4 8 16

关于 3 的因子个数,如果因子个数多的放在前面,因子数相同的话将小值排前

因为题目保证一定存在符合题意的组合,那么这种写法一个可以

const int N = 1e2 + 10;
ll a[N];
ll fun(ll n) {
ll cnt = 0;
while (n % 3 == 0) {cnt += 1, n /= 3;}
return cnt;
}
bool cmp(ll x, ll y) { return fun(x) == fun(y) ? x < y : fun(x) > fun(y);}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin >> n;
for (int i = 0; i < n; ++i) cin >> a[i];
sort(a, a + n, cmp);
for (int i = 0; i < n; ++i) cout << a[i] << " \n"[i == n - 1];
}

F - Cyclic Components

很可惜,这道题做出了就AK了。

关于 简单环,在上图中只有 $[7,10,16],[5,11,9,15] $ 两个环符合条件,

即环内每个点的度当且仅当为 \(2\)

那么我们存边和度再跑DFS即可

const int N = 2e5 + 10;
vector<int>e[N];
bool vis[N];
int flag ;
void dfs(int u) {
vis[u] = 1;
if (e[u].size() != 2) flag = 0; // 如果 环内度数不为 2 则标记置为 0
for (auto v : e[u]) {
if (vis[v]) continue;
dfs(v);
}
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, m; cin >> n >> m;
for (int i = 1, u, v; i <= m; ++i) {
cin >> u >> v;
e[u].push_back(v);
e[v].push_back(u);
}
int ans = 0;
for (int i = 1; i <= n; ++i) {
if (vis[i]) continue;
flag = 1;
dfs(i);
ans += flag;
}
cout << ans;
}

G - Consecutive Subsequence

看完题目知道是一道最长上升子序列题,但普通的DP似乎处理不了,因为:序列是连续的。

所以 DP 转移方程应该写为 \(f_i = max(f_{i - 1} + 1,f_i)\)

  • \(\mathcal{O}(n)\)​
ll a[N];
map<ll, int>mp;
int len, lst, n;
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i];
int cnt = mp[a[i]] = mp[a[i] - 1] + 1;
if (cnt > len) len = cnt, lst = a[i];
}
int tmp = lst - len + 1;
cout << len << "\n";
for (int i = 0; i < n; ++i)
if (a[i] == tmp) {
cout << i + 1 << " ";
tmp += 1;
}
return 0;
}

2021暑假训练赛1 基于Codeforce#479(div3)的更多相关文章

  1. 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs

    MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu SubmitStatusid=14946">Practice ...

  2. 哈理工2015暑假训练赛 zoj 2078Phone Cell

    Phone CellTime Limit:10000MS    Memory Limit:32768KB    64bit IO Format:%lld & %llu SubmitStatus ...

  3. [置顶] 2013_CSUST暑假训练总结

    2013-7-19 shu 新生训练赛:母函数[转换成了背包做的] shuacm 题目:http://acm.hdu.edu.cn/diy/contest_show.php?cid=20083总结:h ...

  4. 暑假训练round 3 题解

    今天做题运气出奇的好,除了几处小错误调试之后忘记改掉了……最后还AK了……虽然题目不难,学长也说是福利局,但是对个人的鼓励作用还是挺大的……至此暑假训练就结束了,也算没有遗憾……. 题解如下: Pro ...

  5. 10.0.0.55_12-16训练赛部分writeup

    0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ...

  6. Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)

    Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...

  7. Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)

    Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...

  8. 7.30 正睿暑期集训营 A班训练赛

    目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...

  9. HDU6578 2019HDU多校训练赛第一场 1001 (dp)

    HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...

  10. HDU6579 2019HDU多校训练赛第一场1002 (线性基)

    HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...

随机推荐

  1. 深入了解Rabbit加密技术:原理、实现与应用

    一.引言 在信息时代,数据安全愈发受到重视,加密技术作为保障信息安全的核心手段,得到了广泛的研究与应用.Rabbit加密技术作为一种新型加密方法,具有较高的安全性和便捷性.本文将对Rabbit加密技术 ...

  2. UData+StarRocks在京东物流的实践

    1 背景 数据服务与数据分析场景是数据团队在数据应用上两个大的方向,行业内大家有可能会遇到下面的问题: 1.1 数据服务 烟囱式开发模式:每来一个需求开发一个数据服务,数据服务无法复用,难以平台化,技 ...

  3. OpenSSL 使用AES对文件加解密

    AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一.AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先 ...

  4. 通过 VS Code 优雅地编辑 Pod 内的代码(非 NodePort)

    目录 1. 概述 2. NodePort 方式 3. Ingress 方式 4. 救命稻草 5. 其他 1. 概述 今天聊点啥呢,话说,你有没有想过怎样用 VS Code 连上 K8s 集群内的某个 ...

  5. Docker容器运行、使用、管理

    docker container [COMMAND] 命令: **exec 在容器中执行命令** export 将容器的文件系统导出为tar归档文件(和docker save的区别在于,save会记录 ...

  6. Sql整理

    1:数据库 数据库是以某种有组织的方式存储的数据集合. 保存有组织数据的容器,通常是一个文件或者一组文件. SQL 是Structured Query Language (结构化查询语言)的缩写. 2 ...

  7. 虚拟化M搭建及基本操作

    虚拟化MH搭建 虚拟化概念: 虚拟机安装分为2块:RHEVM .RHEVH RHEVM:负责管理角色 RHEVH:负责运算角色 2016-09-23_0-52-54.png hypervisor: 提 ...

  8. 实现两个 JSON 对象的对比

    问题描述 在 Java 中,对于两个对象的对比,如果没有重写 equals 方法,那么将会默认使用 Object 默认的 equals 方法来比较两个对象.这种比较方式是通过比较两个对象的内存地址是否 ...

  9. 深入剖析 Linux Cgroups 子系统:资源精细管理

    本章主要演示以下 cgroups 下各个 subsystem 的作用. 根据难易程度,依次演示了 pids .cpu 和 memory 3 个 subsystem 的使用. 注:本文所有操作在 Ubu ...

  10. 下载安装Android Studio

    1,安装java的jdk 2,下载安装Dart 3,下载安装  Android Studio 建议这个安装在C盘,以防后期出现各种问题 在plugins中 (1)下载dart插件 (2)下载flutt ...