[Codeforces]CF Global Round 15ABCD

【CF Global Round15】

https://codeforces.com/problemset/problem/1552/A ,把字符串排序好得到t[1,,n],把str[i]t[i]的抽出来就行。


https://codeforces.com/problemset/problem/1552/B ,虽然在这里可能会存在a<b,b<c但是a>c的情况,但我们依然可以重载小于号,从左到右取max,如果x符合答案的条件,一定会被取到,同时再check一边是否比别的都要大就行。


https://codeforces.com/problemset/problem/1552/C ,卡了许久,题目有一句话很关键:o point strictly inside the circle belongs to all 3 chords.也就是只要有交叉就会多一个交点,不用管三线共点的情况。于是可以证明,最优的染色方法是把剩下的2(nk)个点拎出来重新标号,然后按照第i个点连接i+(nk)来连线(假设原本是ab,cd这样没有交叉的连接,如果换成ac,bd这样有交叉的连法,交点至少不会变少)。


https://codeforces.com/contest/1552/problem/D ,给一个a[1,,n],问是否存在b[1,,n]:对所有ai存在1j,kn:ai=bjbk,这题n10

n只有10看着就很乱搞…首先b的一个差分一定能搞定一个ai,所以n个位置至少能解决n1ai,问题就是剩下一个怎么搞定。

如果ai=0或者ai=aj,就可以少用一个b的代价,这时候一定是YES,进一步,只要能找到a[1,,n]的一个子序列±ap1±ap2±apk=0就行,当然这只是充分条件,但我们猜他必要,于是O(n3n)暴力枚举试着交一发,过了,好那他就是必要条件了(bushi)。

[必要性]假设存在符合条件的b数组,考虑张n个点的图,每个点的点权是bi,接着因为每个ai都能写成bjibki的形式,我们连一条(ji,ki)的边权为ai的边,这样就构成了一个n个顶点n条边的图,|V|=|E|=n,|V|+|F||E|=2,此时一定有环(此时先不考虑方向),而这个环上:

(bv1bv2)+(bv2bv3)++(bvk1bvk)+(bvkbv1)=0

我们说每条边对应一个ai,那这个式子就意味着a[1,,n]的一个子序列±ap1±±apk=0,也就是我们前面的充分条件。

posted @   yoshinow2001  阅读(46)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示