A. Compote

水题(数据范围小都是水题),按照比例找最小的就行了,3min水过。

int main()
{
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c))
{
int ans=0;
for(int i=1;i<=a;i++)
{
if(b>=2*i&&c>=4*i)
{
ans=max(ans,i+2*i+4*i);
}
}
printf("%d\n",ans);
} return 0;
}

B. Decoding

题意:一个字符串给其加密的方式是每次取其出最中间的那个字符如果长度为偶数取左边的组成新的串然后在原串中删掉此位子上的字符。现在给出你密文与长度求明文。

思路:模拟即可,可以用两个string存左右两边的,也可以用数组把每个位置加密后的状态存起来,然后利用数据范围小两层循环找到相应的位置输出即可。

const int N=1e6+7;
int a[N],v[N];
char s[N];
int main()
{
int n;
while(~scanf("%d%s",&n,s+1))
{
int x=n;
int i,j;
memset(v,0,sizeof(v));
int len=1;
if(n%2) i=j=(n+1)/2,j++;
else i=j=n/2,j++;
if(n%2)
{
a[len++]=i--;
n--;
}
while(n)
{
if(n%2==0)
a[len++]=i--;
else
a[len++]=j++;
n--;
}
for(int i=1; i<=x; i++)
for(int j=1; j<len; j++)
if(i==a[j])
{
printf("%c",s[j]);
break;
}
printf("\n");
}
return 0;
}

C. Tram

模拟题,不用想复杂了,开始想得太复杂直接跳过这题,回来才发现原来也不难。

题意:一段路为直线起点为0终点为s。一辆车从0到s来回匀速直线运动,走1m需要v1时间,小明从一个点q1出发去q2,走1m需要v2时间。求小明到达q2点最少需要多少时间。

思路:其实到达终点只有两种情况,一种直接走过去,一种的乘车到达。而如果是乘车到达的话是取决于车到达终点的状态的。明白了这个就很好写了,总共5种情况,有很多细节需要注意一下。

int main()
{
int s,p1,p2,v1,v2,pos,d;
while(~scanf("%d%d%d%d%d%d%d",&s,&p1,&p2,&v1,&v2,&pos,&d))
{
if(p1==p2)
{
printf("0\n");
continue;
}
int ans=abs(p2-p1)*v2;//直接到;
//坐车到,如果最终是坐车到的话其实取决于车到达的时间;
if(p2>p1)
{
if(d==1)//同向;
{
if(pos>p1)//车在前面
{
int ans1=2*s*v1;
if(pos>p2) ans1-=abs(pos-p2)*v1;
else if(pos<p2) ans1+=abs(pos-p2)*v1;
ans=min(ans,ans1);
}
else //车在后面
{
int ans1=abs(pos-p2)*v1;
ans=min(ans1,ans);
}
}
else //反向;
{
if(pos>=p1)
{
int ans1=2*pos*v1;
if(p2>pos) ans1+=abs(pos-p2)*v1;
else if(p2<pos) ans1-=abs(pos-p2)*v1;
ans=min(ans,ans1);
}
else
{
int ans1=2*pos*v1;
ans1+=(p2-pos)*v1;
ans=min(ans,ans1);
}
}
}
else //p1>p2
{
if(d==-1)//同向;
{
if(pos<p1)
{
int ans1=2*s*v1;
if(pos>p2) ans1+=abs(p2-pos)*v1;
else if(pos<p2) ans1-=abs(p2-pos)*v1;
ans=min(ans1,ans);
}
else
{
int ans1=abs(pos-p2)*v1;
ans=min(ans1,ans);
}
}
else //反向
{
if(pos<=p1)
{
int ans1=2*abs(pos-s)*v1;
if(pos>p2) ans1+=abs(pos-p2)*v1;
else ans1-=abs(pos-p2)*v1;
ans=min(ans,ans1);
}
else
{
int ans1=2*abs(pos-s)*v1;
ans1+=abs(pos-p2)*v1;
ans=min(ans,ans1);
}
}
}
printf("%d\n",ans);
}
return 0;
} //100 20 83
//186 434
//64 -1
//27342

D.
Green and Black Tea

原来跟榜是有道理的,很多人C题和我想的一样复杂化了然后直接把D题做了。

题意:小明要和a+b杯茶共n杯,有绿茶a杯,黑茶b杯。小明喝同一种茶最多连续喝k杯。问是否存在一种方案使得小明喝完这n杯茶,是则输出任意一种顺序。

思路:没什么技巧,纯模拟。先考虑存在的情况,即max(a,b)-min(a,b)*k<=k。反之不存在。但千万注意min(a,b)*k会爆ll,博主就是这里没考虑到终判跪在第50组了。错失一波涨分的良机啊。

const int INF=0x3f3f3f3f;
const int N=1e6+7;
int a[N],v[N];
char s[N];
int main()
{
int n,k,a,b,x,y;
while(~scanf("%d%d%d%d",&n,&k,&a,&b))
{
if(a==b)
{
while(a--) printf("GB");
printf("\n");
continue;
}
x=max(a,b);
y=min(a,b);
if(x-y*k>k)//y*k会爆int
{
printf("NO\n");
continue;
}
if(x<=k)
{
for(int i=1; i<=a; i++) printf("G");
for(int i=1; i<=b; i++) printf("B");
printf("\n");
}
else
{
if(a>b)//G更多
{
int kk=0;
if(b-a/k<=0)
{
for(int i=1; i<=a; i++)
{
printf("G");
kk++;
if(kk==k&&b)
{
printf("B");
kk=0;
b--;
}
}
printf("\n");
}
else
{
b-=a/k;
for(int i=1; i<=a; i++)
{
printf("G");
kk++;
if(kk==k)
{
printf("B");
kk=0;
continue;
}
if(b)
{
printf("B");
b--;
}
}
printf("\n");
}
}
else //B更多;
{
int kk=0;
if(a-b/k<=0)
{
for(int i=1; i<=b; i++)
{
printf("B");
kk++;
if(kk==k&&a)
{
printf("G");
kk=0;
a--;
}
}
printf("\n");
}
else
{
a-=b/k;
for(int i=1; i<=b; i++)
{
printf("B");
kk++;
if(kk==k)
{
printf("G");
kk=0;
continue;
}
if(a)
{
printf("G");
a--;
}
}
printf("\n");
}
}
}
}
return 0;
}

