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. c++ 原子操作

    转载自: http://blog.csdn.net/yockie/article/details/8838686 所谓的原子操作,取的就是“原子是最小的.不可分割的最小个体”的意义,它表示在多个线程访 ...

  2. python 函数默认值的小坑啊

    import datetime import time def test(day=datetime.datetime.now()): print day while True: test() time ...

  3. BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...

  4. 【HDOJ】【1512】Monkey King

    数据结构/可并堆 啊……换换脑子就看了看数据结构……看了一下左偏树和斜堆,鉴于左偏树不像斜堆可能退化就写了个左偏树. 左偏树介绍:http://www.cnblogs.com/crazyac/arti ...

  5. vs2010中臃肿的ipch和sdf文件

    使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...

  6. win8 任务栏不合并隐藏标题

    让win8任务栏不合并,并且隐藏标题的办法: 效果如下: 首先让win8不合并任务栏 1.任务栏上点鼠标右键 -- "属性" 2."任务栏按钮"选择" ...

  7. Understanding and Using Servlet Filters

    Overview of How Filters Work This section provides an overview of the following topics: How the Serv ...

  8. 一些linux的问题

    本文罗列的是我在学习linux与shell编程时所遇到的一些问题.我相信既然存在问题那么就会有需求,记录于此,希望可以快速帮助到大家. 1.在vim中用“/word"查找后,vim会以棕色背 ...

  9. 2013 ACM-ICPC长沙赛区全国邀请赛——Bottles Arrangement

    这题当时竟然没看啊…… 找规律:求和m+m+m-1+m-1+……前n项 ;}

  10. hdu 1333 Smith Numbers

    刚开始没看清题意,要找的数一定要是素数 ;}