APIO2018练习赛伪题解】的更多相关文章

传送门:https://pcms.university.innopolis.ru/statements/org/apio/2018/practice/statements.pdf 主要就在于后面三道构造题,感觉开阔了眼界. A: A + B problem,没看到实数还WA了一发 #include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=l; i<=r;…
[A:最大的K-偏差排列]: 第一次在hiho卡一题,所以暴力了搜索了一下,70分,后面回来打表找规律,规律是有和K有关的周期. 当K<=N/2时,成周期交叉变化,最后尾部部分单独考虑. 当K>N/2时,有三个序列,分别是[K+1...N]  [K...N-K+1 ] [1..N-K] 自己的代码: #include<bits/stdc++.h> using namespace std; ],N,K; int main(){ ,i,j; scanf("%d%d"…
题目质量还是比较高的,只是当时澳大利亚方面出了一点问题?最后造成了区分度非常迷的局面. 纵观三道题,T1是披着交互外衣的提答题,T2是披着交互外衣的传统题,T3是一道据说近年来APIO最水的一道传统题,然而对于不敢相信T3水的选手来说只能靠硬搞两道交互拿分了. T1 Rainbow 没脸写题解和程序了. Subtask 1直接floodfill一下,Subtask 2听说前缀和讨论一下,后面听说数据结构维护一下. T2 Koala 这个感觉可以写一篇交互库玩耍记了,感觉前几个部分分就是在考调戏交…
毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,m,nn,mm; bool map1[1501*2][1501*2],map2[1501][1501],hhh[1501][1501]; bool dfs(int x,int y) { if(x == -1) { if(df…
A题,C题不讲,基础题(但是我要抨击一下这次比赛,卡cin,cout,卡的太狠了,根本就不让过的那种,QAQ) 链接:https://www.nowcoder.com/acm/contest/157/B来源:牛客网 凤 凰 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 凤凰于飞,翙翙其羽,亦集爰止.                                         ——<…
NOIP分数过低的场外选手,一个月之后才有幸膜到这套卷子.感觉题目质量很不错啊,可惜了T1乱搞可过,T2题目出锅非集训队员没有通知到,导致风评大幅被害. 感觉Cu的话随手写两个暴力就稳了,Ag的话T3稍微搞出点性质就稳了,Au的话T1乱搞和T3中搞出一个就比较稳了. 可以发现T1的28分和T3的16分只要读懂题目(会用交互)就能拿到.下面看下这两题的各部分分解法. T1 Subtask 1(28 pts):直接暴力,倍增LCA即可.$O(n^2 \log n)$ Subtask 2(16 pts…
部分分做法很多,但每想出来一个也就多5-10分.正解还不会,下面是各种部分分做法: Subtask 1:k=1 LCS长度最长为1,也就是说不存在j>i和a[j]>a[i]同时成立.显然就是一个LDS,树状数组直接求即可. Subtask 2:k=2 最多两个,也就是可以由两个LCS拼起来,f[i][j]表示第一个LCS以i结尾,第二个以j结尾的方案数,转移显然. Subtask 3:k=2 树状数组优化DP,复杂度由$O(n^3)$降为$O(n^2 \log n)$ Subtask 4,5:…
[题目描述] 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确. A++语言的循环结构如下: F i x y 循环体 E 其中F i x y表示新建变量 i(变量 i 不可与未被销毁的变量重名)并初始化为 x, 然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环,否则不进入.每次循环结束后 i…
前言 当初思路 开始没想到异或这么多的性质,于是认为对于每个点\(u\),可以和它连边的点\(v\)的点权 \(a_v=a_u \oplus k\)(证明:\(\because\) \(a_u\oplus a_v =k\) \(\therefore\) \(a_u\oplus a_v \oplus a_u=a_u \oplus k\) 即\(a_v=a_u \oplus k\)),于是每次将同一个点权的点放在一起,跑一遍dijkstra,然后超时了--(赛后重新提交,显示case通过率为32.0…
思路 令 \(sq=\sqrt x\) ,则答案必然在 $ sq^2$ 和 $ (sq+1)^2 $ 之间,两者比较一下谁离 \(x\) 最近,就是答案了. 代码 #include <bits/stdc++.h> using namespace std; long long x,ans1,ans2,sq; int main(){ scanf("%lld",&x); sq=(long long)sqrt(x); ans1 = sq * sq; ans2 = (sq+1…
(总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) TJOI2016(6题) 六省联考2017(6题) SDOI2016(3题) HNOI2013(6题) CQOI2017(3题) 九省联考2018(3题) 3.10 [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树) [BZOJ4012][HNOI2015]开…
(总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZOJ3786]星系探索(伪ETT) [BZOJ4337][BJOI2015]树的同构(树的最小表示法) [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树) [CTSC2017]游戏(Bayes定理,线段树) 4.19 [CTSC2017]吉夫特(Lucas定…
正好这个"水水"的C4来了 先把甲级刷完吧.(开玩笑-2017.3.26) 这是一套"伪题解". wacao 刚才登出账号测试一下代码链接,原来是看不到..有空弄题(xia)解(che).. //"今天"的"收获": BST的中序遍历特性:栈那题利用树状数组+二分维护:哇咔咔,题意真难,根据案例猜题意.好吧,反正我又不考.不如睡觉? 出现了基础的二级最短路: 对DFS联通快愣了一下.. 哇塞呀!模拟题还是很劲的! 哇塞呀,手写…
外话:最近洛谷加了好多好题啊...原题入口 这题好像是SPOJ的题,挺不错的.看没有题解还是来一篇... 题意: 很明显吧.. 题解: 我的做法十分的暴力:树链剖分(伪)+线段树+\(set\)... 首先,我们可以考虑每次修改一个点的颜色的影响. 易知,翻转一个点颜色,只会对于他的子树产生影响,对于别的点就毫无意义了. 然后,只要学过一点树链剖分的就知道,我们可以将整棵树按它的\(dfs\)序进行标号, 每个点的序号就是\(dfn\), 然后记下它的子树大小\(size\),然后对于每个点\(…
坑了好久,补一补. 话说我当时去参加 $APIO2018$ 了,不过纯粹打铁…… 我的程序交道人家毛子的网站上, $c++14$ 编译器不停地给我编 $RE$,只记得好像是结构体排序的问题(删掉那个排序就不 $RE$ 了)……然而根本找不出来有什么问题…… 后来发现其他几人都没写结构体(直接写个函数排序)…… 什么破道理,自闭就完事了 T1 new home 显然是一道恶心的数据结构,典型的俄罗斯风格. 首先对时间轴进行扫描线,一个商店出现一段时间可以转换为 在起始时间插入 和 在结束时间删除…
本蒟蒻这次只过了三题 赛后学习了一下出题人巨佬的标码(码风比我好多了 贴的代码有些是仿出题人)现在将自己的理解写下来与大家分享 A这个题一分析就是每个数字都会与所有数字&一下 (a&a=a)&字操作是二进制同位都为一才为一 这时解法就变成统计每个二进制位上1的次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include<bits/stdc++.h> #define ll long long using names…
题目链接 题目大意 给你一个长为n(n<=5e3)的数组a.随机使得k个元素增加d.要你求多大的概率使得,这些数组元素的相对大小不发生改变 输出 n 行每行一个整数,第 i 行的整数表示 k=i 时的答案 题目思路 看了题解觉得是一个不太难的dp,但有点难想到 令\(dp[i][j][1]\) 表示为前i个元素有j个增加k,并且第i个元素加了k 令\(dp[i][j][0]\) 表示为前i个元素有j个增加k,并且第i个元素吗没有加k 然后转移即可 代码 #include<set> #in…
理解不够透彻.好题不可浪费,写题解以增进理解.会陆续补充题目.(咕咕咕) G Beihang Couple Pairing Comunity 2017 题目链接 Beihang Couple Pairing Comunity 2017 解题思路 第一步:分析题目 首先,如果只判断是否有Poor single dog,这是一道DFS入门题.于是DFS搜一遍,把每个点与出口的距离(DFS距离)表示出来并存储. 一对人拆开没有任何优化,所以看成一个人即可. 这里用到几个变换: \(state[i][j…
题面 自己去\(LOJ\)上找 Sol 直接排序然后\(KDTree\)查询 然后发现\(TLE\)了 然后把点旋转一下,就过了.. # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; IL int Input(){ RG int x = 0,…
首先对于给出的图建立圆方树,然后我们分类讨论每一个点作为中间的中转站出现的情况有多少种,累积到 \(ans\) 中. 对于圆点:在任意两个子树内分别选出一个节点都是合法的. 对于方点:连接向方点的点均为处于一个双联通分量中的点,彼此之间两两可.所以若我们让这个双联通分量上的一个点作为中转站,在其他任意的两棵子树内挑出两个点来都是合法的.这样乍一看好像是 \(n^{2}\) 的统计方法,我们不妨改变一下:因为答案是累加起来的,我们分别考虑每一棵子树对于答案造成的贡献.这一棵子树中的点可以和另一棵子…
https://loj.ac/problem/2587#submit_code (题面来自LOJ) 考试时候发觉树很可做,并且写了一个dp骗到了树的分. 苦于不会圆方树……现在回来发现这题还是很可做的! 先套路套圆方树,然后思考路径条数如何计算. 一个显然的想法:从一个点双-> 一个点双->……-> 一个点双,条数没准就是每个点双的大小! 于是我们能够想到方点的权值为点双的大小. 当然注意到我们选择的起点/终点以及每个点双之间相邻的切点只能走一次,为了去重,我们把圆点权值设为-1. 则任…
链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去.到那时,岛上的所有人都会遇难.守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复. 现在已知守望者的魔法初值M,他所在…
原题 原题 思路 考场想复杂了,搞到自闭-- 实际上,因为差值不变,我们可以先差分,求\(\gcd\),便得到答案(考场时想多了,想到了负数.正数各种复杂的处理,但是不需要),最后处理一下即可 代码 #include <cstdio> #include <cmath> #include <algorithm> #define ll long long const int MAXN = 1e6+10; ll n,a[MAXN],ji[MAXN]; ll gcd(ll x,…
首先考虑可以用二分答案来解决询问,可以二分一个长度\(len\),若在区间\([x-len,x+len]\)内包含了所有\(k\)种的商店,那么这个\(len\)就是合法的,可以通过二分来求其最小值. 对每个商店的存在时间转化为在\(a\)时刻出现,在\(b+1\)时刻消失,然后和询问一起离线按时间排序,就可以解决时间这一维的限制了. 然后考虑如何快速查询区间内是否包含所有的商店,和支持维护商店的出现消失. 对于这种区间数颜色的问题,可以对每个位置记录与其商店类型相同的上一个位置\(pre\),…
题目链接 题目大意 要你查询q 次询问,每次询问给出一个 L ,询问\(\sum_{i=1}^n\sum_{j=i+1}^n[d(i,j)<=L]\).其中 [C] 表示当命题 C 为真的时候为 1 否则为 0. 定义 d(u,v) 表示在无向图中点 u 能到达点 v 的所有路径中权值最小的路径的权值. 求所有答案的异或和 题目思路 这个题目类型应该是一个常见的套路题,然而我又双叒叕没做出来 这个求边的最大最小值的题目就要想到kursal的思想就行了. 实际上就是把所有小于L的所有边都加进去 询…
题目链接 题目大意 要你求出有多少个长度为n的排列满足m个限制条件 第i个限制条件 p[i]表示前 p[i]个数不能是1-p[i]的排列 题目思路 这个感觉是dp但是不知道怎么dp 首先就是要明白如果不满足1-p[i]为全排列,那么前p[i]个数必定有大于p[i]的数 那么就可以设\(dp[i][j]为前i个数中最大值为j的个数\) 最后的答案就是\(dp[n][n]\) 他这个的限制条件其实就是使得\(dp[p[i]][p[i]]=0\) 代码 #include<set> #include&…
题目链接 题目大意 给你一个长为n的数组,给所有数组元素加上一个非负整数x,使得这个数组的所有元素的gcd最大 题目思路 这主要是设计到一个多个数gcd的性质 gcd(a,b,c,d.....)=gcd(a,b-a,c-b,d-c.....) 其实这个式子很容易证明,设gcd(a,b,c,d...)=x 则\(a=k_1*x,b=k_2*x....\) 显然原式成立 那么直接进行差分操作,显然除了第一个元素,其他元素都不会变化,则\(\max gcd=gcd(b-a,c-b,d-c....)\)…
题目链接 题目大意 给你一个长为n的01串,要你进行最少的操作使得这01串变成全为0,求最少操作次数 有两种不同类型的操作 1:翻转一个前缀 2:单调翻转一个元素 题目思路 居然是一个dp,标程讲的很好,直接截图 代码 #include<set> #include<map> #include<queue> #include<stack> #include<cmath> #include<cstdio> #include<vect…
目录 #1. A + B Problem #2. Hello, World! #3. Copycat #4. Quine #7. Input Test #100. 矩阵乘法 #101. 最大流 #102. 最小费用流 #103. 子串查找 #104. 普通平衡树 #108. 多项式乘法 #119. 非负权单源最短路 #130. 树状数组 1 :单点修改,区间查询 #139. 树链剖分 #161. 乘法逆元 2 #556. 「Antileaf's Round」咱们去烧菜吧 #2030. 「SDOI…
今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min(ri)],那么我们考虑枚举min(ri),将ri>=min(ri)的区间按顺序加入,这时我们显然应该选第k小的li来更新答案.这些操作用个堆就可以轻松维护了. 时间复杂度为O(NlogN). #include<cstdio> #include<cctype> #include&…