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. 嵌入式Linux开发之uboot启动Linux整体流程分析

    嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWo ...

  2. springboot秒杀课程学习整理1-5

    1)交易模型设计 交易模型(用户下单的交易模型)OrderModel id(String 交易单号使用String), userId,itemId,amount(数量),orderAmount(总金额 ...

  3. 前端开发面试题总结之——JAVASCRIPT(二)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  4. 关于C#mvc用iis发布,虚拟目录的问题。

    mvc关于iis发布虚拟目录的问题,解决方法是修改代码中路径的方式,例如ajax中常用的为url:“/Home/Index”,可修改为 url: '@Url.Action("Index&qu ...

  5. json、demjson

    一.json 概述: json.dumps():将 Python 对象编码成 JSON 字符串, dic -> json str json.dump()  :将 Python 对象保存成 JSO ...

  6. python threading模块中的join()方法和setDeamon()方法的一些理解

    之前用多线程的时候看见了很多文章,比较常用的大概就是join()和setDeamon()了. 先说一下自己对join()的理解吧: def join(self, timeout=None): &quo ...

  7. 最短路径HDU3790(Dijkstra)

    准备考研,荒废了好多东西,希望做了正确的决定 /********************************************************* *author:chen xin * ...

  8. Buzzsumo大型教程(内容营销+外链outreach必备)营销神器

    做内容营销,Buzzsumo基本是必备工具.做谷歌白帽SEO的百分八十应该都用过或者至少接触过.在国外就更不用说了,很多网络营销大牛眼里,Buzzsumo的重要程度绝对超过Ahrefs! Buzzsu ...

  9. react 表单受控和非受控

    参见:https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ 非受控: onSubmit = ()=>{ const val ...

  10. L1-063 吃鱼还是吃肉

      国家给出了 8 岁男宝宝的标准身高为 130 厘米.标准体重为 27 公斤:8 岁女宝宝的标准身高为 129 厘米.标准体重为 25 公斤. 现在你要根据小宝宝的身高体重,给出补充营养的建议. 输 ...