Problem A. Kicksort 题意抽象一下为: 对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度. 数据范围: 测试组数1 ≤ T ≤ 100.   2 ≤ N ≤ 10000.  思路: 如连连看一般在一列数中反复消去正中间一个,判断其是否一直是目前数列的最小元素或最大元素. 模拟即可,维护一个当前数列最小值,当前数列最大值,消去边界l和r.(注意到每次消去的元素在原数列中必然组成一个连续区间) 每次判断消去边界应该…
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,…
这是现场完整做出来的唯一一道题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…
第一题: n个人,每个人有一个对应的技能值s,现在要从n个人中选出p个人,使得他们的技能值相同. 显然,如果存在p个人的技能值是相同的,输出0就可以了.如果不存在,就要找出p个人,对他们进行训练,治他们的技能值相同. 训练一个小时,技能值增加1,只有一个教练,也就是只能同时训练一个 人.找出最佳的p个人的方案,输出最小的训练时间. AC的代码: #include <stdio.h> #include <stdlib.h> #include <algorithm> usi…
思路: 动态规划. 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>…
这题又是万恶的线段树 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&…
太蠢了,,,因为初始化大数据没过,丢了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,点了之后等一…
Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Repeating Cipher 传送门 题意:第一个字母写一次,第二个字母写两次,依次递推,求原字符串是什么 题解:1.2.3.4,非常明显的d=1的等差数列,所以预处理一个等差数列直接取等差数列的每一项即可 代码: #include<bits/stdc++.h> using namespace s…
Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 Google Summer of Code是Google每年举办的一个活动. 从2005年开始到现在已经举办了十三届. Google在GSoC中的角色是一个平台和资金的提供者. 通过这个平台, 学生能够找到自己心仪的开源组织, 为了能获得实现project idea的资格而展开竞争. 申请期截止之后…