这场比赛真心不难,时间又恰到好处。大概很多人平时做题都不会往后看,其实后面的题思路理清了并不难。这场B题开始看错题了,以为是求密文,原来是根据密文推出明文。最后0:39的时候做出来了,思维还是有点不够快。C题想了一会感觉很麻烦直接跳过看D题了,发现D题做的人更多,原来也是水题,考虑了一下代码就出来了,有个地方没注意WA了一发后改正初判过了。回来看C题发现就两种情况,写完时间不够了。就靠着这场咸鱼翻身,结果D题终判跪了,,原来有个地方会爆int...我竟无言以对。。真想给自己两巴掌!

Codeforces Round #386 (Div. 2) A+B+C+D!的更多相关文章

  1. Codeforces Round #386 (Div. 2)

    迟到的一次比赛 最近状态很崩溃 网速很慢 然后前面五题看了都有打 但是 只有A B E 是过了的 是时候要反省一下 A.随便判断一下就好 最少的份数嘛 B.画出来之后是一下子左边一下子右边 打一个递归 ...

  2. Codeforces Round #386 (Div. 2) C. Tram

    C. Tram time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  3. Codeforces Round #386 (Div. 2) C D E G

    一场比较简单的题 比较脑洞 C 如果坐车比较快的话 先走不如等车 所以最后的ans是min(纯走路,纯坐车) 讨论一下坐车时间 D 因为k一定是>=1的 所以当a=b的时候 GBGBGB这样间隔 ...

  4. Codeforces Round #386 (Div. 2) 746F(set的运用)

    题目大意 给出一个歌单(有n首歌),每个歌都有愉悦值和时间,你可以选择从第x首歌开始听(也就是选择连续的一段),并且你可以选择w首歌让它的时间减半,限制时间为k,求最大的愉悦值 首先我们需要贪心一下, ...

  5. Codeforces Round #386 (Div. 2) 746G(树的构造)

    大体题意 一棵树有n个结点,告诉你每层深度上有a[i]个结点,以及有多少叶子结点 让你生成这棵树 题解:考虑一颗树,如果满足每层深度上有a[i]结点,最多能有多少叶子结点 那么答案很简单,就是对(a[ ...

  6. Codeforces Round #386 (Div. 2)G. New Roads [构造][树]

    题目链接:G. New Roads 题意:给出n个结点,t层深度,每层有a[i]个结点,总共有k个叶子结点,构造一棵树. 分析: 考虑一颗树,如果满足每层深度上有a[i]结点,最多能有多少叶子结点 那 ...

  7. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. Java 关键字volatile的解释

    volatile 关键字特征: 1.可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的.可以禁止线程的工作内存对volatile修饰的变量进行缓存,并将修改的变量立即写入主存. 2. ...

  2. Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)

    不多说,直接上干货! 特征选择里,常见的有:VectorSlicer(向量选择) RFormula(R模型公式) ChiSqSelector(卡方特征选择). RFormula用于将数据中的字段通过R ...

  3. AJPFX关于表结构的相关语句

    //表结构的相关语句==================================== 建表语句: create table 表名(                                ...

  4. 【转】几种Java序列化方式的实现

    0.前言 本文主要对几种常见Java序列化方式进行实现.包括Java原生以流的方法进行的序列化.Json序列化.FastJson序列化.Protobuff序列化. 1.Java原生序列化 Java原生 ...

  5. 【学习笔记】深入理解js原型和闭包(7)——原型的灵活性

    在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完).压个啥样,就得是个啥样,不能随便动,动一动就坏了. 而在javascript中,就没有 ...

  6. 最新精品 强势来袭 XP,32/64位Win7,32/64位Win8,32/64位Win10系统【国庆版版】

    本系统是10月最新完整版本的Windows10 安装版镜像,Win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为Win10 Edge浏览器中国默认主页和搜索引擎,系 ...

  7. [Python學習筆記] 使用 selenium 抓取網頁並且雙擊滑鼠 (double click)

    一開始使用的時候 看官方文件 以為使用 double_click()即可 但後來出現錯誤 AttributeError: 'WebElement' object has no attribute 'd ...

  8. MongoDB最简单的入门教程之二 使用nodejs访问MongoDB

    在前一篇教程 MongoDB最简单的入门教程之一 环境搭建 里,我们已经完成了MongoDB的环境搭建. 在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的 ...

  9. SQLite概述

    SQLite概述 这个教程帮助您理解SQLite是什么,它如何不同于SQL,为什么它是必要的和它的方式处理应用程序数据库.   SQLite是一个库,实现了一个独立的软件,serverless zer ...

  10. android和IOS长连接区别

    http://blog.csdn.net/zhangzeyuaaa/article/details/39028369 首先我们必须知道,所有的推送功能必须有一个客户端和服务器的长连接,因为推送是由服务 ...