自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 【Kickstart】2019 Round A - Parcels

解法BFS+二分,首先通过BFS能遍历得到每个位置到最近的office的距离,同时也能得到最大值r与些同时设置l=0,然后就开始对[l,r]进行二分查找判断k是否可行的条件是:是否存在一个位置(i,j),使得在这里放一个office之后所有grid的距离都不超过k,找到一个最小的k即可具体说来,需要将曼哈顿距离进行转换:dis(⟨x1,y1⟩,⟨x2,y2⟩)=max{abs((x1+y1...

2019-07-18 01:08:25 217

原创 【Kickstart】2019 Round B - Energy Stones

解法乍一看,如果是搜索的题,要枚举所有吃的顺序,那应该是O(n!)复杂度,估计吃不消所以得往DP方向考虑,那么就有点像01背包问题,能量是物品的价值,而背包大小则是所有石头食用时间的总和但是跟01背包问题不同的是,最后的能量和吃的顺序有关,而01背包里最后的能量跟物品放进背包的顺序无关,所以能拆解成子问题想了半天也不会做看完解答之后很有启发,对于这种跟顺序有关的情况,如果给定任何一个石头...

2019-07-17 12:34:29 479

原创 【Kickstart】2018 Round H - Let Me Count The Ways

解法用容斥原理做假设P(n,i)表示n对夫妇时,有i队夫妇粘在一起的种类数:我们选出i对夫妇,有C(m,i)种可能,把粘在一起的夫妇算做一个人,总共有2n-i个人全排列种排法,每个粘在一起的夫妇都有2种排法,所以总共有P(n,i)=2i(2n−i)!CmiP(n,i) = 2^i(2n-i)!C_m^iP(n,i)=2i(2n−i)!Cmi​种可能,整个问题的种类数就为:S(n,m)=P(...

2019-07-11 17:55:22 233

原创 【Kickstart】2018 Round H - Mural

解法这题主要靠分析……太牛逼了首先,肯定最后会涂上连续的K=⌊N+12⌋K = \lfloor\frac{N+1}{2}\rfloorK=⌊2N+1​⌋块,我们需要判断这个区间在哪而所有可能的位置都可以实现!!!假设我们的想涂上[i,i+K)部分,我们只需要从中间开始如果是奇数,那么从中间石块开始画如果是偶数,最中间有2个石块,选择离边缘更近的那个开始画:比如K=4的场景oo123...

2019-07-11 17:54:46 162

原创 【Kickstart】2018 Round F - Palindromic Sequence

解法这个题我看解答都想了好久= =对于小数据集,当N<=100时,可以通过计算出以S为前缀的字符串有多少个来慢慢遍历,记作PN(S)P_N(S)PN​(S)为了方便大数据集的分析,我们把空串也算上,空串是K=0对应的串处理过程伪代码如下:def solve(l,N,K): prefix = "" while True: if K < P(prefix+"$")...

2019-07-09 15:53:16 403

原创 【Kickstart】2018 Round G - Cave Escape

解法看到陷阱只有15个能反应过来是状态DP,但是不知道怎么个DP法……首先,不考虑能量够不够,每个状态直接用DFS/BFS可以得到一个最终能量值E[s],这个状态下能够到但是不在状态里的陷阱集合adjTrap[s],还有这个状态能不能出去isAble[s]这三个东西出来之后就可以DP了,设f为状态s可以取得的最大能量:f[s]初始为-1如果isAble[s]==true,那么f[s]=...

2019-07-09 01:37:49 296

原创 【Kickstart】2018 Round G - Combining Classes

解法C++的整数长度真是令人头秃解法本身不难,假如我们有个大小为10910^9109的数组,Line Sweep遍历每个下标的时候可以得到该下标的点的个数但是数组太大了,只能采取离散化的思想,用map记录坐标轴每个R+1,表示多一个新区间,每个L-1-1,表示离开一个区间最后从后往前遍历map,遍历到i的时候累加的前缀和grp(还没加上map[i]时的值)表示的是(i,i->nex...

2019-07-07 01:10:41 311

原创 【Kickstart】2018 Round G - Product Triplets

解法靠测试数据过的……19年没有测试数据恐怕要凉……比较简单,统计每个数字的出现次数times[i]当其中2个数的乘积为d时:d=0,乘积为0可以是3个0,和2个0加上一个非0数,所以增加C(times[0],3)+C(times[0],2)*(n-times[0])d=1,乘积为1只可能是三个1,所以增加C(times[1],3)d>1,最后这种情况比较简单,对d进行因子分解...

2019-07-07 01:09:56 327

原创 【Kickstart】2018 Round F - Specializing Villages

解法是Google Kickstart公开课里的解法:首先,需要分析出,当每个点都找它们直接相邻的边里的最小值时,距离最近。每个点都只取与它直接相连且距离最小的那条边时,我们可以得到一张子图:[外链图片转存失败(img-AzLi7slT-1562315720963)(quiver-image-url/31F02DCC828C6FB099EE1387BFD57340.jpg =90x94)]...

2019-07-05 16:35:58 361

原创 【Kickstart】2018 Round E - Milk Tea (与官方解答不同)

解法每一位置0或者置1会得到的投诉数很容易算,就是竖着求和如果没有forbidden做法,就是很简单的DP每个状态都检索感觉挺大的,标准答案的做法是每扩展一位,都挑出投诉数最小的101个方案,因为只会ban掉100个方案,所以这最小的101个里肯定有可以用的我用了TRIE,把forbidden pattern放到一棵trie里,然后dfs这棵树,比如我们总共10位,遍历到前缀1001时...

2019-07-04 18:24:13 204

原创 【Kickstart】2018 Round E - Yogurt

解法基于比较的排序这个比较简单,就是贪心法#include <stdio.h>#include <string>#include <iostream>#include <memory.h>#include <stdlib.h>#include <unordered_set>#include <map&g...

2019-07-04 18:11:46 143

原创 【Kickstart】2018 Round D - Funniest Word Search

解法第一步,分别统计以(i,j)结尾的,长度不超过k的单词总长度,横着和竖着分别记作h[i,j,k]和v[i,j,k]然后我们考虑DP,状态为f[i1,j1,i2,j2]四重循环遍历的时候:i2每增加1的时候,总是从f[i1,j1,i2,j1]开始的,这是竖着的一列,所以我们需要知道这一列里:横着,以区间(i1,j1)到(i2,j1)之间的字符结尾,长度不超过1的单词总长度,假设这...

2019-07-02 23:25:20 270

原创 【Kickstart】2018 Round D - Paragliding

解法对于每个气球(x,y),如果它可以被拿到,那么需要有塔,其塔尖(p,h)在阴影部分:分析可知需要满足:h≥∣p−x∣+yh\ge |p-x|+yh≥∣p−x∣+y,即x+y≥p+hx+y\ge p+hx+y≥p+h且y−x≥h−py-x\ge h-py−x≥h−p把每个点从(x,y)进行坐标变换成(x+y,y-x)所以对于每个气球,只要找有没有横纵坐标都比它大的塔即可。#inc...

2019-07-02 19:39:18 179

原创 【Kickstart】2018 Round D - Candies

解法首先,跟区间和和滑动窗口有关系计算区间和,首先要把前缀和算出来总之,要先固定一个区间的端点,可以是左,也可以是右。假如我固定的是左端点l,要找合适的右端点r。要保证这个区间奇数个数不超过o个然后需要找到r,使得P[r]-P[l-1]是满足P[r]-P[l-1]<=d且最大的那个,也就是说,P[r]要是不超过P[l-1]+d但最接近它的一个这个得用upper_bound来做(如...

2019-07-02 16:23:15 338

原创 【Kickstart】2018 Round C - Kickstart Alarm

解法就是数学优化+快速幂+除法取模结合在一起首先,数学优化比较容易,最后肯定是要变成每遍历一个数就加一次。对于ama_mam​,它可以是子数组里的第1,2,…,m个,而它是第i个的子数组一共有(N+1−m)(N+1-m)(N+1−m)个,当计算POWERj{POWER}_jPOWERj​时,它的系数就是1j1^j1j,2j2^j2j,3j3^j3j,…,mjm^jmj,所以最后ama_mam​...

2019-07-01 00:47:16 221

原创 【Kickstart】2018 Round C - Planet Distance

解法就是有个无向图,保证只有一个环,求每个点到环的距离首先找到环上的点从环上的点开始dfs找环有很多种方法,DFS,BFS还有拓扑都可以找#!/usr/bin/env python# -*- coding: utf-8 -*-from collections import defaultdict,dequedef solve(n,edges): circle = s...

2019-07-01 00:45:35 158

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除