Kick Start 2019 Round B Energy Stones】的更多相关文章

对我很有启发的一道题. 这道题的解法中最有思维难度的 observation 是 For simplicity, we will assume that we never eat a stone with zero energy. 求解最优化问题时,我们可以对解空间增加一些限制条件,使解空间更加"规范",同时保证缩小了的解空间中至少包含一个最优解.…
---恢复内容开始--- 题目大意:共有N个房子,每个房子都有各自的坐标X[i],占据每个房子需要一定花费C[i].现在需要选择K个房子作为仓库,1个房子作为商店(与题目不同,概念一样),由于仓库到房子之间存在距离 | Xi-Xj | ,所以想要使“占据K+1个房子以及每个仓库到商店的距离和”最小化,并输出该最小值. 数据范围:K<N<=1e5,C[i],X[i]<=1e9. 解题思路:比赛期间使用的是N*N*log(N)的时间复杂度,总体思路是先选定商店位置,再将其他房子按照“花费+距…
题目大意:由N个房子围成一个环,G个人分别顺时针/逆时针在房子上走,一共走M分钟,每分钟结束,每个人顺/逆时针走到相邻的房子.对于每个房子都会记录最后时刻到达的人(可能是一群人).最终输出每个人会被几个房子记录. 数据范围:N<=1e5,G<=1e5,M<=1e9,多组测试数据. 解题思路:比赛时没做出来第二个测试点,有点失了智...看了下题解马上就有了想法.关键点在于①将顺时针逆时针分开考虑②从走过M步的最终状态向前思考③从单个人变成一群人代码的准确性④代码的准确性. 我的想法是:先将…
$\DeclareMathOperator*{\argmax}{arg\,max}$ 题目链接 题目大意 一排 $N$ 个座位,从左到右编号 $1$ 到 $N$ . 有 $Q$ 个预定座位的请求,第 $i$ 个请求想要预定编号从 $L_i$ 到 $R_i$ 的所有座位. 可以按任意顺序处理这 $Q$ 个请求,处理一个请求时,把对应区间中尚未被分配的座位分配给这个请求. 试问每个请求最终订到的座位数量的最小值最大可能是多少? Limits Time limit: 30 seconds per te…
设共有 $N = \sum_{i=1}^{9} A_i$ 个数字.先把 $N$ 个数字任意分成两组 $A$ 和 $B$,$A$ 中有 $N_A = \floor{N/2}$ 个数字,$B$ 中有 $N_B=\ceil{N/2}$ 个数字.将 $A$ 中数字之和记作 $S_A$,$B$ 中数字之和记作 $S_B$.若 $(S_A - S_B) \bmod 11 \ne 0$,再进行调整. 考虑通过交换 $A$.$B$ 中的数字来改变 $S_A - S_B$ 的值.若有解一定能通过若干次交换操作使得…
题目大意 $R \times C$ 的网格,格子间的距离取曼哈顿距离.有些格子是邮局.现在可以把至多一个不是邮局的格子变成邮局,问每个格子到最近的邮局的曼哈顿距离的最大值最小是多少. 数据范围 $ 1 \le R \le 250 $ $ 1 \le C \le 250 $ 100 组测试数据 Time limit: 15 s 分析 显然可以二分答案. 几何视角 考虑平面上的整点(也称格点).到一个格点的曼哈顿距离不大于 $k$ 的所有格点的轮廓是一个旋转了 45° 的正方形( For any p…
题目链接 题目大意 在一条数轴上住着 $N$ 条狗和一个动物研究者 Bundle.Bundle 的坐标是 0,狗的坐标都是正整数,可能有多条狗住在同一个位置.每条狗都有一个颜色.Bundle 需要观测 $K$ 条狗.要观测一条狗 Bundle 必须走到狗的住处,并且穿着和狗同色的衣服.Bundle 只能在家换衣服.试问 Bundle 至少要走多长的路程?注意:最后 Bundle 不必回到住处. Constraints 不超过 100 组测试数据 $ 1 \le N \le 1000 $ $ 1…
题目链接 题目大意 有 $N$ 个人,$S$ 项技能,这些技能用 $1, 2, 3, \dots, S$ 表示 .第 $i$ 个人会 $c_i$ 项技能($ 1 \le c_i \le 5 $).对于两个人 $i$, $j$,若 $i$ 会某项技能而 $j$ 不会,则称 $i$ 可以辅导 $j$ .试问有多少个有序数对 $(i, j)$ 满足 $i$ 可以辅导 $j$ . 数据范围 多组测试数据(不超过 100 组) $ 2 \le N \le 5 \times 10^4 $ $ 1 \le S…
X or What? 符号约定: $\xor$ 表示异或. popcount($x$) 表示非负整数 $x$ 的二进制表示里数字 1 出现的次数.例如,$13 = 1101_2$,则 popcount(13) = 4. 注意到,popcount($a \xor b$) = popcount($a$) + popcount($b$) - 2 * number of positions both $a$ and $b$ are set. 因此,popcount($a \xor b$) 的奇偶性 =…
Energy stones 题意 有n块石头,每块有初始能量E[i],每秒石头会增长能量L[i],石头的能量上限是C[i],现有m次时刻,每次会把[s[i],t[i]]的石头的能量吸干,问最后得到了多少能量? 分析 题意不难理解,模拟题意也不难,但是纯粹模拟会T上天,怎么处理呢?枚举时间不可行,我们可以换个角度思考问题,考虑求每一个石头的贡献行不行?如何求一个石头的贡献呢,只要知道哪个时间点吸了这个石头,就能求出这个石头的贡献了.那时间点如何维护?我们知道,相邻石头的时间点不同只可能是有终点或者…
Google Kick Start 2019 C轮 第一题 Wiggle Walk 题解 题目地址:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050ff2/0000000000150aac 四个解法: 暴力模拟 使用HashMap优化,理论时间复杂度最小(好像也是并查集) (推荐)使用BitSet,实际占用空间特别小,仅仅是 2mn 个比特大小 使用HashMap实现的并查集方法,在东南西北4个方向上用…
[多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值,求使得最终所有边权为0的最小操作次数. \(v \leq 15,n \leq 10^5\) 分析 首先把边权转化为点权.记一个点的点权为与它相连的所有边的边权和.当我们给一条路径上的边异或上某个值时,路径端点的点权被异或了1次,而路径上不是端点的点有两条边被异或了,相当于异或了2次,权值不变.因此…
[多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为两组进行,且每一组中任意两个蓝精灵都是好友.另外,他们还想要最小化每组蓝精灵内部的好友关系数之和.蓝精灵们怎么都想不到如何分组来进行游戏,所以找到你来帮助他们分组.(若第一组内部的好友关系数为 cnt1,第二组内部的好友关系数为 cnt2,则"每组蓝精灵内部的好友关系数之和"为 cnt1+…
[多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献从小到大排成一排,以便于发放奖金.每只羊都会得到数值在 1~m 的奖金,并且第 i 只羊的奖金应为第 i+1只羊的约数(即满足 ai|ai+1).现在包包大人想知道一共有多少种不同的发放奖金的方式(两种发放奖金的方式不同是指在两种发放奖金的方式中存在某只羊拿到的奖金不同) 分析 我们发现,序列中不同…
a.链接:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 题意:有n个学生,要从里面选出p个来.每一个学生都有一个能力值. 要求你选出来的一组学生能力是相同的,有的学生能力比较低,所以需要花费你的时间来提升学生能力,一个学生提升1个能力值需要1小时. 求最低花费. 方法:因为只能提高学生的能力值,不能降低,所以一定是选择能力值挨着的那些.将数组排序,然后计算前p…
题目:Kick Start 2021 Round-B . Increasing Substring 输出字符串中每个字符的最长 Increasing Substring 的长度,非常简单的动态规划问题. 定义 dp[i] 是以 str[i] 结尾的最长 Increasing Substring 的长度. 转移方程 dp[i] = dp[i-1] + 1, if str[i-1] < str[i] dp[i] = 1, otherwise 显然是可以进行空间优化的,然而「可以但没必要」. 代码实现…
题意是,有$n$个石头,每个石头有初始能量$E_i$,每秒能量增长$L_i$,以及能量上限$C_i$,有$m$个收能量的时间点,每次把区间$\left[S_i, T_i\right]$石头的能量都给收掉,石头的能量都置零重新开始增长.问最后收了多少能量. 看完题解觉得好有道理...我好菜...考虑每个石头在多少个时间点收能量,然后每次收的能量就和这些时间点的时间间隔有关.若时间间隔大于等于$\dfrac {C_i}{L_i}$,那么这一段对答案的贡献就是$C_i$了,统计有多少这样的段即可.若时…
[51nod 1295]Xor key(可持久化trie) 题面 给出一个长度为n的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少? 分析 可持久化trie裸题 代码 #include<iostream> #include<cstdio> #define maxb 31 #define maxn 200000 #define maxs 6…
[51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费.如果无法从起点到达终点输出-1. 分析 贪心考虑,当我们到达一个城市x的时候,我们下一个到的城市应该是在x加满油的情况下,能到达的油价比x低的城市.如果每个加油城市之间的路都这样走,那么最后的价钱一定是最小的.…
ac代码 A. Countdown for循环跑一跑,没啥好说的. B. Stable Wall 如果\(s_{i,j} \ne s_{i+1,j}\),那么说明\(s_{i+1,j}\)必须在\(s_{i,j}\)之前先放,对于这种优先级关系很自然的就能想到拓扑排序.然后建图拓扑排序跑一跑就完事了. C. Perfect Subarray 这题直接暴力.首先记录前缀和.对于以\(i\)开始的子段,枚举所有的完全平方数\(sq\),符合条件的子段数等于满足\(sum_j = sum_{i-1}…
题意 一个\(n \times m\)的矩形空间,起点是\((1,1)\),终点是\((n,m)\). 假设当前位于\((x,y)\): 如果当前位于最后一行,那么下一步只能走向\((x,y+1)\) 如果当前位于最后一列,那么下一步只能走向\((x+1,y)\) 否则,以相等的概率走向\((x,y+1)\)和\((x+1,y)\)中的一个. 矩形空间中有一个小的矩形黑洞,用左上角和右下角的坐标表示,走进黑洞视为游戏失败,走到\((n,m)\)视为游戏成功,问游戏成功的概率. 解题思路 先不考虑…
这场题目除了最后一题稍微难了点,其他都是1眼题. T1 Bike Tour 没啥好说的,一个循环解决. T2 Bus Routes 没啥好说的,从第\(n\)的车站开始贪心取最晚的. T3 Robot Path Decoding 这题也算有点意思吧,但是其实还是挺简单的,大概思路就是用栈模拟一下. 具体步骤 记当前位置位于\(<x, y>\),用栈维护一个\(<dx, dy>\)的序列,表示下一步在两个方向的移动距离. 如果没有数字和括号,这个就是遍历一遍的事情.如果存在数字和括号…
题目:2021 Round-A . K-Goodness String 签到题,计算当前字符串的 K-Goodness Score ,然后与给出的 K 做差即可. #include <iostream> #include <string> using namespace std; int cnt = 1; int solve(const string &s, int n, int k) { int cur = 0; for (int i = 0; i < n / 2;…
E Find the median 题意:每次往序列中增加连续的[l,r]的数,每加入一次就询问当前序列的中位数. 解法:此题没有要求在线,那么直接离线+线段树+二分就可以了.求出每个端点之后排序得到数组b,线段树每个叶子结点i存储的是区间[ b[i-1]+1,b[i] ]的系数(即当前序列有多少个[ b[i-1]+1,b[i] ]).修改时顺便维护当前总的数个数sum,然后处理询问就是直接在线段树上二分就可以了. #include<bits/stdc++.h> #define lc o*2…
Solved:5 Rank:296 E Find the median (线段树) 题意:最开始一个空的数组 4e5次操作 每次把Li,Ri中的每个数插入进来 问当前的中位数 题解:把这n个区间离散化去重以后 剩下m个点 可以分成m-1个连续的区间 有个巧妙的方法是把所有的右端点+1后 每两个点之间表示一个左闭右开的区间 然后线段树每个叶子节点就表示这个区间的信息 每次操作就是先区间更新再查询了 用la表示这个区间被覆盖了多少次 查询的时候类似整体二分 其实还可以维护一个叶子节点表示的区间长度…
Speed Typing 题意概述 给出两个字符串I和P,问能否通过删除P中若干个字符得到I?如果能的话,需要删除字符的个数是多少? 数据规模 \[1≤|I|,|P|≤10^5 \] 双指针 设置两个指针i和j分别指向I和P的第一个字符,滑动指针j,如果j指向的字符与i指向的字符相同,则让i向后滑动一个字符,当i滑动到I字符串末尾或j滑动到P字符串末尾后即可结束循环.如果i滑动到I字符串末尾,则说明可以通过删除P中若干个字符得到I,那么删除的字符个数为\(|P|-|I|\):反之则不能. 复杂度…
题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A String 点击查看 进入讨论 566/3539  通过 B Irreducible Polynomial 点击查看 规律 730/2290 未通过 C Governing sand 点击查看 进入讨论 388/2088  通过 D Number 点击查看 进入讨论 959/1469  通过 E Find the median 点击查看 离散化 88/985 OK F Energy stones 点击查看 BIT 16/132 未通过…
牛客第一场 (通过)Integration (https://ac.nowcoder.com/acm/contest/881/B) (未补)Euclidean Distance (https://ac.nowcoder.com/acm/contest/881/C) (未补)Parity of Tuples (https://ac.nowcoder.com/acm/contest/881/D) (已补)ABBA (https://ac.nowcoder.com/acm/contest/881/E)…
Google Kick Start Round G 2019 Book Reading 暴力,没啥好说的 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e5+5; int n,m,q,p[maxn],r[maxn]; int cnt[maxn]; int main() { int T,Case=1; scanf("%d",&T); while(T-…
Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) #include <bits/stdc++.h> using namespace std; int n,m,k; ; int main() { cin>>n>>m>>k; ;i<=k-;++i) { sum+=(n+(m-))*-(i)*; } cout<<sum<<endl;…