SDOI Day1

好了做了SDOI day1的3道题,来讲下做法及感想吧

T1:排序(暴力,搜索)

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3990

我们可以很轻易的发现,对于一个操作方案,交换两个操作顺序不会影响答案,因此我们可以从小到大枚举答案,可以发现,对于第i种操作过后,每个2^i的块必须是连续的

那么在第i种操作之前,最多只能有2个块不连续,那么如果没有块不连续,不用执行该种操作;只有一个块不连续,交换这个块的两小块;两个块分4种情况讨论,用dfs暴力搜索即可

时间复杂度看上去是O(4^N),但好像可以证出复杂度其实是O(2^NlogN)N=20都能跑过

CODE:

T2:寻宝游戏(平衡树,dfn序)

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3991

这道题真的想不出来啊= =

贴下同学的题解吧= =

大概就是这样子的,看上去还是非常的形象的,但我根本没想到啊QAQ

T3:序列统计(FFT)

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3992

这道题分明就是原题好不好= =

首先我们可以很容易的写出状态转移f[i][[j*a[k]]+=f[i-1][j];

30%的分数可用矩阵乘法优化

我们取下离散对数(就是mod m意义下的),然后这个方程就变成了f[i][ind[j]+ind[a[k]]]+=sigma(f[i-1][ind[j]*cnt[inda[k]])

可以发现变成了卷积形式了,好像可以用fft优化了

但发现n很大

借鉴一下矩阵乘法的优化,可以发现多项式乘法满足结合律,那么我们可以愉快的学习快速幂的形式,变成f0*cnt^n次方了

时间复杂度是 mlogm logn完美解决本题

还有一件事,求离散对数可以不用大步小步法,因为p很小,可以直接p^2求出来

顺便提下原题是lydcjj(greenclouds)的kpmcup#1中的T1(ORZ),除了取离散对数其他都一模一样的

要不是做了MX的组合数和看过云神的题,还真不一定做得出来

总结一下:

作为省选题,还是很不错的

思考复杂度都不低(虽然有人说3道都是原题QAQ,自己还是太弱)但是编程复杂度并不高,前两道都能秒,第3道套个fft模板也能秒

还是这种考思维的比较好玩,像陈老师这种业界毒瘤的数据结构题真是丧心病狂(づ ̄ 3 ̄)づ

时间: 2024-10-21 16:13:23

SDOI Day1的相关文章

【BZOJ 4598】【SDOI 2016 Round2 Day1 T3】模式字符串

因为BZOJ上“ 数据文件太过巨大,仅提供前三组数据测试.”所以我考场上写的60分的点分治交上去也A了. 我的这个点分治的时间复杂度是$O(Tnmlogn)$的,听题解时没听懂$O(Tnlogn)$的标算,还有听说标算要用到字符串哈希,然而我并不会,所以先留个坑,贴上自己的60分代码,满分做法等我学会哈希之后再做 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; con

【BZOJ 4515】【SDOI 2016 Round1 Day1 T3】游戏

考场上写了lct,可惜当时对标记永久化的理解并不是十分深刻,导致调一个错误的程序调了4h+,最后这道题爆0了QwQ 现在写了树链剖分,用标记永久化的线段树维护轻重链,对于$s\rightarrow lca$,$lca\rightarrow t$分开讨论,把$a×dist+b$这个式子打开,提出常数项,发现是一个一次函数(也不是严格的一次函数,只不过有单调性就可以做了).标记永久化线段树做一下,每个节点维护一个当前区间的最小值就可以统计答案了233 这次又手残把“+”打成“*”调了一上午TwT,肉

学习Python的day1

自己以前从来没有写博客的想法,但是学Python,里面的老师也说了,写博客可以加深自己的记忆,也能回顾内容.还能给别人参考.挺值的.2017-09-16 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Py

雅礼集训——day1、day2

day1: 嗯上午考试拿了100分.第一题40,第二题60.看完题的时候我就觉得第二题的部分分是最好得到的,因为数据范围只有300,而且一眼看上去就是网络流的二分图多重匹配模型?然后就建了个网络流写了些,期望得分是70分,但是第1组数据有点劲,被卡掉了,就拿了60分.正解是map+set的贪心...并不会STL 写完T2去看T1,先用DFS乱搞了一下,结果样例都没过去,我手推了一下样例,得到了一个公式,就是从一个点出发需要加上的边数=这个点通过DFS能够遍历到的点的个数-与这个点直接相连的点的个

Linux学习日志day1——无人值守系统安装DHCP+TFTP+PXE+Kickstar

Linux学习日志day1--无人值守批量系统远程网络安装(DHCP+TFTP+PXE+Kickstar)                                         --作者:江信瀚 服务器环境介绍: 主机名:workstation.example.com 关闭SElinux以及防火墙 虚拟机:VMware(关闭了VMware的DHCP服务) 网卡配置: 静态IP获取! IPV6全部都删除,因为根本用不到 子网IP可以在VMware中设置 8.8.8.8是谷歌的DNS服务器

SDOI(队列)

SDOI Accepts: 393 Submissions: 993 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Description The Annual National Olympic of Information(NOI) will be held.The province of Shandong hold a Select(which we cal

BZOJ 4086: [Sdoi2015]travel(SDOI2015 round2 day1)(分类讨论+容斥原理)

描述:给定一张图(n<1000,m<5000)求有多少点对u,v有不重复经过其他点,共经过k个点的路径.(k<=7) 这个做法应该不是正解吧..顺便说下SDOI的几道题在BZ上都要卡常数真是哭瞎了QAQ 然后我们知道k这么小,考虑下每个k怎么乱搞吧... k=2:直接枚举每条边就行啦 k=3:枚举中间点,然后再考虑两端端点O(m^2) k=4:枚举两边的点,然后枚举边考虑中间的两个点是否联通O(m^2) k=5:枚举夹在中间的两个点,然后记录所有可能的中间点数目tot,然后枚举外面的两点

#6030. 【雅礼集训 2017 Day1】矩阵

#6030. 「雅礼集训 2017 Day1」矩阵 题目描述 有一个 n×n  的矩阵,每个位置 (i,j) 如果是 . 表示为白色,如果是 # 表示为黑色. 初始时,每个位置可以是黑色或白色的,(i,j)  位置的值会作为 ai,j 给你. 现在有一种操作,选择两个整数 i,j∈[1,n],记 (i,1),(i,2),…,(i,n) (i, 1), (i, 2)的颜色为 C1,C2,…Cn ??,将 (1,j),(2,j),…,(n,j)  的颜色赋为 C1,C2,…,Cn ??. 你的任务是

ZJOI2017 day1滚粗记

这几天去温州作为外省选手参加了$ZJOI day1$.打了几天的酱油,考试也滚粗了.. $day -2$ 中午从学校出发,坐飞机去温州.到了温州以后吃完晚饭就回宾馆.把一直想做的糖果公园做完了以后就堕落了一晚..玩了好久.. $day -1$ 上午听周子鑫大佬讲搜索.前几题还挺简单的,开始讲$dancing-links$以后就有点懵逼了.原理大概还是听懂了,但是完全不会实现..然后讲了很多玄学搜索题,感觉后面讲的那几题都有点懵懵懂懂,讲得好快难以接受.. 下午开始就正式进入懵逼阶段了.下午讲课一