A. Vanya and Cubes

题意:

给你n个小方块,现在要搭一个金字塔,金字塔的第i层需要 个小方块,问这n个方块最多搭几层金字塔。

分析:

根据求和公式,有,按照规律直接加就行,直到超过n。

 #include <cstdio>

 int main()
{
int n;
scanf("%d", &n);
int sum = , cnt = ;
while(n > sum)
{
cnt++;
sum += cnt * (cnt + ) / ;
}
if(sum > n) cnt--;
printf("%d\n", cnt); return ;
}

代码君

B. Vanya and Lanterns

题意:

有一条长为l的路,每个灯的坐标为ai(坐标原点为路的最左端),每个路灯照亮的范围为d,要求整条路都能被照亮,求d的最小值。

分析:

上来写个了二分,果断超时了。

换个思路:

对这n个路灯的位置排序

因为d要照亮整条路,所以要满足:

  • 第一个路灯要照亮路的最左端,d至少为 a0
  • 两个相邻路灯之间要被照亮,d至少为(ai - ai-1) / 2
  • 最后一个路灯要照亮路的最右端,d至少为 l - an-1

要同时满足这些条件,取其中最大值即可。

 #include <cstdio>
#include <algorithm> const int maxn = + ;
double a[maxn], l;
int n; int main()
{
scanf("%d%lf", &n, &l);
for(int i = ; i < n; ++i) scanf("%lf", &a[i]);
std::sort(a, a + n); double ans = a[] - ;
for(int i = ; i < n; ++i)
{
ans = std::max(ans, (a[i]-a[i-])/);
}
ans = std::max(ans, l - a[n-]);
printf("%.10f\n", ans); return ;
}

代码君

C. Vanya and Exams(贪心)

题意:

有n门科目满分为r,每门科目现有分数为ai,每提高该科目一分需要写bi篇文章。为了要使平均分不低于avg,求写文章的最少篇数。

分析:

很明显的贪心,计算出一个还需要提高的分数,在不超过满分的前提下先提高bi小的科目的分数。

 #include <cstdio>
#include <algorithm> const int maxn = + ; typedef __int64 LL; struct Exam
{
LL a, b;
Exam(LL a=, LL b=):a(a), b(b) {}
bool operator < (const Exam& rhs) const
{
return b < rhs.b;
}
}exam[maxn]; int main()
{
LL n, r, avg, sum = ;
scanf("%I64d%I64d%I64d", &n, &r, &avg);
for(int i = ; i < n; ++i)
{
LL a, b;
scanf("%I64d%I64d", &a, &b);
sum += a;
exam[i] = Exam(a, b);
}
std::sort(exam, exam + n); LL ans = , p = ;
LL need = n * avg - sum;
while(need > )
{
if(exam[p].a == r) { p++; continue; }
LL temp = std::min(need, r - exam[p].a);
ans += temp * exam[p].b;
need -= temp;
p++;
}
printf("%I64d\n", ans); return ;
}

代码君

D. Vanya and Computer Game(数论)

题意:

题意没弄清,结果无限WA

有两个人每次对怪物造成1点伤害,怪物的血量为a。

他们两人的每秒攻击次数分别为x、y,而且攻击时间均匀分布在这1秒内

问打败该怪物时,是被谁打败的,还是同时被两个人打败的。

分析:

首先我们化小数为整数,不妨将1秒均匀分成xy份单位时间

则两人分别每隔y、x个单位时间攻击一次,对怪物造成1点伤害

我们得到两人每次攻击时间的序列

y, 2y, 3y,,,,,,

x, 2x, 3x,,,,,,

有序合并两个序列,我们就能知道怪物是被谁打到的。

可以用一个标记数组0、1、2来记录第i次攻击是第一个人、第二个人、两人同时发起的。

不难发现其实标记数组是循环的,所以只要求出其中一个循环节即可。

循环节长度为x/g + y/g,其中g = gcd(x, y),注意在两人同时发出攻击时,怪物是收到2点伤害的。

 #include <cstdio>

 typedef __int64 LL;
