这题又是万恶的线段树 maxx[j]存储的是 l = xxx, r = j的时候的答案 我们会让 l 从 1到n 的遍历中,查询线段树的[l, n]中最大的答案 因为query的下界是n,所以单次查询复杂度是logn 再其次这样做必须得再每次单元操作之后 对线段树 进行update #include <iostream> #include <fstream> #include <vector> #include <set> #include <map&…
A题:给定A,N,P,计算A的N!次幂对P取模的结果. 数据范围: T次测试,1 ≤ T ≤ 100 1<=A,N,P<=105 快速幂一下就好了.O(nlogn). AC代码: #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;++i) using namespace std; const int MAXN=1e5+1e4; long long mo[MAXN]; int TT; long long a,…
第一题: n个人,每个人有一个对应的技能值s,现在要从n个人中选出p个人,使得他们的技能值相同. 显然,如果存在p个人的技能值是相同的,输出0就可以了.如果不存在,就要找出p个人,对他们进行训练,治他们的技能值相同. 训练一个小时,技能值增加1,只有一个教练,也就是只能同时训练一个 人.找出最佳的p个人的方案,输出最小的训练时间. AC的代码: #include <stdio.h> #include <stdlib.h> #include <algorithm> usi…
Problem A. Kicksort 题意抽象一下为: 对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度. 数据范围: 测试组数1 ≤ T ≤ 100.   2 ≤ N ≤ 10000.  思路: 如连连看一般在一列数中反复消去正中间一个,判断其是否一直是目前数列的最小元素或最大元素. 模拟即可,维护一个当前数列最小值,当前数列最大值,消去边界l和r.(注意到每次消去的元素在原数列中必然组成一个连续区间) 每次判断消去边界应该…
太蠢了,,,因为初始化大数据没过,丢了10分,纪念一下这个错误 大概思路:先求出让损失值最小的排列,由已生成的这些排列,通过更改某一个位置的值,生成下一个最优解,迭代最多生成m+1个最优解即可,遍历求出没有被禁的最优解即可 #include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<string.h> #in…
谷歌招聘在如火如荼的进行中,进谷歌都需要经过谷歌kickstart在线测试,然后过了之后还有五轮的面试- -.好吧毕竟你待遇高,你强你有理.. 下面介绍一下进谷歌的第一关google kickstart在线测试规则和注意事项. google kickstart网址: https://code.google.com/codejam/ (PS. 建议全程连接vpn操作.) 首先你要有一个谷歌账号,可以是Gmail邮箱账号,没有的话注册一个. 然后进入上面的网址,右上角有一个log in,点了之后等一…
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|\):反之则不能. 复杂度…
思路: 对于small数据,由于求和及奇数数量两个限制条件均满足区间单调性,可以直接使用尺取法(滑动窗口法)求解. 对于large数据,奇数数量依然是满足区间单调性的.首先使用尺取法,找到所有满足奇数限制条件的区间,然后对于每个区间分别计算不超过D的最大连续子段和.具体来说,可将区间的所有前缀和放到一个multiset中,二分查找即可. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; const…
[Problem Description] Problem On the game show The Last Word, the host begins a round by showing the contestant a string S of uppercase English letters. The contestant has a whiteboard which is initially blank. The host will then present the contesta…
题目链接:https://code.google.com/codejam/contest/3324486/dashboard#s=p2 题目: 思路: 代码实现如下: #include <set> #include <map> #include <deque> #include <queue> #include <stack> #include <cmath> #include <ctime> #include <b…
有史以来打得最差的一次kickstart竟然发生在winter camp出结果前的最后一次ks = = 感觉自己的winter camp要凉了 究其原因,无非自己太眼高手低,好好做B, C的小数据,也不至于最后才AC了第一题吧 B题,我花了两个小时也没AC = =,我的做法和题解大数据的第一种类似. 我们可以发现,每个点只由两个diagonal决定,然后每个diagonal至多做一次,做两次相当于白做嘛. 然后我们发现如果先讨论最长正对角线是否取,也就是从(0,0)到 (n-1,n-1),可以直…
这是现场完整做出来的唯一一道题Orz..而且还调了很久的bug.还是太弱了. Problem When you travel, you like to spend time sightseeing in as many cities as possible, but sometimes you might not be able to because you need to catch the bus to the next city. To maximize your travel enjoy…
打了ks好久都没有更新 诶,自己的粗心真的是没救了,A题大数据都能错 A #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cstring> #include <vector> #include <list> #include <queue> #…
第一次打codejam....惨的一比,才A1.5题,感觉自己最近状态渣到姥姥家了,赶紧练练 A 模拟,注意0的问题 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cstring> #include <vector> #include <list> #i…
思路: 动态规划. large数据的时间范围很大,无法设计入状态中.转换思路为定义dp[i][j]为当前在景点i,并且已经游览了j个景点所花费的最小时间,这种思想与leetcode45类似.于是转移方程为dp[i][j] = min(cal(dp[i - 1][j], i), cal(dp[i - 1][j - 1] + ts, i)).其中cal(t, i)表示在时刻t出发,乘坐从景点i发出的车中尽可能早的一辆并且到达景点i+1所花费的总时间. 实现: #include <iostream>…
---恢复内容开始--- 题目大意:共有N个房子,每个房子都有各自的坐标X[i],占据每个房子需要一定花费C[i].现在需要选择K个房子作为仓库,1个房子作为商店(与题目不同,概念一样),由于仓库到房子之间存在距离 | Xi-Xj | ,所以想要使“占据K+1个房子以及每个仓库到商店的距离和”最小化,并输出该最小值. 数据范围:K<N<=1e5,C[i],X[i]<=1e9. 解题思路:比赛期间使用的是N*N*log(N)的时间复杂度,总体思路是先选定商店位置,再将其他房子按照“花费+距…
Google Kick Start 2019 C轮 第一题 Wiggle Walk 题解 题目地址:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050ff2/0000000000150aac 四个解法: 暴力模拟 使用HashMap优化,理论时间复杂度最小(好像也是并查集) (推荐)使用BitSet,实际占用空间特别小,仅仅是 2mn 个比特大小 使用HashMap实现的并查集方法,在东南西北4个方向上用…
a.链接:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 题意:有n个学生,要从里面选出p个来.每一个学生都有一个能力值. 要求你选出来的一组学生能力是相同的,有的学生能力比较低,所以需要花费你的时间来提升学生能力,一个学生提升1个能力值需要1小时. 求最低花费. 方法:因为只能提高学生的能力值,不能降低,所以一定是选择能力值挨着的那些.将数组排序,然后计算前p…
Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 Google Summer of Code是Google每年举办的一个活动. 从2005年开始到现在已经举办了十三届. Google在GSoC中的角色是一个平台和资金的提供者. 通过这个平台, 学生能够找到自己心仪的开源组织, 为了能获得实现project idea的资格而展开竞争. 申请期截止之后…
题目大意:由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…
https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ff08/0000000000386d5c (kick start上网方式需百度) (第一题ac,第二题ac,第三题,小数据集能ac,第四题,小数据集能ac) 第一题: 大致意思就是要找峰值点(第一,必须严格大于前面所有值,第二,要么是结尾值,要么必须满足比后一位严格大),基础题,略 Problem Isyana is given the number of…
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Google Codejam Round 1A的C题. #include <bits/stdc++.h> typedef long long ll; const int N = 5; int a, b, n, mod; /* *矩阵快速幂处理线性递推关系f(n)=a1f(n-1)+a2f(n-2)+.…
转载:http://www.klogk.com/posts/hdu4565/ 这里写的非常好,看看就知道了啊. 题意很easy.a,b,n都是正整数.求 Sn=⌈(a+b√)n⌉%m,(a−1)2<b<a2 这个题目也是2008年Google Codejam Round 1A的C题. 做法事实上很easy.记(a+b√)n为An,配项 Cn=An+Bn=(a+b√)n+(a−b√)n 两项恰好共轭,所以Cn是整数. 又依据限制条件 (a−1)2<b<a2⇒0<a−b√<…
week1 Google KickStart 2019 A轮 讲解视频地址AcWing 549. 训练   tag: 排序 遍历 在线练习地址AcWing 550. 包裹       在线练习地址AcWing 551. 抢票       在线练习地址 week2 腾讯2019 暑期实习提前批笔试  讲解视频地址AcWing 567. 硬币  在线练习地址AcWing 568. 奇妙的数列  在线练习地址AcWing 569. 猜拳游戏  在线练习地址AcWing 570. 气球游戏 在线练习地址…
Problem B. Vote A and B are the only two candidates competing in a certain election. We know from polls that exactly N voters support A, and exactly M voters support B. We also know that N is greater than M, so A will win. Voters will show up at the…
Practice Round Problem A GBus count (9pt/15pt) (2019年1月14日,kickstart群每日一题) 题意:有一条笔直的大路,上面有城市编号从 1 开始从左到右一次排列.上面有 N 个 GBuses, 每一个 bus[i] 连接 A[i]  到 B[i] 两个地点(包含这两个地方).我们想要求 P 个城市,每个城市经过的公交车数量. 输入输出 和 数据规模 如下: There exist some cities that are built alo…
Google Code Jam Qualification Round Africa 2010 的第一题,很简单. Problem You receive a credit C at a local store and would like to buy two items. You first walk through the store and create a list L of all available items. From this list you would like to b…
题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation 题意:一串排列1~n.求一个序列当中相邻两项差的绝对值的个数(指绝对值不同的个数)为k个.求序列. 思路:1~k+1.构造序列前段,之后直接输出剩下的数.前面的构造能够依据,两项差的绝对值为1~k构造. AC代码: #include <stdio.h> #include <string.h> int ans[200010]; bool vis[100010]; i…
Codeforces Round #486 (Div. 3) A. Diverse Team 题目连接: http://codeforces.com/contest/988/problem/A Description There are n students in a school class, the rating of the i-th student on Codehorses is ai. You have to form a team consisting of k students…