题面链接:Here

代码提交:Here

年终彩蛋

1466A. Bovine Dilemma

题意是:给定一个固定点(0,1),然后给定n个在x轴的点,求面积不同的三角形个数

简单思考一下就容易发现这个是一个高相等的三角形,只需要去比较底边的长度不同的有多少个即可。

//AC代码
void solve() {
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; ++i)
cin >> v[i];
if (n == 1) {
cout << 0 << endl;
return;
}
set<int> s;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
if (i != j)
s.insert(v[j] - v[i]);
//由于直接暴力找的答案是正解的两倍(会存入等大小的负值),所以要除2
cout << s.size() / 2 << endl;
}

进阶挑战:Try to solve it for \(n,x_i≤10^5\).

//待补

1466B. Last minute enhancements

给定\(n\) 个音符的值,当可以为重复出现的值加一时,最终能有多少个不同音符

标记出现过的,如果下次还出现则令其加一再标记

//原提交写法
void solve() {
cin >> n;
vector<int> v(n);
int cnt = 0, sum = 0;
int book[2 * (n + 1)] = {0};
set<int> s;
for (int i = 0; i < n; ++i) {
cin >> v[i];
if (book[v[i]])
v[i]++;
s.insert(v[i]);
book[v[i]]++;
}
if (n == 1) {
cout << 1 << endl;
return;
}
cout << s.size() << endl;
}
//写法优化
void solve() {
ll n, x;
cin >> n;
set<ll> s;
for (int i = 0; i < n; ++i) {
cin >> x;
if (s.count(x))
x++;
s.insert(x);
}
cout << s.size() << endl;
}
//多利用STL函数帮助解决问题

进阶挑战:对于给定的 \(k_i\),如果我们可以将音符 \(x_i\) 增加 [0,\(k_i\)]中的任何整数,可以解决吗?

//待补

1466C. Canine poetry

如果存在一个长度大于3的回文,则存在一个长度为2或3的回文。此观察结果使我们可以简化擦除所有长度为2或3的回文的任务。 每个字符最多将被替换一次。

从现在开始,有几种可能的解决方案。 最简单的方法是从左到右遍历一个单词。 当我们遇到以当前位置结束的回文(长度为2或3),并且由未标记的元素组成时,我们会贪婪地将此字符标记为要替换的字符。 标记字符的数目就是答案,因为事实证明,通过仅替换标记位置上的字母,我们可以获得有效的无回文序列。 复杂度为O(n)。

当然这道题也可以用DP做,但更复杂:时间复杂度\(O(n*26^2)\)

char s[N];
bool vis[N];
void solve() {
cin >> (s + 1);
n = strlen(s + 1);
for (int i = 1; i <= n; i += 1)
vis[i] = 0;
int ans = 0;
for (int i = 1; i <= n; i += 1) {
if (i >= 2 and s[i] == s[i - 1] and not vis[i - 1]) {
vis[i] = 1;
ans += 1;
}
if (i >= 3 and s[i] == s[i - 2] and not vis[i - 2] and not vis[i]) {
vis[i] = 1;
ans += 1;
}
}
cout << ans << "\n";
}

进阶挑战:如果字母可以更改,并且每次更改后都需要计算结果怎么办?

1466D. 13th Labour of Heracles

树构造,写一下入度和出度

ll w[N];
int d[N];
void solve() {
cin >> n;
for (int i = 1; i <= n; i++)
cin >> w[i], d[i] = 0; for (int i = 1, u, v; i < n; i++) {
cin >> u >> v;
d[u] += 1, d[v] += 1;
} ll ans = 0;
vector<ll> v;
for (int i = 1; i <= n; i++) {
ans += w[i];
for (int j = 1; j < d[i]; j++)
v.push_back(w[i]);
}
sort(v.begin(), v.end(), greater<ll>());
cout << ans << " ";
for (ll x : v)
cout << (ans += x) << " ";
cout << endl;
}

1466E. Apollo versus Pan

//待补

1466F. Euclid's nightmare

//待补

