题目地址

本次CF是在今天早上深夜进行,上午有课就没有直接参加。今天早上上课坐到后排参加了virtual participation。这次CF前面的题目都非常的水,不到10分钟就轻松过了前两题,比较郁闷的是之后一直卡在C,开始是脑残的没有用二分TLE,后来又是因为一个常数打错而一直WA……于是模拟赛就只过了2道题(太弱了orz)。时间到了后很快发现了脑残错误,终于A了C题。下午上完课回到宿舍看D题才发现D题水的不行,很快就A了。不过E和F就比较超出我现在知识范围了,暂时就先放下。第一次参加virtual participation,感觉这个模式真的是很赞,以后有时间一定要多多的参加训练自己。道阻且长,加油吧!

A题

这……就数一下A和D的个数,判断一下输出就可以了。没什么可说的。

 #include <iostream>
#include <cstdio>
using namespace std;
char a[];
int n,m=,k=,i;
int main()
{
scanf("%d",&n);
scanf("%s",a);
for(i=;i<n;i++)
{
if(a[i]=='A')
m++;
else
k++;
}
if(m==k)
printf("Friendship\n");
else if(m>k)
printf("Anton\n");
else
printf("Danik\n");
return ;
}

B题

先尽可能组256,2、5、6个数的最小值即为可组成的256个数。2减去256个数后再取2、3个数最小值即为32个数最大值。这样相加即得到了最多的个数。

 #include <iostream>
#include <cstdio>
using namespace std;
unsigned long long int a2,a3,a5,a6,he,de;
unsigned long long min3(unsigned long long int x,unsigned long long int y,unsigned long long int z)
{
if(x<y)
return min(x,z);
else
return min(y,z);
}
int main()
{
cin>>a2>>a3>>a5>>a6;
de=min3(a2,a5,a6);
a2-=de;a5-=de;
a6-=de;
he+=de*;
he+=min(a2,a3)*;
cout<<he;
}

C题

(TLE、WA了很久,捂脸つ﹏⊂……)对于第一种魔法就是for循环,逐个判断,其中循环的内部二分查找此时第二种魔法可行中最好的一个。找到对于每一个第一种魔法的第二种魔法最优选法。注意还要看只选第二种魔法的情况。全都比较一下就找到了耗时最短的办法。

 #include <iostream>
#include <cstdio>
using namespace std;
unsigned long long int n,m,k,a[],b[],c[],d[],x,s,i,j,l,r,mid,an;
int main()
{
cin>>n>>m>>k;
cin>>x>>s;
for(i=;i<=m;i++)
cin>>a[i];
for(i=;i<=m;i++)
cin>>b[i];
for(i=;i<=k;i++)
cin>>c[i];
for(i=;i<=k;i++)
cin>>d[i];
b[]=c[]=d[]=;
a[]=x;
an=x*n;
for(i=;i<=m;i++)
{
if(a[i]>x||b[i]>s)
continue;
l=;r=k;
j=;
while(l<=r)
{
mid=(l+r)>>;
if(d[mid]+b[i]>s)
r=mid-;
else
{
l=mid+;
j=max(mid,j);
}
}
an=min(an,(n-c[j])*a[i]);
}
cout<<an;
return ;
}

D题

