题面链接: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. Android的内部存储和外部存储怎么区分?

    1.定义 内部存储:内部存储位于Android手机系统的data/data/<包名>这个目录下,内部存储是私有的,主要用于存储系统和应用程序的某些数据,对于其他应用程序来说是不可见的,并且 ...

  2. STM32外设:信号转换器 ADC、DAC

    主要外设: ADC:Analog to Digital Converter 模数转换器 DAC:Digital to Analog Converter 数模转换器 ADC_IN` 主要功能:测外部引脚 ...

  3. Miller_Rabin 学习笔记

    费马小定理:对于任意一个质数满足:\(a^{p-1}\equiv1\pmod p\) 二次探测:对于任意一个奇质数满足:\(x^2\equiv1\pmod p\) 的解为 \(x=1\) 或 \(x= ...

  4. Kernel Memory 入门系列: RAG 简介

    Kernel Memory 入门系列: RAG 简介 开一个新坑,Semantic Kernel系列会在 Release 1.0 之后陆续更新. 当我们有了一定的产品资料或者知识内容之后,自然想着提供 ...

  5. Javascript Ajax总结——其他跨域技术之服务器发送事件SSE

    SSE(server-Sent Events,服务器发送事件)是围绕只读Comet交互推出的API或者模式.SSE API创建到服务器的单向连接,服务器通过这个连接可以发送任意数量的数据.服务器响应的 ...

  6. Layui treeTable 使用【数据不显示、子级不显示】

    //返回JSON数据类 public class LeaveMessageTreeTable { public LeaveMessageTreeTable() { this.children = ne ...

  7. 对比Spring Boot中的JdbcClient与JdbcTemplate

    本文我们一起看看Spring Boot中 JdbcClient 和 JdbcTemplate 之间的差异. 以下内容使用的Java和Spring Boot版本为: Java 21 Spring Boo ...

  8. Programming abstractions in C阅读笔记:p181-p183

    <Programming Abstractions In C>学习第61天,p181-p183总结. 一.技术总结 1.linear search algorithm 2.lexicogr ...

  9. Flutter Getx 状态管理 --- 响应式状态管理器

    状态管理 Get 并不是比任何其他状态管理器更好或更差,而是说你应该分析这些要点以及下面的要点来选择只用 Get,还是与其他状态管理器结合使用. Get不是其他状态管理器的敌人,因为Get是一个微框架 ...

  10. linux中创建用户组

    1.打开终端并以 root 用户身份登录到 Linux 系统. 2.运行以下命令以创建一个用户组: sudo groupadd group_name 将 "group_name" ...