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. 原生JS实现苹果菜单

    今天分享下用原生JS实现苹果菜单效果,这个效果的重点有以下几点 图标中心点到鼠标的距离的算法 利用比例计算图标的宽度 代码地址:https://github.com/peng666/blogs/blo ...

  2. 管道Pipe

    管道Pipe java.nio.channels包中含有一个名为Pipe(管道)的类.广义上讲,管道就是一个用来在两个实体之间单向传输数据的导管.管道的概念对于Unix(和类Unix)操作系统的用户来 ...

  3. StringBuffer用法

    public class StringBufferTest { public static void main(String[] args) { StringBuffer sb=new StringB ...

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

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

  5. String类的使用 Part2

    StringBuilder 类的使用 属性: namespace StringBuilderTest { class Program { static void Main(string[] args) ...

  6. 使用Css截取字符串

    white-space:nowrap; /* 禁止自动换行 */ overflow:hidden; /* 隐藏溢出的内容 */ text-overflow:ellipsis; /* 溢出文本使用... ...

  7. cojs 疯狂的求和问题 解题报告

    QAQ 好久不在cojs上出题了 最近学了点新科技,于是就做成题来分享了 这道题是要求simga(i^k) 那么就先说说部分分的算法吧: 10分: 直接暴力就可以了,时间复杂度O(nlogk) 30分 ...

  8. lintcode :搜索二维矩阵

    题目: 搜索二维矩阵 写出一个高效的算法来搜索 m × n矩阵中的值. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每行的第一个数大于上一行的最后一个整数. 样例 考虑下列矩阵: [ [1 ...

  9. lintcode:Remove Element 删除元素

    题目: 删除元素 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 元素的顺序可以改变,并且对新的数组不会有影响.  样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4 ...

  10. hdu 4474 Yet Another Multiple Problem

    题意: 找到一个n的倍数,这个数不能含有m个后续数字中的任何一个 题解: #include<stdio.h> #include<string.h> #include<qu ...