Wannafly挑战赛1
地址:https://www.nowcoder.com/acm/contest/15#question
A(树形dp)
分析
dp[i][0],dp[i][1]分别表示以i为根的子树中,有多少个点到i的距离为偶数、为奇数
那么每次merge i点和i点的某个儿子u的时候,统计一下答案就行了,ans+=dp[i][0]*dp[u][1]+dp[i][1]*dp[u][0]
时间复杂度$O(n)$
B(枚举)
分析
每次枚举一个区间(i,j),统计1~i-1中有多少个区间异或值和(i,j)的异或值相同
可以i从小到大枚举,维护一个权值数组,将1~i-1所有区间的异或值丢到权值数组中
计算一个区间的异或和可以通过异或前缀和预处理来$O(1)$计算
时间复杂度$O(n^2)$
C(虚树上bfs)
分析
假设我们当前询问中的关键点的lca是u,那么容易发现答案要求的那个点一定在u子树内(因为若在子树外一点x,那么十分容易证明u点比x点更优)
进一步分析,发现答案要求的那个点一定就是所有关键点中距离最远的两个点的路径中点
那么现在只需要求出关键点中最远的两个点的距离就行了
根据题目输入的范围,很明显需要求出虚树,然后就等价于在虚树上询问相距最远的两个点
也就是找这个虚树的直径,在虚树上两次bfs就行了
时间复杂度$O(n+\sum {|S_i|})$
D
待填坑
E(线性基)
分析
很神奇的题
我们可以把每个点周围相连的边边权都异或起来作为这个点的点权,那么如果两个相邻点点权相异或,那么它们相邻的那条边异或了两次,相当于没有异或,即不在割当中!
也就是说这n个点权,我们任取k个点点权将其异或,那么最终结果就表示一个割的方案!
那么问题就转换成了有n个数,这n个数异或出的不同结果的和是多少
先求出线性基,设秩为r
枚举每一位,看看是否有某个基该位是1,如果有1,那么这些基能异或出的2^r个数中,该位是1的一定有一半,所以该位的贡献就是$2^{r-1}*2^i$
结果long long就能存下,输出前9位唬人的
时间复杂度$O(32n)$
Wannafly挑战赛1的更多相关文章
- Wannafly挑战赛25游记
Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- Wannafly 挑战赛 19 参考题解
这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...
- Wannafly挑战赛21A
题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...
- Wannafly挑战赛24游记
Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...
- Wannafly挑战赛25C 期望操作数
Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...
- Wannafly挑战赛18B 随机数
Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...
- Wannafly挑战赛22游记
Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...
- 【Wannafly挑战赛4】F 线路规划 倍增+Kruskal+归并
[Wannafly挑战赛4]F 线路规划 题目描述 Q国的监察院是一个神秘的组织.这个组织掌握了整个帝国的地下力量,监察着Q国的每一个人.监察院一共有N个成员,每一个成员都有且仅有1个直接上司,而他只 ...
- Wannafly挑战赛18 E 极差(线段树、单调栈)
Wannafly挑战赛18 E 极差 题意 给出三个长度为n的正整数序列,一个区间[L,R]的价值定义为:三个序列中,这个区间的极差(最大值与最小值之差)的乘积. 求所有区间的价值之和.答案对\(2^ ...
随机推荐
- Windows Server 启用匿名共享
1.开始 → 运行 → gpedit.msc,打开组策略编辑器: 2.依次展开"计算机配置" → "windows设置" → "安全设置" ...
- systemtap执行过程中报probe timer.profile registration error
probe timer.profile registration error 今天在执行火焰图的过程中,代码报错,probe timer.profile registration error 经过查询 ...
- SQLite - SELECT查询
SQLite - SELECT查询 SQLite SELECT语句用于获取数据从一个SQLite数据库表返回数据结果表的形式.也称为result-sets这些结果表. 语法 SQLite SELECT ...
- Python3简明教程(十一)—— 类
本节中将通过定义一些简单的 Python 类,来学习 Python 面向对象编程的基本概念. 定义类 在写你的第一个类之前,你应该知道它的语法.我们以下面这种方式定义类: class nameofth ...
- QT+UI界面初识+界面与编辑区结合操作
图片中时UI界面的初识,了解界面部件都是干啥的: 有了界面之后,使得QT的开发变的更加的便捷,但是在ui界面有时满足不了的功能,就需要使用代码解决,怎么利用代码呢? 首先:打开程序编辑区: #incl ...
- python爬虫---从零开始(五)pyQuery库
什么是pyQuery: 强大又灵活的网页解析库.如果你觉得正则写起来太麻烦(我不会写正则),如果你觉得BeautifulSoup的语法太难记,如果你熟悉JQuery的语法,那么PyQuery就是你最佳 ...
- win10x64下的redis安装与使用
先引用百度百科的一段话吧,具体可以到百科查看吧. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年 ...
- Java之字符,字符串替换
/** 4. 字符串的替换操作 1. String replace(char oldChar,char newChar) //将新字符替换旧字符 3. String replaceFirst(Stri ...
- ProxyFactory
Spring定义了org.springframework.aop.framework.AopProxy接口,并提供了两个final类型的实现类. AopProxy类结构:
- android开发链接
http://blog.csdn.net/zz2043191420/article/details/47338591