Codeforce:Good Bye 2020 个人题解的更多相关文章

  1. Codeforces:Good Bye 2018(题解)

    Good Bye 2018! 题目链接:https://codeforces.com/contest/1091 A. New Year and the Christmas Ornament 题意: 给 ...

  2. Good Bye 2017 部分题解

    D. New Year and Arbitrary Arrangement 分析 \(dp[i][j]\) 表示已有 \(i\) 个 \(a\) 和 \(j\) 个 \(ab\) 的情况下继续构造能得 ...

  3. [题解][Codeforces]Good Bye 2019 简要题解

    构造题好评,虽然这把崩了 原题解 A 题意 二人游戏,一个人有 \(k_1\) 张牌,另一个人 \(k_2\) 张,满足 \(2\le k_1+k_2=n\le 100\),每张牌上有一个数,保证所有 ...

  4. Grakn Forces 2020 ABCDE题解

    看到老外评论区中说,这场的难度估计是\(div.1\)和\(div.1.5\)的合并 A. Circle Coloring #构造 题目链接 题意 给定三个长度为\(n\)数组\(a,b,c\),要你 ...

  5. JOI 2020 Final 题解

    T1. 只不过是长的领带 大水题,把 \(a_i,b_i\) 从小到大排序. 发现最优方案只可能是大的 \(a_i\) 跟大的 \(b_i\) 匹配,小的 \(a_i\) 与小的 \(b_i\) 匹配 ...

  6. DISCO Presents Discovery Channel Code Contest 2020 Qual题解

    传送门 \(A\) 咕咕 int x,y; int c[4]={0,300000,200000,100000}; int res; int main(){ cin>>x>>y; ...

  7. Codeforce 水题报告(2)

    又水了一发Codeforce ,这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C:The Child and Polygon: 描述:给出一个多边形,求三角剖分的方案数( ...

  8. 【Nowcoder 上海五校赛】二数(模拟)

    题目描述: 我们把十进制下每一位都是偶数的数字叫做“二数”. 小埃表示自己很聪明,最近他不仅能够从小数到大:2,3,4,5....,也学会了从大数到小:100,99,98...,他想知道从一个数开始数 ...

  9. 【Home Page】本博客使用指南

    [关于] 坐标:ZJ.HZ.XJ. 高一现役 OIer,经常被吊打. Luogu:_Wallace_ [近期] 浙大 ICPC-ACM 2020 部分题解: 关键字「ZJU-ICPC Summer T ...

  10. Good Bye 2018题解

    Good Bye 2018题解 题解 CF1091A [New Year and the Christmas Ornament] 打完cf都忘记写题解了qwq 题意就是:给你一些黄,蓝,红的球,满足蓝 ...

随机推荐

  1. JavaWeb项目练习(学生选课管理系统)二【新建数据库】

    思路 1.页面美化css这部分,挖个坑,我打算做好一点所以先空着.× 2.需要做四个数据表(学生.教师.管理员.课程) 关联: 学生有个人课表 教师有教授课程和个人课表 管理员有全部权限(关联所有数据 ...

  2. HelloJs

    JS 轻量级脚本语言,也是嵌入式语言,是一种对啊想模型语言,简称JS 想要实现复杂的效果,得依靠宿主环境提供API,最常见的是浏览器,还有服务器环境(操作系统) 语言机构+宿主环境提供的API 写js ...

  3. 生物电势测量ECG

    参考来源:ADI官网技术文章.知乎(hxl695822705.KingPo-张超.津发科技.木森.深圳加1健康科技) ECG的产生 ECG(Electrocardiogram)心电测量,是指人体内窦房 ...

  4. 单元测试框架pytest

    1.什么是pytest pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点: 简单灵活,容易上手,文档丰富 支持参数化,可以细粒度地控制要测试的测试用例 能够支持简单的单元测试和 ...

  5. IIS下使用SSL证书

    IIS下使用SSL证书 本文介绍windowsServer下SSL证书配置及IIS站点配置 1.    生成SSL证书 在阿里云申请免费SSL证书 登录阿里云管理控制台,打开SSL证书管理 选择免费证 ...

  6. mysql 定时 数据库备份并上传到另一台服务器上,上传结束并删除源文件

    首先总共有两个脚本: #!/bin/bash:主要用于进行数据库备份.压缩.删除,单独运行命令是:bash  XXX.sh #!/usr/bin/expect:主要用于进行数据备份文件的上传,单独运行 ...

  7. pycharm设置Ctrl+鼠标滚轮放大缩小字体

    方式一: File --> setting --> Editor-->General,勾选. 方式二: 放大的设置 File --> setting --> Keymap ...

  8. HTML之CSS Animation 属性常用动画

    引入下面的样式表后 -webkit-animation: tada 1s ease 0.3s infinite both; -webkit-animation: name duration timin ...

  9. Git和Github库详细使用教程

    SVN 是集中式或者有中心式版本控制系统,版本库是集中放在中央服务器的; Git 是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为 ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (170)-- 算法导论13.2 3题

    三.用go语言,设在图 13-2 左边一棵树中,a.b和c 分别为子树a.β和γ中的任意结点.当结点 x 左旋之后,a.b和c 的深度会如何变化? 文心一言: 在二叉树中,左旋操作是改变节点的子节点顺 ...