const int maxn = + ;
char flag[maxn]; LL gcd(LL a, LL b)
{
LL r = a % b;
while(r)
{
a = b;
b = r;
r = a % b;
}
return b;
} int main(void)
{
//freopen("in.txt", "r", stdin);
LL n, x, y;
scanf("%I64d%I64d%I64d", &n, &x, &y);
LL g = gcd(x, y);
LL p = , q = , cnt = ;
while(p <= y/g || q <= x/g)
{
if(x*p < y*q)
{
p++;
flag[cnt++] = ;
}
else if(x*p > y*q)
{
q++;
flag[cnt++] = ;
}
else
{
p++;
q++;
flag[cnt++] = ;
}
}
flag[] = flag[cnt] = ; for(int i = ; i < n; ++i)
{
LL a;
scanf("%I64d", &a);
a %= cnt;
if(flag[a] == ) puts("Vova");
else if(flag[a] == ) puts("Vanya");
else puts("Both");
} return ;
}

代码君

CodeForces Round #280 (Div.2)的更多相关文章

  1. Codeforces Round #280 (Div. 2) E. Vanya and Field 数学

    E. Vanya and Field Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/492/pr ...

  2. Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 二分

    D. Vanya and Computer Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

  3. Codeforces Round #280 (Div. 2) C. Vanya and Exams 贪心

    C. Vanya and Exams Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/492/pr ...

  4. Codeforces Round #280 (Div. 2) A B C 暴力 水 贪心

    A. Vanya and Cubes time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  5. Codeforces Round #280 (Div. 2)E Vanya and Field(简单题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 本场题目都比较简单,故只写了E题. E. Vanya and Field Vany ...

  6. Codeforces Round #280 (Div. 2)_C. Vanya and Exams

    C. Vanya and Exams time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  7. Codeforces Round #280 (Div. 2) E. Vanya and Field 思维题

    E. Vanya and Field time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  8. Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 预处理

    D. Vanya and Computer Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  9. Codeforces Round #280 (Div. 2) A. Vanya and Cubes 水题

    A. Vanya and Cubes time limit per test 1 second memory limit per test 256 megabytes input standard i ...

随机推荐

  1. 编译dubbo2.5.4时遇到的问题及解决

    dubbo的官方git地址为:https://github.com/alibaba/dubbo 按照其流程进行下载及编译,遇到的问题为: 1. 执行 mvn clean install -Dmaven ...

  2. 我的第一个python爬虫程序

    程序用来爬取糗事百科上的图片的,程序设有超时功能,具有异常处理能力 下面直接上源码: #-*-coding:utf-8-*- ''' Created on 2016年10月20日 @author: a ...

  3. qsort/bsearch的应用

    问题描述: Description You have just moved from Waterloo to a big city. The people here speak an incompre ...

  4. BZOJ 4302 Buildings 解题报告

    这个题好像很有趣的样子. 题目分析: 房间都是 $1\times k$ 的,也就是一条一条的.这个好像比较显然的样子. 一个房间如果要覆盖某个格子$u$,那么这个房间的面积至少为 $dis(u, Bo ...

  5. Redis 安装与配置

    启动 Redis WINDOW 服务: https://github.com/ServiceStack/ServiceStack.Redis install-package ServiceStack. ...

  6. 关于make: *** No rule to make target `clean'. Stop.的解决

    在重新编译makefile工程文件时需要用到 #make clean 命令, 但是最近工程使用make clean的时候总是提示: make: *** No rule to make target ` ...

  7. 【C++基础】 类中static private public protected

    静态成员在一个类的所有实例间共享数据 “类属性”,是描述类的所有对象共同特征的一个数据项,对所有对象,它的值相同,static定义,为整个类所共有.相对于“实例属性” 如果static成员是私有类型, ...

  8. c#操作剪切板

    C#定义了一个类System.Windows.Forms.Clipboard来简化剪切板操作,这个类有一个静态方法,主要有: Clear 清除剪切板中的所有数据: ContainsData,Conta ...

  9. POJ 2568/ZOJ 1965 Decode the Tree

    题意:在树中,每次删去节点值最小的叶子结点. 每删去一个点,就给出与这相连的点的值,直到最后只剩下一个根结点,给这N-1个数,重新建立这个树. 思路: 给出的节点号按次序存入到数组a中,将未给出的数存 ...

  10. 集合、拆箱、装箱、自定义集合的foreach

    集合部分 参考:http://msdn.microsoft.com/zh-cn/library/0ytkdh4s(v=vs.110).aspx 集合类型是诸如哈希表.队列.堆栈.包.字典和列表等数据集 ...