cojs 安科赛斯特 题解报告
QAQ 从IOI搬了一道题目过来
官方题解貌似理论上没有我的做法优,我交到BZOJ上也跑的飞快
结果自己造了个数据把自己卡成了4s多,真是忧桑的故事
不过貌似原题是交互题,并不能离线
说说我的做法吧
首先我们会写暴力,而我的做法只要会写暴力就可以了
对于一个询问A,B
我们有以下几种方法:
1、搞出所有颜色是A的DFS序对应区间的左右端点和所有颜色是B的DFS序对应区间的左右端点
然后把所有端点排个序,线性扫一遍,维护一个扫描线cnt,当遇到A的左端点时++cnt,遇到A的右端点时--cnt
遇到B的左端点时ans+=cnt,这样我们就可以统计答案了
我们可以预处理出所有颜色的DFS序分别排序后的结果,每次做的时候归并排序一下就可以了
时间复杂度O(S(A)+S(B)) 即A颜色的个数+B颜色的个数,空间复杂度O(n)
2、我们DFS整棵树,记录上面DFS的时候经过了多少个A,经过B的时候更新答案就可以了
时间复杂度O(n),但是如果我们开O(n)的空间就可以在固定A的情况下求出所有可能的B的答案了
我们有如下两种做法之后就自然而然的可以A掉这道题目了
首先对于大小大于sqrt(n)的颜色,我们会发现它最多有sqrt(n)个,然后我们对于每个颜色DFS一遍计算答案
时间复杂度O(n*sqrt(n))
对于大小小于sqrt(n)的颜色,我们采用第一种做法
时间复杂度O(n*sqrt(n))
所以总时间复杂度O(n*sqrt(n))
注意到本题出题人热衷于卡内存,但是允许离线
所以不能预处理sqrt(n)个颜色的答案,只能将询问排序之后做
又注意到当A颜色>sqrt(n)或者B颜色>sqrt(n)的时候DFS的方式是不同的
但都是普及组的内容,随便写写就好啦,归并排序也是普及组的内容
所以代码还是极其好写的
cojs 安科赛斯特 题解报告的更多相关文章
- cojs 强连通图计数1-2 题解报告
OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...
- cojs 二分图计数问题1-3 题解报告
OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...
- cojs DAG计数问题1-4 题解报告
最近突然有很多人来问我这些题目怎么做OwO 然而并不是我出的,结论我也不是很懂 研究了一下觉得非常的一颗赛艇,于是就打算写这样一篇题解 DAG 1 我们考虑DAG的性质,枚举出度为0的点 设出度为0的 ...
- cojs 疯狂的字符串 题解报告
首先这道题是GT考试的加强版本QAQ 当n<k的时候,答案显然是10^n 当n=k的时候,答案显然是10^n-1 这样就有20分辣 之后我们考虑k<=20的做法 显然设f(i,j)表示前i ...
- cojs QAQ的矩阵 题解报告
题目描述非常的清晰 首先我们考虑(A*B)^m的求法,这个部分可以参考BZOJ 杰杰的女性朋友 我们不难发现(A*B)^m=A*(B*A)^(m-1)*B A*B是n*n的矩阵,而B*A是k*k的矩阵 ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- 题解报告:hdu 1398 Square Coins(母函数或dp)
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
- 题解报告:hdu 2069 Coin Change(暴力orDP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...
- 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)
Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...
随机推荐
- Linux C 程序 线程(18)
线程控制 1.线程与进程的关系 线程:计算机中独立运行的最小单位. 在用户角度:多个线程是同时执行的. 操作系统角度:各个线程交替执行 以上只针对单核CPU的情况 在多核CPU主机上,多个线程可以同时 ...
- OpenSSL 安全漏洞: heartbleed
Heartbleed 是 2014年4月7日被广泛报道的一个 OpenSSL 安全漏洞,号称是灾难. 利用它能读取服务器上最多64k的内存,只要该服务器可以通过ssl连接. Heartbleed ...
- C#inSSIDer强大的wifi无线热点信号扫描器源码
一个完整的无线信号扫描工具源码,包含了从热点扫描到强度绘制以及信号变换曲线图.源码基于Managed Wifi实现基础功能,Managed Wifi也是开源项目,这个可以在本站搜索到. 指定网卡信号扫 ...
- keditor_php图片上传
<script type="text/javascript" src="/statics/js/kindeditor/kindeditor-min.js" ...
- Repeat Header / Keep Header Visible in Tables in RS 2008
You selected "Repeat header rows on each page" or "Keep header rows visible while scr ...
- Posix 信号量
作用 信号量的值为0或正整数,就像红灯与绿灯,用于指示当前是否可以接受任务. 信号量对进程和线程都适用. gcc编译时需加-lpthread 基本函数 信号量的相关函数与标准文件函数非常相似,可以理解 ...
- Uploadify 3.2 上传图片
uploadify version: uploadify 3.2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...
- Redis 四:存储类型之无序集合
.sadd num a b c 向num集合中添加abc三个元素 .srem num b 从num集合中删除b元素 .smembers num 获取num集合中所有的元素 .sismember num ...
- [WinForm]- 设置DataGridView单元格内根据不同值显示图片
首先设置要显示图片的列 DataGridViewImageColumn status = new DataGridViewImageColumn(); status.DisplayIndex = ; ...
- 在eclipse中使用jax-ws构建webservices服务端和客户端
服务端: package com.yinfu.service; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebServi ...