Codeforces Round #280 (Div. 2 A,B,C,D,E)_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:52:59
原创
1167人浏览过

改了时区之后打cf更辛苦了啊。。。昨天没做,今天补了一下啊。

A. Vanya and Cubes

每次加的数规律性很明显就是:(i+1)*i/2。暴力枚举i就可以得到答案。

立即学习前端免费学习笔记(深入)”;

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <map>#include <set>#define eps 1e-8#define M 1000100#define LL long long//#define LL long long#define INF 0x3f3f3f#define PI 3.1415926535898#define mod 1000000007#define rson mid+1, r, rt<<1|1#define lson l, mid, rt<<1#define root 0, ans-1, 1const int maxn = 1001;using  namespace std;int main(){    int n;    while(~scanf("%d",&n))    {        int ans = 1;        int sum = 1;        while(1)        {            ans++;            sum += (ans+1)*ans/2;            if(sum >= n) break;        }        if(sum > n) ans--;        cout<<ans<<endl;    }}
登录后复制

B - Vanya and Lanterns

立即学习前端免费学习笔记(深入)”;

按照顺序排序,之后求出间距最小的来,注意判断起点与终点,因为他们的距离不用/2。

立即学习前端免费学习笔记(深入)”;

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <map>#include <set>#define eps 1e-8#define M 1000100#define LL long long//#define LL long long#define INF 0x3f3f3f#define PI 3.1415926535898#define mod 1000000007#define rson mid+1, r, rt<<1|1#define lson l, mid, rt<<1#define root 0, ans-1, 1const int maxn = 1010;using  namespace std;int num[maxn];int main(){    int n, d;    while(~scanf("%d %d",&n, &d))    {        for(int i = 0; i < n; i++) scanf("%d",&num[i]);        sort(num, num+n);        double Max = 0.0;        for(int i = 0; i < n-1; i++) Max = max(Max, (double)((num[i+1]-num[i])*1.0/2));        Max = max(Max, num[0]*1.0-0);        Max = max(Max, d*1.0-num[n-1]*1.0);        printf("%.12lf\n",Max);    }    return 0;}
登录后复制

C - Vanya and Exams

立即学习前端免费学习笔记(深入)”;

C看懂题目就很简单了啊,就是排序之后的一个贪心。

立即学习前端免费学习笔记(深入)”;

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <map>#include <set>#define eps 1e-8#define M 1000100#define LL long long//#define LL long long#define INF 0x3f3f3f#define PI 3.1415926535898#define mod 1000000007#define rson mid+1, r, rt<<1|1#define lson l, mid, rt<<1#define root 0, ans-1, 1const int maxn = 100010;using  namespace std;struct node{    LL a, b;}f[maxn];bool cmp(node a, node b){    return a.b < b.b;}int main(){    LL n, r, ave;    while(~scanf("%I64d %I64d %I64d",&n, &r, &ave))    {        LL ans = ave*n;        LL sum = 0LL;        for(int i = 0; i < n; i++)        {            scanf("%I64d %I64d",&f[i].a, &f[i].b);            sum += f[i].a;        }        sort(f, f+n, cmp);        LL xans = 0;        for(int i = 0; i < n; i++)        {            LL p = ans-sum;            LL sp = max(r-f[i].a, 0LL);            if(p <= 0) break;            if(p > sp)            {                sum += sp;                xans += f[i].b*sp;            }            else            {                xans += p*f[i].b;                sum += p;                break;            }        }        cout<<xans<<endl;    }}
登录后复制

D - Vanya and Computer Game

立即学习前端免费学习笔记(深入)”;

给你一个x,一个y。让你判断在n次以内x,y谁先完成任务,其实就是判断谁的整数倍先到给的nx,二分枚举,如果是x,y的公倍数输出both,如果是y的倍数输出:Vanya,如果是x的倍数输出:Vova.

立即学习前端免费学习笔记(深入)”;

D. Vanya and Computer Game

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Vanya and his friend Vova play a computer game where they need to destroy n monsters to pass a level. Vanya's character performs attack with frequency x hits per second and Vova's character performs attack with frequency y hits per second. Each character spends fixed time to raise a weapon and then he hits (the time to raise the weapon is 1?/?x seconds for the first character and 1?/?y seconds for the second one). The i-th monster dies after he receives ai hits.

Vanya and Vova wonder who makes the last hit on each monster. If Vanya and Vova make the last hit at the same time, we assume that both of them have made the last hit.

Input

The first line contains three integers n,x,y (1?≤?n?≤?105, 1?≤?x,?y?≤?106) ? the number of monsters, the frequency of Vanya's and Vova's attack, correspondingly.

Next n lines contain integers ai (1?≤?ai?≤?109) ? the number of hits needed do destroy the i-th monster.

Output

Print n lines. In the i-th line print word "Vanya", if the last hit on the i-th monster was performed by Vanya, "Vova", if Vova performed the last hit, or "Both", if both boys performed it at the same time.

Sample test(s)

input

4 3 21234
登录后复制

output

VanyaVovaVanyaBoth
登录后复制

input

2 1 112
登录后复制

output

BothBoth
登录后复制

Note

In the first sample Vanya makes the first hit at time 1?/?3, Vova makes the second hit at time 1?/?2, Vanya makes the third hit at time 2?/?3, and both boys make the fourth and fifth hit simultaneously at the time 1.

