Problem A. Kicksort

题意抽象一下为:

  对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度。

  数据范围:  测试组数1 ≤ T ≤ 100.   2 ≤ N ≤ 10000. 

  

  思路:

  如连连看一般在一列数中反复消去正中间一个,判断其是否一直是目前数列的最小元素或最大元素。

  模拟即可,维护一个当前数列最小值,当前数列最大值,消去边界l和r。(注意到每次消去的元素在原数列中必然组成一个连续区间)

  每次判断消去边界应该左移还是右移,消去数是否为当前数列最小值或最大值,是则更新最小值或最大值,否则输出NO。

  AC代码:

  

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int MAXN=;
int a[MAXN];
int main()
{
// freopen("in.txt","r",stdin);
freopen("A-large (1).in","r",stdin);
freopen("A-large (1).out","w",stdout);
int T,n,tempmax,tempmin,l,r,mid;
scanf("%d",&T);
rep(t1,,T)
{
scanf("%d",&n);
for(int i=;i<n;++i) scanf("%d",&a[i]);
tempmax=n;
tempmin=;
int flag=;
l=(n-)/;r=l+;
rep(i,,n-)
{
mid=(l+n-r)/;
if(mid<=l)
{
mid=l;
l--;
}
else
{
mid=r;
r++;
}
if(a[mid]==tempmax)
{
tempmax-=;
}
else if(a[mid]==tempmin)
{
tempmin+=;
}
else
{
flag=;
break;
}
}
if(flag) printf("Case #%d: YES\n",t1);
else printf("Case #%d: NO\n",t1);
}
return ;
}

Problem B. Dance Battle:

维护一下循环头尾,贪心即可。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int MAXN=;
int a[MAXN];
int main()
{
freopen("B-large.in","r",stdin);
freopen("B-large.out","w",stdout);
int T,e,n,head,tail,ans;
scanf("%d",&T);
rep(t1,,T)
{
ans=;
scanf("%d%d",&e,&n);
rep(i,,n) scanf("%d",&a[i]);
sort(a+,a+n+);
head=;tail=n;
while(head<tail)
{
while(e>a[head]&&head<tail)
{
e-=a[head++];
ans++;
}
if(ans==) break;
if(tail>head)
{
e+=a[tail--];
ans--;
}
}
if(e>a[head]) ans++;
printf("Case #%d: %d\n",t1,ans);
}
return ;
}

Problem C. Catch Them All

把题意抽象一下:

    给一个N个点M条边的无向图。

    初始时人会等概率随机出生在地图上某个点上,之后每一轮等概率随机去地图上的另外N-1个点中的某一个。(即以1/N-1的概率前往他所在的点以外的N-1个点中的某一个)。每次走的都是最短路。

    问:P轮后总路程的期望。

数据范围:

1 ≤ T ≤ 100.

2 ≤ N ≤ 100.
1 ≤ P ≤ 109.

  以轮数为阶段,考虑第i轮到达各个点的期望与第i+1轮到达各个点的期望之间的线性递推关系。

  然后矩阵快速幂。

  

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int MAXN=;
int d[][];
double ans;
int n,m,p;
const int INF=~0U>>;
int F_1[];
typedef struct matrix
{
int r;
double a[MAXN][MAXN];
matrix(int rr):r(rr)
{
for(int i=;i<r;++i)
{
for(int j=;j<r;++j) a[i][j]=;
}
}
void m0()
{
for(int i=;i<r;++i)
{
for(int j=;j<r;++j) a[i][j]=;
}
}
void me()
{
for(int i=;i<r;++i)
{
for(int j=;j<r;++j)
{
if(i==j) a[i][j]=;
else a[i][j]=0.0;
}
}
}
matrix operator *(const matrix B)const
{
matrix tmp(r);
for(int i=;i<r;++i)
{
for(int j=;j<r;++j)
{
for(int k=;k<r;++k)
tmp.a[i][j]+=a[i][k]*B.a[k][j];
}
}
return tmp;
} }mat;
mat Pow(mat A,int t)
{
mat res(A.r);
res.me();
while(t)
{
if(t&) res=A*res;
A=A*A;
t=t/;;
}
return res;
}
mat Ans(n);
void init()
{
memset(d,0x3f,sizeof(d));
scanf("%d%d%d",&n,&m,&p);
int u,v,w;
rep(i,,m)
{
scanf("%d%d%d",&u,&v,&w);
d[u][v]=d[v][u]=w;
}
Ans.r=n+;
Ans.m0();
rep(i,,n) d[i][i]=;
rep(k,,n)
{
rep(i,,n)
{
rep(j,,n)
{
if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j];
}
}
}
rep(i,,n)
{
d[i][]=;
rep(j,,n)
{
d[i][]+=d[i][j];
}
}
/* F_1[1]=0;
rep(i,2,n) F_1[i]=d[1][i];
F_1[n+1]=1;*/
// mat Ans;
rep(i,,n-)
{
rep(j,,n)
{
if(j==n) Ans.a[i][j]=(double)d[i+][]/(n-);
else if(i==j) Ans.a[i][j]=;
else Ans.a[i][j]=(double)/(n-);
}
}
Ans.a[n][n]=1.0;
/* rep(i,0,n)
{
rep(j,0,n)
{
printf("%.5f ",Ans.a[i][j]);
}
printf("\n");
}*/
}
void work()
{
mat temp(n);
temp=Pow(Ans,p);
ans=0.0;
ans=temp.a[][n];
}
int main()
{
// freopen("in.txt","r",stdin);
freopen("C-large-practice.in","r",stdin);
freopen("C-large-practice.out","w",stdout);
int T;
scanf("%d",&T);
rep(t1,,T)
{
init();
work();
printf("Case #%d: %.6f\n",t1,ans);
}
return ;
}