用a数组记录8个方向是否可行,b数组记录此时各个方向离目标点最近的点的距离。全都进行过判断后,再遍历一遍a数组看是否有方向满足即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
long long int a[],b[],si,sj,ti,tj,n,st,kind,di;
int dir[][]={{,,,,,,,},{,,,,,,,},{,,,,,,,}},i;
char c[];
int val(long int x,long long int y)
{
long long int d1,d2;
d1=x-si;
d2=y-sj;
if(d2==&&d1<)
return ;
else if(d1+d2==&&d2>)
return ;
else if(d1==&&d2>)
return ;
else if(d1>&&d1==d2)
return ;
else if(d1>&&d2==)
return ;
else if(d1>&&d1+d2==)
return ;
else if(d1==&&d2<)
return ;
else if(d1<&&d2==d1)
return ;
else return -;
}
int main()
{
memset(b,-,sizeof(b));
memset(a,,sizeof(a));
scanf("%I64d",&n);
scanf("%I64d%I64d",&si,&sj);
while(n--)
{
scanf("%s%I64d%I64d",c,&ti,&tj);
if(c[]=='Q')
kind=;
else if(c[]=='B')
kind=;
else kind=;
st=val(ti,tj);
if(st>-)
{
di=max(abs(ti-si),abs(tj-sj));
if(!dir[kind][st])
{
if(di<b[st]||b[st]<)
{b[st]=di;
a[st]=;
}
continue;
}
else{
if(di<b[st]||b[st]==-)
{
a[st]=;
b[st]=di;
}
}
}
else
{
continue;
}
}
for(i=;i<;i++)
{
if(a[i]==)
break;
}
if(i<)
printf("YES\n");
else printf("NO\n");
}

Codeforces Round #379 (Div. 2) 解题报告的更多相关文章

  1. Codeforces Round #324 (Div. 2)解题报告

    ---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...

  2. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  3. Codeforces Round #380 (Div. 2) 解题报告

    第一次全程参加的CF比赛(虽然过了D题之后就开始干别的去了),人生第一次codeforces上分--(或许之前的比赛如果都参加全程也不会那么惨吧),终于回到了specialist的行列,感动~.虽然最 ...

  4. Codeforces Round #216 (Div. 2)解题报告

    又范低级错误! 只做了两题!一道还被HACK了,囧! A:看了很久!应该是到语文题: 代码:#include<iostream> #include<];    ,m2=;    ;i ...

  5. Codeforces Round #281 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/493 A题 写完后就交了,然后WA了,又读了一遍题,没找出错误后就开始搞B题了,后来回头重做的时候才发现,球员被红牌罚下场后还可 ...

  6. Codeforces Round #277 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/486 A题.Calculating Function 奇偶性判断,简单推导公式. #include<cstdio> ...

  7. Codeforces Round #276 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/485 A题.Factory 模拟.判断是否出现循环,如果出现,肯定不可能. 代码: #include<cstdio> ...

  8. Codeforces Round #350 (Div. 2)解题报告

    codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...

  9. Codeforces Round #479 (Div. 3)解题报告

    题目链接: http://codeforces.com/contest/977 A. Wrong Subtraction 题意 给定一个数x,求n次操作输出.操作规则:10的倍数则除10,否则减1 直 ...

随机推荐

  1. 13. 星际争霸之php设计模式--正面模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  2. JQ 操作 radio、checkbox 、select

    MXS&Vincene  ─╄OvЁ  &0000026─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  3. android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据

    为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码!(ps:还是先剧透下吧,第三方大部分浏览器无法成功.) 点击浏览器中的URL链接,启动特定的App. 首先做 ...

  4. wex5 教程 之 图文讲解 bind-css和bind-sytle的异同

    wex5作为网页开发利器,在前台UI数据交互设计中大量使用了绑定技术,即官方视频教学中也提到了KO,实质是数据绑定与追踪.在前台组件的属性中,为我们提供了两个重要的样式绑定属性,bind-css和bi ...

  5. Linux之grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  6. UIButton设置圆角和边框及边框颜色

    1. 按钮边框颜色 //设置边框颜色 [btn.layer setMasksToBounds:YES]; [btn.layer setCornerRadius:10.0]; //设置矩形四个圆角半径 ...

  7. Tomcat 发布war包提示war包超出大小修改

    error信息: java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$Size ...

  8. 微信JS SDK PHP Demo

    一.JSSDK类定义 <?php class JSSDK { private $appId; private $appSecret; public function __construct($a ...

  9. python学习之while语句

    while循环 1.简单的while循环while True: ")#这是一个简单的while循环,当等于True时会一直打印1 2.while执行多少次后退出 coun=0while Tr ...

  10. Java线程锁一个简单Lock

    /** * @author * * Lock 是java.util.concurrent.locks下提供的java线程锁,作用跟synchronized类似, * 单是比它更加面向对象,两个线程执行 ...