In the second sample Vanya and Vova make the first and second hit simultaneously at time 1.

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <time.h>#include <map>#include <set>#define eps 1e-8#define M 1000100#define LL long long//#define LL long long#define INF 0x3f3f3f#define PI 3.1415926535898#define mod 1000const int maxn = 200010;using namespace std;const LL R = 1e15;int main(){    LL n, x, y;    while(~scanf("%I64d %I64d %I64d", &n, &x, &y))    {        LL nx;        for(int i = 0; i < n; i++)        {            scanf("%I64d",&nx);            LL l = 0;            LL r = R;            while(l < r)            {                LL mid = (l+r)>>1;                if(mid/x+mid/y < nx) l = mid+1;                else r = mid;            }            if(l%x == 0 && l%y == 0) cout<<"Both"<<endl;            else if(l%y == 0) cout<<"Vanya"<<endl;            else cout<<"Vova"<<endl;        }    }    return 0;}
登录后复制

E - Vanya and Field

立即学习前端免费学习笔记(深入)”;

这个题目挺好的,其实他是有规律的:

题目的关键条件是这个  

首先想个问题,先是一维的情况下,假设只有一行的格子,长度为x,每次能移动的距离为dx,而且gcd(x,dx)=1,这样手动模拟一下,可以发现规律,从某个点出发直到回到这个点上,步数均为x次,而且每次落下的点都是不重复的,也即这x次的位置覆盖了整条方格上的每一个方格。

那现在二维的情况下,gcd(n,dx) = gcd(n,dy) = 1,也就是从某一行和某一列的交点出发,要重新回到这个交点,就要经过n步而且这n步覆盖了每一行每一列。每个循环必须每个x走一次以及每个y走一次,n个格子属于一组循环里面的,总共有n*n个格子,所以有n组循环。一组循环内的格子是等价的。同一行内的n个格子均来自不同的n组。

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

SEEK.ai 128
查看详情 SEEK.ai

现在考虑一组特殊的循环,这组循环从(0,0)开始出发

走了第一步以后就到 (dx%n, dy%n) 

第二步到 (2*dx%n, 2*dy%n)

第k步到 (k*dx%n, k*dy%n)

用一个对应关系存储,从(0,0)出发的,经过了k步以后,会到达位置(x[k] , y[k])。

 

然后考虑普遍的情况了,每组循环都比如经过(0, y0)这个点

从这个点出发的第一步 (dx%n, (y0+dy)%n) 

第k步到 (dx%n, (y0+dy)%n), 也即(x[k], (y0+y[k])%n)

 

那么现在给你某个坐标(x,y),要怎么算出他属于哪一组循环的呢

根据等式x[k]==x,可以求出对应的k的值

那就能求出对应的y[k]了,然后y0+y[k]==y →  y0=y-y[k]

这样就知道这个(x,y) 是属于 (0,y0)这一组的了

 

那么算法大概是这样:

预处理出x[k],y[k],时间复杂度o(n)

遍历每一个apple的坐标(x,y),求出对应的坐标(0,y0),然后cnt[y0]++,复杂度o(m)

找出值最大的cnt[y],答案就是(0,y)了。 总复杂度o(n+m)


摘自:http://www.cnblogs.com/someblue/p/4136436.html

E. Vanya and Field

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Vanya decided to walk in the field of size n?×?n cells. The field contains m apple trees, the i-th apple tree is at the cell with coordinates(xi,?yi). Vanya moves towards vector (dx,?dy). That means that if Vanya is now at the cell (x,?y), then in a second he will be at cell . The following condition is satisfied for the vector: , where  is the largest integer that divides both a and b. Vanya ends his path when he reaches the square he has already visited.

Vanya wonders, from what square of the field he should start his path to see as many apple trees as possible.

Input

The first line contains integers n,?m,?dx,?dy(1?≤?n?≤?106, 1?≤?m?≤?105, 1?≤?dx,?dy?≤?n) ? the size of the field, the number of apple trees and the vector of Vanya's movement. Next m lines contain integers xi,?yi (0?≤?xi,?yi?≤?n?-?1) ? the coordinates of apples. One cell may contain multiple apple trees.

Output

Print two space-separated numbers ? the coordinates of the cell from which you should start your path. If there are several answers you are allowed to print any of them.

Sample test(s)

input

5 5 2 30 01 21 32 43 1
登录后复制

output

1 3
登录后复制

input

2 3 1 10 00 11 1
登录后复制

output

0 0
登录后复制

Note

In the first sample Vanya's path will look like: (1,?3)?-?(3,?1)?-?(0,?4)?-?(2,?2)?-?(4,?0)?-?(1,?3)

In the second sample: (0,?0)?-?(1,?1)?-?(0,?0)

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <math.h>#include <time.h>#include <stack>#include <map>#include <set>#define eps 1e-8///#define LL long long#define LL __int64#define INF 0x3f3f3f#define PI acos(-1)#define mod 1000000007using namespace std;const int maxn = 10000010;int vis[maxn];int num[maxn];struct node{    int x, y;    int k;}f[maxn];int main(){    int n, m, dx, dy;    while(~scanf("%d %d %d %d",&n, &m, &dx, &dy))    {        f[0].x = 0;        f[0].y = 0;        f[0].k = 0;        vis[0] = 0;        for(int i = 1; i < n; i++)        {            f[i].x = (f[i-1].x+dx)%n;            f[i].y = (f[i-1].y+dy)%n;            f[i].k = i;            vis[f[i].x] = i;        }        memset(num, 0, sizeof(num));        int x, y;        for(int i = 0; i < m; i++)        {            scanf("%d %d",&x, &y);            int k = vis[x];            int ky = f[k].y;            int y0 = (y-ky+n)%n;            num[y0]++;        }        int Max = 0;        int sk;        for(int i = 0; i < n; i++)        {            if(Max < num[i])            {                Max = num[i];                sk = i;            }        }        cout<<0<<" "<<sk<<endl;    }    return 0;}
登录后复制


立即学习前端免费学习笔记(深入)”;

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号