彬彬的 GDKOI2023 游记
难得和同学去广州,一定要好好玩打比赛。
day-5 (3.5周日)
早上被闹钟叫醒后习惯按掉了,幸好我哥开高速开到120km/h,8点20多卡点到校。
又双叒打模拟赛。
T1
奶牛Bessie有N块巧克力,从左往右排成一行,编号从0到N-1。第i块巧克力的颜色是color[i]。我们定义一个参数MaxLen,它表示:具有相同颜色的连续一段巧克力的最大长度。例如:有10块巧克力,颜色分别是: ADDDABBAAB,那么MaxLen=3,因为有3块颜色是D的巧克力,而且这3块巧克力的位置是连续的。为了使得MaxLen最大,Bessie可以交换相邻两块巧克力的位置,但是Bessie 总共交换的次数不能超过给定的值swap。那么MaxLen的最大值是多少?
n<=50
模拟题,直接暴力挪动巧克力就OK。当然,赛时药磕多了,满脑子 o ( n 2 ) o(n^2) o(n2)做法。
枚举一个巧克力作为中心,双指针左右遍历,遇到一个相同的巧克力就吃掉加上这块巧克力到中心的距离(先移动离中心近的,双指针遍历过程中先遇到的点一定比后遇到的点近),保证最后的和不大于swap即可。
但有个小问题,就是巧克力是一个区间而不是一个点,所以我们没移动一个巧克力到这个区间两端时要保证左右指针到这个区间距离相等,但是一边移动了一块,那一边的距离就会减少1。so我们要把对面的指针回拨1。
预计:100pts
T2
放了道CF404D。
想了一下,一个 ? ? ?可以给答案 ∗ 2 *2 ∗2,但与 1 1 1串一串的 ? ? ?( ? 1 ? 1 ? 1 ? 1 ? ?1?1?1?1? ?1?1?1?1?之类)合在一起只可以给答案 ∗ 2 *2 ∗2,然后只要用已知的 2 2 2, 0 0 0, ∗ * ∗把这个扫雷做到不可以在推出1个 ? ? ?,在统计这两个情况的个数就做完了求幂就OK。
心态爆炸,调了2h多,最后大样例AC时都没发现……
预计:100pts
T4
有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l, r]中,则你比较厉害。求你比较厉害的概率。
剩下50分钟,想着要给T3留点家底,不能太厉害了,拿了30pts暴力走人。
预计:30pts
ps:正解请移步至下方T4正解。
T3
Mushroom手中有n个数排成一排,现在Mushroom想取一个连续的子序列,使得这个子序列满足:最多只改变一个数,使得这个连续的子序列是严格上升子序列,Mushroom想知道这个序列的最长长度是多少。
错位的人口普查题,预处理出连续上升的子序列段数,再判断一下相邻的子序列修改头尾的一个数可不可以接在一起求最大值。
但时间就剩20min了,彬彬(我)太逊了,本着不会分数最大化的原则,写了暴力……
预计:60pts
下午……
中午好好休息~~体验博彩旅游业(斗地主)~~的我难免又双叒迟到。
抱着视死如归的心情看了下成绩:
最底下没有,看来不会太差。
中间也没?不会没交吧?
然后,我 330 p t s / r a n k 1 330pts/rank 1 330pts/rank1(T1 100pts;T2 100pts;T3 100pts;T4 30pts)???
平复完心脏病开始补题。
发现T3数据没卡住 O ( n 2 ) O(n^2) O(n2)做法,让我想起了CCF。
T4正解
有点长
设 s u m [ ] sum[] sum[]为前缀和,则 j + 1 j+1 j+1到 i i i的平均值为
s [ i ] − s [ j ] i − j \frac{s[i]-s[j]}{i-j} i−js[i]−s[j]
满足
l ≤ s [ i ] − s [ j ] i − j ≤ r l \leq \frac{s[i]-s[j]}{i-j} \leq r l≤i−js[i]−s[j]≤r
对于后半部分
s [ i ] − s [ j ] ≤ r ∗ i − r ∗ j {s[i]-s[j]} \leq r*i-r*j s[i]−s[j]≤r∗i−r∗j
s [ i ] − r ∗ i ≤ s [ j ] − r ∗ j s[i]-r*i \leq s[j]-r*j s[i]−r∗i≤s[j]−r∗j
给原数组中每一项减去 r r r,求前缀和 s [ ] s[] s[]
s [ i ] ≤ s [ j ] ( i > j ) s[i] \leq s[j](i>j) s[i]≤s[j](i>j)
这是啥,逆序对!
然后求逆序对个数就是小于等于 r r r的区间个数(注意,这里不包括s[i]-s[0],也就是说,当s[i]小于等于0时也是小于等于 r r r的,要记得加上)。
对于前半边,我们求 < l \lt l <l的区间个数,用 ≤ r \leq r ≤r的区间个数减一下就成。
code
#include <bits/stdc++.h>
using namespace std;#define ll long longconst ll maxn = 5e5 + 5;ll n, l, r;
ll sum[maxn], a[maxn], tree[maxn], tmp[maxn];map<ll, ll> mp;ll lowbit(ll x) { return x & (-x); }void updata(ll x) {while (x <= maxn - 5) {tree[x]++;x += lowbit(x);}
}
ll getsum(ll x) {ll sum = 0;while (x) {sum += tree[x];x -= lowbit(x);}return sum;
}void lsh() {mp.clear();memset(tmp, 0, sizeof(tmp));for (ll i = 1; i <= n; i++) tmp[i] = sum[i];sort(tmp + 1, tmp + n + 1);ll cnt = 0;for (ll i = 1; i <= n; i++) {if (mp[tmp[i]])continue;mp[tmp[i]] = ++cnt;}for (ll i = 1; i <= n; i++) sum[i] = mp[sum[i]];
}
ll get(ll x) {ll ans = 0;memset(sum, 0, sizeof(sum));for (ll i = 1; i <= n; i++) {sum[i] = sum[i - 1] + a[i] - x;if (sum[i] <= 0 && x == r)ans++;else if (sum[i] < 0 && x == l)ans++;}lsh();memset(tree, 0, sizeof(tree));for (ll i = n; i >= 1; i--) {ans += getsum(sum[i]);updata(sum[i] + (x == l));}return ans;
}int main() {scanf("%lld%lld%lld", &n, &l, &r);for (ll i = 1; i <= n; i++) scanf("%lld", &a[i]);ll fz = get(r) - get(l), fm = (n + 1) * n / 2, gc = __gcd(fz, fm);fz /= gc;fm /= gc;if (fm != 1)printf("%lld/%lld", fz, fm);elseprintf("%lld", fz);
}
生活片段 晚上打电话祝我哥(开快车那个)生日快乐,我哥调侃我没有npy,尽管他也没有。
day-4 (3.6 周一)
早上来机房,发现——怎么也飞不出,模拟赛的世界。
教练甚至放心的给我们做提高组(保持微笑呵呵呵)。
T1
你有两个长度分别为 n, m的01 串 S, T。
有Q次询问,每次询问给出 l1, r1, l2, r2 ,其中 r1 − l1 + 1 =r2 − l2 + 1,令 a =S[l1 ... r1], b = T[l2 ... r2],你需要求出 ai ≠ bi的位置个数对 2 取模的结果。n <=100000
想了30分钟,发现两个位置相同那么他们相加模2肯定为0,不同模2肯定为1,我们统计不同的个数模2就是答案。又因为不同两个位置的相加和肯定为1,而相同的相加不是2就是0,也就是对答案没有影响,所以求出S中 l 1... r 1 l1...r1 l1...r1的区间和加上T中 l 2... r 2 l2...r2 l2...r2的区间和相加模2就是答案。
隔壁的wangziye推翻正确结论后开始diss我,然后他就又推翻自己了。(写博客时wangziye想要以陈述事实罪迫害关心我)
预计:100pts
T2
在左下角是 (
彬彬的 GDKOI2023 游记相关推荐
- 数学与计算机科学学院宣传词,【榜样人物】筑梦前行 不负韶华——数学与计算机科学学院姚彬彬同学的考研心路...
秀气的脸庞,谦和的语气,再加上一幅黑框近视眼镜,标识了这位年轻帅气小伙的书生身份.他叫姚彬彬,家在有"万里长江此封喉,吴楚分疆州"之称的安徽省安庆市,是我校数学与计算机科学学院20 ...
- 这个彬彬就是逊啦—才搞懂小学知识求最小公倍数
HJ108 求最小公倍数 前言 这个彬彬就是逊啦,不会求两个整数的最小公倍数,不过没事啦,我超勇的啦,我来帮彬彬求解! 下面进入紧张刺激的环节,看题时间到!不妨来看看这个困扰彬彬的题,请往下看啦! 题 ...
- 彬彬说,真正的喜欢一个人就会用心的去揣摩她,去知道她喜欢什么,什么性格...
彬彬说,真正的喜欢一个人就会用心的去揣摩她,去知道她喜欢什么,什么性格 其实我觉着真正合适在一起的两个人,是两个真实的人,都互相有自己的性格,很投缘,而且愿意为了对方而改变,就像节目的最后评论这老两口 ...
- matlab 祁彬彬,MATLAB 向量化编程基础精讲
<MATLAB 向量化编程基础精讲>使用MATLAB新版本2016a,拣选Mathworks官方群组Cody中一些有趣的代码问题,分6章讲解这些优秀示例代码中使用数组.字符串操作.正则表达 ...
- 221900437方彬彬
221900437方彬彬 寒假作业 这个作业属于哪个课程 2022年福大软件工程实践W班 这个作业要求在哪里 软件工程实践寒假作业 这个作业的目标 回首过去 立足当下 展望未来 学习路线 其他参考文献 ...
- GDKOI-2023 游记
GDKOI-2023 游记 文章目录 GDKOI-2023 游记 1 扯淡 2 成绩单 3 行程 3.1 D a y 0 Day0 Day0 3.2 D a y 1 Day1 Day1 3.3 D a ...
- 彬彬数码:网络机顶盒哪个好?实测40天盘点网络机顶盒排名
网络机顶盒能看视频,K歌.玩游戏.运动.健身等功能也能实现,是电视机的必备搭档.彬彬进行了一个多月的测评,从配置.流畅度.系统等方面深度体验二十款畅销网络机顶盒,根据每款机型的表现整理了网络机顶盒排名 ...
- 这个彬彬打起电动超勇的
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 集训队的彬彬不仅要在实验室打电动,而且还要一天打两次. 但教练有时候会来实验室看一眼,如果教练看的时候彬彬正在打电动(开始的一分钟和结束的那 ...
- 旧金山州立大学计算机,旧金山州立大学(San-Francisco-State-University)_彬彬教育...
学校简介 旧金山州立大学(San Francisco State University,缩写SFSU)成立于1899年,位于加利福尼亚州旧金山市(San Francisco)市区,是一所四年制大型公立 ...
最新文章
- Hugo快速搭建Blog
- python自学免费课堂-推荐5个Python爬虫免费学习资源(B站高赞!)
- MySQL中的全文索引
- ABAP Smart Help调试截图
- matlab欧拉法程序,欧拉法matlab程序.doc
- IKVM.NET_第一篇_概述
- 【每日算法Day 102】美团 AI 平台算法工程师面试编程题
- Java的%=是什么意思?%=运算的正确使用
- oracle sap 英克,中普审计软件内置350多个财务软件接口(新)-2015.9.16
- IBM X3650优盘启动
- 层次分析法java_AHP层次分析法java实现
- 阿里云IPV6解决方案
- 视频压缩基本介绍与标准
- linux上cgconfig服务,linux系统调优-Cgroups
- spark读csv文件转成map
- 微软三维人脸重建论文总结——《Accurate 3D Face Reconstruction with Weakly-Supervised Learning》
- 201掘安杯网络安全赛web的write up
- mysql 连接tidb 端口_tidb安装和连接
- 只因,在人群中多看了你一眼 (小说)
- apply方法和unapply方法
热门文章