Codeforces Round #308 (Div. 2)
A. Vanya and Table
Vanya has a table consisting of 100 rows, each row contains 100 cells. The rows are numbered by integers from 1 to 100 from bottom to top, the columns are numbered from 1 to 100 from left to right.
In this table, Vanya chose n rectangles with sides that go along borders of squares (some rectangles probably occur multiple times). After that for each cell of the table he counted the number of rectangles it belongs to and wrote this number into it. Now he wants to find the sum of values in all cells of the table and as the table is too large, he asks you to help him find the result.
The first line contains integer n (1 ≤ n ≤ 100) — the number of rectangles.
Each of the following n lines contains four integers x1, y1, x2, y2 (1 ≤ x1 ≤ x2 ≤ 100, 1 ≤ y1 ≤ y2 ≤ 100), where x1 and y1 are the number of the column and row of the lower left cell and x2 and y2 are the number of the column and row of the upper right cell of a rectangle.
In a single line print the sum of all values in the cells of the table.
2
1 1 2 3
2 2 3 3
10
2
1 1 3 3
1 1 3 3
18
Note to the first sample test:
Values of the table in the first three rows and columns will be as follows:
121
121
110
So, the sum of values will be equal to 10.
Note to the second sample test:
Values of the table in the first three rows and columns will be as follows:
222
222
222
So, the sum of values will be equal to 18.
题意:给你n个矩形,问你面积之和
转载请注明出处:寻找&星空の孩子
题目链接: http://codeforces.com/contest/552/problem/A
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include<string>
#include<map>
using namespace std;
const int MAXN = ;
int a[][]; int main()
{
int i,j,k,n,m,x1,x2,y1,y2,ans = ;
int maxx = ,maxy=,minx=,miny=;
scanf("%d",&n);
memset(a,,sizeof(a));
while(n--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
/* maxx = max(maxx,max(x1,x2));
maxy = max(maxy,max(y1,y2));
minx = max(minx,max(x1,x2));
miny = max(miny,max(y1,y2));*/
for(i = x1;i<=x2;i++)
{
for(j = y1;j<=y2;j++)
ans++;
}
}
printf("%d\n",ans);
// int ans = 0; return ;
}
B. Vanya and Books
Vanya got an important task — he should enumerate books in the library and label each book with its number. Each of the n books should be assigned with a number from 1 to n. Naturally, distinct books should be assigned distinct numbers.
Vanya wants to know how many digits he will have to write down as he labels the books.
The first line contains integer n (1 ≤ n ≤ 109) — the number of books in the library.
Print the number of digits needed to number all the books.
13
17
4
4
Note to the first test. The books get numbers 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, which totals to 17 digits.
Note to the second sample. The books get numbers 1, 2, 3, 4, which totals to 4 digits.
题意 :给你一个整数n,问你从1到n一共有多少位。比如n = 13,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13一共17位。
f[i]表示从1到10i一共有多少位,以753为例,从100到753都是3位数,所以答案就是f[2]+653*3。
转载请注明出处:寻找&星空の孩子
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include<string>
#include<map>
#define LL __int64
using namespace std;
const int MAXN = ;
LL n;
LL ans = ;
LL a[]= {,,,,,,,,,,}; int main()
{
while(~scanf("%I64d",&n))
{
ans = ;
LL i,j,k = ;
if(n<)
{
printf("%I64d\n",n);
return ;
}
for(i = ; i<=; i++)
{
k *= ;
if(n<k)
{
ans+=(n-k/+)*i;
// printf("%I64d %I64d %I64d\n",i,ans,(n-k/10+1)*i);
break;
}
/* else if(n==k)
{
ans+=(i+1);
break;
}*/
else
{
ans+=(a[i]-a[i-])*i;
}
// printf("%d %I64d\n",i,ans);
}
printf("%I64d\n",ans);
} return ;
}
C. Vanya and Scales
Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w100 grams where w is some integer not less than 2(exactly one weight of each nominal value). Vanya wonders whether he can weight an item with mass m using the given weights, if the weights can be put on both pans of the scales. Formally speaking, your task is to determine whether it is possible to place an item of mass m and some weights on the left pan of the scales, and some weights on the right pan of the scales so that the pans of the scales were in balance.
The first line contains two integers w, m (2 ≤ w ≤ 109, 1 ≤ m ≤ 109) — the number defining the masses of the weights and the mass of the item.
Print word 'YES' if the item can be weighted and 'NO' if it cannot.
3 7
YES
100 99
YES
100 50
NO
Note to the first sample test. One pan can have an item of mass 7 and a weight of mass 3, and the second pan can have two weights of masses 9 and 1, correspondingly. Then 7 + 3 = 9 + 1.
Note to the second sample test. One pan of the scales can have an item of mass 99 and the weight of mass 1, and the second pan can have the weight of mass 100.
Note to the third sample test. It is impossible to measure the weight of the item in the manner described in the input.
要用质量为w0,w1,...,w100的砝码各1个称出重量m,砝码可以放在天平左边也可以放在右边。问是否可以称出,输出YES或NO。
如样例3,7:左边放3和物品,右边放1和9即可。
假设可以称出,则用w进制表示m,每一位上一定是0,1或w - 1,否则一定不行。
而如果某一位是w - 1则说明当前砝码跟物品放在一起,相当于给物品加上了这个砝码的重量。
我们只需要模拟这个过程,提取m的每一位然后计算即可。
转载请注明出处:寻找&星空の孩子
题目链接:http://codeforces.com/contest/552/problem/C
#include<string.h>
#include<stdio.h>
#define LL __int64
LL w,m;
int main()
{
scanf("%I64d%I64d",&w,&m);
if(w<=)
{
printf("YES\n");
return ;
}
while(m)
{
if(!((m-)%w)) m--;
else if(!((m+)%w)) m++;
else if(m%w) {printf("NO\n");return ;}
m=m/w;
}
printf("YES\n");
return ;
}
D. Vanya and Triangles
Vanya got bored and he painted n distinct points on the plane. After that he connected all the points pairwise and saw that as a result many triangles were formed with vertices in the painted points. He asks you to count the number of the formed triangles with the non-zero area.
The first line contains integer n (1 ≤ n ≤ 2000) — the number of the points painted on the plane.
Next n lines contain two integers each xi, yi ( - 100 ≤ xi, yi ≤ 100) — the coordinates of the i-th point. It is guaranteed that no two given points coincide.
In the first line print an integer — the number of triangles with the non-zero area among the painted points.
4
0 0
1 1
2 0
2 2
3
3
0 0
1 1
2 0
1
1
1 1
0
Note to the first sample test. There are 3 triangles formed: (0, 0) - (1, 1) - (2, 0); (0, 0) - (2, 2) - (2, 0); (1, 1) - (2, 2) - (2, 0).
Note to the second sample test. There is 1 triangle formed: (0, 0) - (1, 1) - (2, 0).
Note to the third sample test. A single point doesn't form a single triangle.
给你二维坐标下的n个点,问一共能构成多少个面积不为0的三角形。
转载请注明出处:寻找&星空の孩子
#include<cstdio>
#include<cmath>
#include<iostream>
#define PI acos(-1.0)
using namespace std; struct Point
{
double x,y;
Point(double x=,double y=):x(x),y(y){} }; typedef Point Vector; Vector operator + (Vector A,Vector B){return Vector(A.x+B.x,A.y+B.y);} Vector operator - (Point A,Point B){return Vector(A.x-B.x,A.y-B.y);} Vector operator * (Vector A,double p){return Vector(A.x*p,A.y*p);} Vector operator / (Vector A,double p){return Vector(A.x/p,A.y/p);} bool operator < (const Point& a,const Point& b){return a.x<b.x||(a.x==b.x && a.y<b.y);} const double eps = 1e-; int dcmp(double x){if(fabs(x)<eps)return ;else return x < ? - : ;} bool operator == (const Point& a,const Point& b){return dcmp(a.x-b.x)== && dcmp(a.y-b.y)==;} double Dot(Vector A,Vector B){return A.x*B.x+A.y*B.y;}
double length(Vector A){return sqrt(Dot(A,A));}
double Angle(Vector A,Vector B){return acos(Dot(A,B)/length(A)/length(B));} double Cross(Vector A,Vector B){return A.x*B.y-B.x*A.y;}
double Area2(Point A,Point B,Point C){return Cross(B-A,C-A);} inline Point read_point(Point &P)
{
scanf("%lf%lf",&P.x,&P.y);
return P;
}
int main()
{
int n;
Point po[];
scanf("%d",&n);
for(int i=;i<n;i++)
read_point(po[i]);
if(n<){printf("0\n");return ;}
int cnt=;
for(int i=;i<n;i++)
{
for(int j=i+;j<n;j++)
{
for(int k=j+;k<n;k++)
{
if(Area2(po[i],po[j],po[k])!=) cnt++;
}
}
}
printf("%d\n",cnt);
return ;
}
E. Vanya and Brackets
Vanya is doing his maths homework. He has an expression of form
, where x1, x2, ..., xn are digits from 1 to 9, and sign
represents either a plus '+' or the multiplication sign '*'. Vanya needs to add one pair of brackets in this expression so that to maximize the value of the resulting expression.
The first line contains expression s (1 ≤ |s| ≤ 5001, |s| is odd), its odd positions only contain digits from 1 to 9, and even positions only contain signs + and * .
The number of signs * doesn't exceed 15.
In the first line print the maximum possible value of an expression.
3+5*7+8*4
303
2+3*5
25
3*4*5
60
Note to the first sample test. 3 + 5 * (7 + 8) * 4 = 303.
Note to the second sample test. (2 + 3) * 5 = 25.
Note to the third sample test. (3 * 4) * 5 = 60 (also many other variants are valid, for instance, (3) * 4 * 5 = 60).
给你一个表达式,只有乘号和加号,数字都是1到9,要求加一个括号,使得表达式的值最大,问最大是多少。乘号个数<=15。
左括号一定在乘号右边,右括号一定在乘号左边,因为如果不是这样的话,一定可以调整括号的位置使表达式的值增大。这个应该不难想。
于是只要枚举括号的位置然后计算表达式即可。
转载请注明出处:寻找&星空の孩子
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
const int N = ;
#define LL __int64 char fh[N],s[N];
LL num[N];
int ftop,ntop ,slen;
void calculate(){
if(fh[ftop]=='+')
num[ntop-]+=num[ntop],ntop--;
else if(fh[ftop]=='-')
num[ntop-]-=num[ntop],ntop--;
else if(fh[ftop]=='*')
num[ntop-]*=num[ntop],ntop--;
else if(fh[ftop]=='/')
num[ntop-]/=num[ntop],ntop--;
ftop--;
}
void countfuction(int l,int r){
ftop=;ntop=;
int flagNum=;
LL ans=;
for(int i=; i<=slen; ++i){ if(i!=slen&&(s[i]>=''&&s[i]<='')){
ans=ans*+s[i]-'';
flagNum=;
}
else{
if(flagNum)num[++ntop]=ans; flagNum=; ans=;
if(i==slen)break;
if(s[i]=='+'||s[i]=='-'){
while(ftop&&fh[ftop]!='(') calculate();
fh[++ftop]=s[i];
}
else if(s[i]=='*'&&i==r){
while(ftop&&fh[ftop]!='(') calculate(); ftop--;
while(ftop&&(fh[ftop]=='*'||fh[ftop]=='/')) calculate();
fh[++ftop]=s[i];//printf("# ");
}
else if(s[i]=='*'||i==l){
while(ftop&&(fh[ftop]=='*'||fh[ftop]=='/')) calculate();
fh[++ftop]=s[i];
if(i==l)
fh[++ftop]='(';
}
}
}
while(ftop) calculate(); }
int main(){ while(scanf("%s",s)>){
LL ans=;
int id[],k=;
for(int i=strlen(s); i>=; i--)
s[i+]=s[i];
s[]=''; s[]='*';
slen=strlen(s);
s[slen]='*'; s[slen+]=''; s[slen+]='\0';
slen=strlen(s);
for(int i=; i<slen; i++)
if(s[i]=='*')
id[k++]=i; for(int i=; i<k-; i++)
for(int j=i+; j<k; j++){
countfuction(id[i],id[j]);
if(num[]>ans)
ans=num[];
}
printf("%I64d\n",ans);
}
}
Codeforces Round #308 (Div. 2)的更多相关文章
- 水题 Codeforces Round #308 (Div. 2) A. Vanya and Table
题目传送门 /* 水题:读懂题目就能做 */ #include <cstdio> #include <iostream> #include <algorithm> ...
- 数学 Codeforces Round #308 (Div. 2) B. Vanya and Books
题目传送门 /* 水题:求总数字个数,开long long竟然莫名其妙WA了几次,也没改啥又对了:) */ #include <cstdio> #include <iostream& ...
- 暴力/进制转换 Codeforces Round #308 (Div. 2) C. Vanya and Scales
题目传送门 /* 题意:问是否能用质量为w^0,w^1,...,w^100的砝码各1个称出重量m,砝码放左边或在右边 暴力/进制转换:假设可以称出,用w进制表示,每一位是0,1,w-1.w-1表示砝码 ...
- Codeforces Round #308 (Div. 2) D. Vanya and Triangles 水题
D. Vanya and Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55 ...
- Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs
C. Vanya and Scales Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/p ...
- Codeforces Round #308 (Div. 2)B. Vanya and Books 数学
B. Vanya and Books Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/pr ...
- Codeforces Round #308 (Div. 2) A. Vanya and Table 暴力
A. Vanya and Table Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/pr ...
- Codeforces Round #308 (Div. 2)----C. Vanya and Scales
C. Vanya and Scales time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #308 (Div. 2) A B C 水 数学
A. Vanya and Table time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
随机推荐
- redis & memcache 性能比较
redis和memcache非常像的,都是key,value的方式,将数据存放内存中.最近在学习redis,在网上看了一些这方面的资料,有三种观点: redis读写内存比memcache快 memca ...
- CSS常见布局问题整理
实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 ...
- 干货---stm32f103之DMA双缓冲__也算我为网络贡献的微薄之力
思考再三:终究是要拿出一些干货--单片机基础核心代码,串口的高效率使用请这里开始.--举一反三,我只列出串口一的双dma缓冲应用范例,剩下的自己扩展.并给与了我迄今觉得最好的串口配置架构-感谢野火的高 ...
- java,让debug出色
虽然我们不喜欢bug,但是bug永远都存在.虽然我们牛逼,但是仍然有不知道的东西,解决不了的问题.so,还得借助工具,让咱效率提起来扛扛的.解决的问题如是:由于某种原因,其他系统发送的mq,我这边说没 ...
- 【vim】模式与模式切换
很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...
- 微信小程序内嵌网页的一些(最佳)实践
前言 3 个月前,微信小程序推出了 web-view 组件引发了一波小高潮,笔者所在的大前端团队写过一篇浅析,详情可见:浅谈微信小程序前端生态. 我们曾大胆猜想,这一功能,可能直接导致小程序数量增长迎 ...
- spark面试总结4
Spark on Yarn面试篇04 1.MRV1有哪些不足? 1)可扩展性(对于变化的应付能力) a) JobTracker内存中保存用户作业的信息 b) JobTracker使用的是粗粒度的锁 2 ...
- iReport 5.6.0 组件面板为空 get小技巧
问题描述 本人使用的是iReport 5.6.0版本,正常安装,打开后,创建了一个报表实例,但是,菜单栏--> 工具--> 组件面板 为空.效果如下: 这就尴尬了,没有组件面板,还怎么绘制 ...
- mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...
- [Maven]package com.sun.image.codec.jpeg does not exist
----------------------------------------------------------------- 原创博文,如需转载请通知作者并注明出处! 博主:疲惫的豆豆 链接:h ...