Codeforces #471
C(分段)
题意:

分析:
我们分别考虑p=2和p>=3的情况
当p=2的时候,个数明显是[L,R]内完全平方数的个数
当p>=3的时候,我们注意到这样的数字个数是1e6级别的,且a最多也不超过1e6
我们可以对于每个a去枚举对应的p,然后丢到一个set里去重
还有一点要注意的,p=2可能会和p>=3的情况重复,所以我们还要从set里去除所有的完全平方数
于是对于每个询问就在我们构造出的set里二分+[l,r]内完全平方数的个数
D(扩展kmp)
题意:
给出一个长度为n的字符串s,一个长度为m的字符串t。n>=m
输入一个整数k,你需要从字符串s中拿出两个不重合的长度为k的子串并拼接起来形成一个长度为2k的字符串f
请问是否存在一种取法使得t是字符串f的子串?
n,m,k<=5e5
分析:
我们来枚举字符串t的前缀,把这个前缀作为第一个切片的后缀,把t的对应后缀作为第二个切片的前缀,看看是否可行
为了让两个切片不相交,我们肯定想让第一个切片尽量靠左,第二个切片尽量靠右
我们注意到处理右边切片和处理左边切片恰好是对称的,这个我们只需要把字符串逆序再同样的做法求就行了,所以我们不妨就只讨论处理左切片
现在问题就变成了:在原串s中寻找一个尽量靠左的长度为k的子串,这个子串的长度为i的后缀恰好是pret[i]
我们可以用exkmp预处理求出extend[i]表示s[i..n-1]与t的最长公共前缀,那么对于每个i,本质上就是找到最小的j使得extend[j]>=i且j>k-i
我们可以从小到大枚举i,用一个set去维护满足extend[]>=i的所有下标就行了
时间复杂度O(nlogn)
E(去绝对值)
题意:
给定长度为n的数组a[i],你需要自己决定一个T,1<=T<=n,那么b[i]=a[i]+|T-i|
b[i]表示b[i]秒后位置i上空的冰锥就会掉落到底面,你就无法通过该位置了
现在有一个人从左边位置1向右边跑,如果某一时刻,该人前面的位置中有冰锥掉下来了,并且后面的位置中也有冰锥掉了下来,那么他就被困住了。
现在你需要定一个T,使得该人被困住的时刻尽量早。
如果不存在这样的T,那么输出-1
n<=1e5
分析:
最简单的想法就是枚举所有的T,然后求出该人被困住的时刻,取个最小值就行了
假设现在我们枚举了一个T,那么b[i]就已经确定了,我们先来看个简单的问题,就是如何判断该人是否会被困住
被困住的话,那么就是一定会存在一个i,使得b[i]<i,我们找一个满足条件的最小的i,那么该人就在i前面被挡住了不能再跑了(但要注意一点,就是有可能后面某个冰锥很早就掉下来了,他前方其实早就被封住了)
然后这个时候的答案还需要等他后方最早的冰锥掉落
所以该情况下的困住时刻是max(min(b[1..i-1]),min(b[i+1..n]))
这样还是O(n^2)的,我们得优化我们的判定
我们把b[i]中的绝对值去掉,那么就是
b[i]=a[i]+T-i (i<=T)
b[i]=a[i]+i-T (i>T)
我们可以考虑分类讨论两种情况下满足b[i]<i的最小的i是谁,这个东西的处理和D题的是一样的,用一个set来维护就行了
找到这个分界点i之后,问题就是对前半部分取min,对后半部分取min
我们注意到每次T的递增只是使得整体的一段+1,一段-1,然后我们需要求区间最小值,那么这用线段树就解决了
时间复杂度O(nlogn)
F(dp计数)
题意:
给出一个n点的有根树,根是1。
dp[u][k]表示在以u为根的子树里,我们需要去寻找一个子图,它是一个满k叉树,并且这个子图的深度最大,dp[u][k]就是这样的最大深度
我们需要对所有1<=u<=n,1<=k<=n的dp[u][k]去求和,将结果输出
n<=3e5
分析:
我们如果按照题目的这样去设计状态,那么状态就直接爆炸了,更不需要提转移了
我们把问题分成k=1和k>=2,k=1的情况直接树形dp就行了
对于k>=2的情况,我们发现所有dp[u][k]中有很多数字都是重复的且连续的,因为深度不可能会很大,最多是20
于是我们可以反过来设计状态,dp[u][dep]表示以u为根的深度为dep的子树,最大的k值是多少(因为如果存在深度为dep的k叉树,那么一定存在深度为dep的k-1叉树)
这样状态数就是O(nlogn)了,我们再来考虑转移
考虑枚举dep,然后就是dp[v][dep]转移到dp[u][dep]
很明显是我们对所有的dp[v][dep]从大到小排序,然后去找个最大的k满足a[k]>=k,这个我们直接sort暴力
复杂度是O(nlog^2n)的
Codeforces #471的更多相关文章
- Codeforces 471 D MUH and Cube Walls
题目大意 Description 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. Input 第一行给出数字N.N在[2,1000000 ...
- Codeforces Round #471 (Div. 2) C. Sad powers
首先可以前缀和 ans = solve(R) - solve(L-1) 对于solve(x) 1-x当中符合条件的数 分两种情况 3,5,7,9次方的数,注意这地方不能含有平方次 平方数 #inclu ...
- Codeforces Round #471 (Div. 2) F. Heaps(dp)
题意 给定一棵以 \(1\) 号点为根的树.若满足以下条件,则认为节点 \(p\) 处有一个 \(k\) 叉高度为 \(m\) 的堆: 若 \(m = 1\) ,则 \(p\) 本身就是一个 \(k\ ...
- Codeforces Round #471 (Div. 2)B. Not simply beatiful strings
Let's call a string adorable if its letters can be realigned in such a way that they form two conseq ...
- Codeforces Round #471 (Div. 2)A. Feed the cat
After waking up at hh:mm, Andrew realised that he had forgotten to feed his only cat for yet another ...
- codeforces 471C.MUH and House of Cards 解题报告
题目链接:http://codeforces.com/problemset/problem/471/C 题目意思:有 n 张卡,问能做成多少种不同楼层(floor)的 house,注意这 n 张卡都要 ...
- codeforces 471B. MUH and Important Things 解题报告
题目链接:http://codeforces.com/problemset/problem/471/B 题目意思:有 n 个 tasks,编号依次为 1 - n,每个 task 都有一定的难度值来评估 ...
- Codeforces Round #269 (Div. 2) A B C
先说C 题目链接:http://codeforces.com/problemset/problem/471/C 题目意思:有 n 张卡,问能做成多少种不同楼层(floor)的 house.注意这 n ...
- [CodeForces 471A] MUH and Sticks
题目链接:http://codeforces.com/problemset/problem/471/A 题目数据规模1 - 9,可以用一个数组进行计数,减掉出现四次的数,看看还有几个是非零数,有一个就 ...
随机推荐
- Luogu P2397 yyy loves Maths VI (mode)
题目传送门 虽然只是一道黄题,但还是学到了一点新知识-- 摩尔投票法 用\(O(1)\)的内存,\(O(n)\)的时间来找出一串长度为n的数中的众数,前提是众数出现的次数要大于\(n/2\) 方法很简 ...
- 17条 Swift 最佳实践规范
本文由CocoaChina译者小袋子(博客)翻译自schwa的github主页原文作者:schwa 这是一篇 Swift 软件开发的最佳实践教程. 前言 这篇文章是我根据在 SwiftGraphics ...
- STATIC 和 CLASS
STATIC 和 CLASS 由 王巍 (@ONEVCAT) 发布于 2015/01/28 Swift 中表示 “类型范围作用域” 这一概念有两个不同的关键字,它们分别是 static 和 class ...
- 随机生成一份试卷,试卷的种类分为单选、多选、判断三种题型。nodejs6.0 mysql
背景:从数据库中,随机生成一份试卷,试卷的种类分为单选.多选.判断三种题型. 首先我需要生成随机数id(在这之前我需要知道数据库中各个题型的题数,这样我才能设置随机数),并依据生成的随机数id,去查找 ...
- ZJOI2018游记Round1
广告 ZJOI2018Round2游记 All Falls Down 非常感谢学弟学妹们捧场游记虽然这是一篇假游记 ZJOI Round1今天正式落下帷幕.在这过去的三天里遇到了很多朋友,见识了很多有 ...
- PHP-redis命令之 散列(hashes)
二.散列(hashes) 1.hset:设置散列的值 $redis->hset('myhas','field1','hello'); $redis->hset('myhas','field ...
- wordpress 使用jquery需要主要的问题
wordpress 使用jquery时,不能直接使用$, 而是用jQuery 代替$, 而且wordpress默认调用jquery
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Problem K Tournament Wins
Problem K — limit 1 second Tournament Wins 这个题就是有2^n队伍,他现在的实力水平是第k位,采用的是淘汰制 问一下你他的胜场数的期望 这人能 win> ...
- Unity3D for iOS初级教程:Part 1/3
转自Unity 3d for ios 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成 ...
- LightOJ——1066Gathering Food(BFS)
1066 - Gathering Food PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB W ...