Problem D. Eat Cake

  裸DP。大水题。差评。

  

google Kickstart Round F 2017 四道题题解的更多相关文章

  1. google Kickstart Round G 2017 三道题题解

    A题:给定A,N,P,计算A的N!次幂对P取模的结果. 数据范围: T次测试,1 ≤ T ≤ 100 1<=A,N,P<=105 快速幂一下就好了.O(nlogn). AC代码: #inc ...

  2. Kickstart Round D 2017 problem A sightseeing 一道DP

    这是现场完整做出来的唯一一道题Orz..而且还调了很久的bug.还是太弱了. Problem When you travel, you like to spend time sightseeing i ...

  3. 2019 google kickstart round A

    第一题: n个人,每个人有一个对应的技能值s,现在要从n个人中选出p个人,使得他们的技能值相同. 显然,如果存在p个人的技能值是相同的,输出0就可以了.如果不存在,就要找出p个人,对他们进行训练,治他 ...

  4. Kickstart Round D 2017 : A

    思路: 动态规划. large数据的时间范围很大,无法设计入状态中.转换思路为定义dp[i][j]为当前在景点i,并且已经游览了j个景点所花费的最小时间,这种思想与leetcode45类似.于是转移方 ...

  5. Google Kickstart Round.B C. Diverse Subarray

    这题又是万恶的线段树 maxx[j]存储的是 l = xxx, r = j的时候的答案 我们会让 l 从 1到n 的遍历中,查询线段树的[l, n]中最大的答案 因为query的下界是n,所以单次查询 ...

  6. Google Kickstart Round E 2018 B. Milk Tea

    太蠢了,,,因为初始化大数据没过,丢了10分,纪念一下这个错误 大概思路:先求出让损失值最小的排列,由已生成的这些排列,通过更改某一个位置的值,生成下一个最优解,迭代最多生成m+1个最优解即可,遍历求 ...

  7. Google Kickstart在线测试规则以及注意事项

    谷歌招聘在如火如荼的进行中,进谷歌都需要经过谷歌kickstart在线测试,然后过了之后还有五轮的面试- -.好吧毕竟你待遇高,你强你有理.. 下面介绍一下进谷歌的第一关google kickstar ...

  8. # Codeforces Round #529(Div.3)个人题解

    Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...

  9. Google Summer of Code 2017 经验谈

    Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 ...

随机推荐

  1. Varnish http缓存服务器

    http://blog.51cto.com/hexiaoshuai/1909183 https://jefferywang.gitbooks.io/varnish_4_1_doc_zh/content ...

  2. SQL语句全解,非常棒!

    链接自W3school非常详细的SQL教程 http://www.w3school.com.cn/sql/index.asp

  3. Linux系统下apt-get命令无法安装常见软件包?

  4. ThinkPHP5.0 开发手册

    ThinkPHP5.0开发手册地址 https://www.kancloud.cn/manual/thinkphp5/118003 此博文仅仅作为个人笔记存储,没有广告,宣传的意图

  5. spring websocket报错:No matching message handler methods.

    错误信息: [org.springframework.web.socket.messaging.WebSocketAnnotationMethodMessageHandler]-[DEBUG] No ...

  6. perceptual loss

    https://arxiv.org/abs/1603.08155 两个网络:image transfer网络和loss网络 image transfer网络: 将输入图片y通过映射f W (x)得到输 ...

  7. java算法01 - 链表

    1.链表 在Java中实现链表,每个节点都有一个值,然后把它链接到下一个节点.下面来看一下节点的实现 class Node<E> { private E e; private Node&l ...

  8. 域名排序 sort uniq awk

    [root@web01 ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数:-f :忽略大小写的差异,例如 A 与 a 视为编码相同:-b :忽略最前面的空格符部分: ...

  9. 【SoftwareTesting】Homework2

    For the Program1, For Question1: The fault is that in the loop condition, ' i ' should be not less t ...

  10. ionic 实现仿苹果手机通讯录搜索功能

    前言 由于之前做的SRM移动应用采用的是ionic1.x框架进行开发的,由于性能方便的诟病,导致用户体验不是很友好,于是想着怎么样去提高应用的性能问题.此时刚好ionic3.x框架已发布,由于ioni ...