Codeforces Round #Pi (Div. 2)
来源:互联网 发布:java fx radiobutton 编辑:程序博客网 时间:2024/05/21 09:37
题目地址
A. Lineland Mail
题目大意:升序给出n个数,输出每个数与其他数相差的最小值与最大值
解题思路:每个数的最小数为该数与相邻2个数的最小差值,最大数为该数与第一个数和最后一个数的最大差值,注意第一个数和最后一个数的处理
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <string>#include <queue>#include <vector>using namespace std;const int maxn = 100000+10;int a[maxn];int main(){ int n; scanf("%d",&n); for(int i = 0; i < n; i++) { scanf("%d",&a[i]); } for(int i = 0; i < n-1; i++) { int minn = a[i+1] -a[i]; if(i>0) minn = min(minn,a[i] -a[i-1]); int maxx = a[n-1]-a[i]; maxx = max(maxx,a[i]-a[0]); printf("%d %d\n",minn,maxx); } printf("%d %d\n",a[n-1]-a[n-2],a[n-1]-a[0]); return 0;}
B. Berland National Library
题目大意:给出n个人进出图书馆的情况,若为‘+ x’表示编号为x的人进入图书馆,若为‘- x’表示编号为x的人从图书馆出去,根据给出数据求图书馆可以容纳的最少人数
解题思路:用2个变量cur记录当前图书馆的人数,cnt记录图书馆可容纳的最小人数,模拟进出的情况,若当前有人进入图书馆,cur++,但只有当cur<cnt时,cnt才需要++;若当前有人从图书馆出去,看当时的cur是否为0,cur不为0时考虑出去的那个人是不是从输入数据里面进入的
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <queue>#include <string>#include <map>#include <stack>#include <list>#include <set>using namespace std;const int maxn = 1e6+10;int in[maxn];int main(){ int n; scanf("%d",&n); getchar(); int cnt = 0; int cur = 0; memset(in,0,sizeof(in)); while(n--) { int x; char s[10]; scanf("%s%d",s,&x); if(s[0] == '+') { cur++; if(!in[x]) in[x] = 1; if(cur > cnt) cnt++; } else if(s[0] == '-') { if(cur == 0) { in[x] == 0; cnt++; } else { if(in[x])//原来就在 { in[x] = 0; cur--; } else cnt++; } } } printf("%d\n",cnt); return 0;}
C. Geometric Progression
题目大意:给出n,k及n个数,在n个数中按给出顺序选择3个数,使这3个数构成公比为k的等比数列,注意3个等比数的顺序为输入的顺序,不一定相邻,但要严格下标序号递增,求这3个数有多少种选择
解题思路:用2个mpl记录第i个数左边的情况,mpr记录第i个数左边的情况,枚举每个数是否在左边存在a[i]/k,右边存在a[i]*k,将所有情况累加即为答案
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <queue>#include <string>#include <map>#include <stack>#include <list>#include <set>using namespace std;const int maxn = 2e5+10;long long a[maxn];int main(){ int n,k; scanf("%d%d",&n,&k); map<long long,int> mpl,mpr; for(int i = 1; i <= n; i++) { scanf("%I64d",&a[i]); } for(int i = n; i >= 2; i--) mpr[a[i]]++; mpl[a[1]]++; long long res = 0; for(int i = 2; i <= n; i++) { mpr[a[i]]--; if(a[i]%k==0 && mpl[a[i]/k] && mpr[a[i]*k]) res += (long long)mpl[a[i]/k]*mpr[a[i]*k]; mpl[a[i]]++; } printf("%I64d\n",res); return 0;}
0 0
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2)
- Codeforces Round #Pi (Div. 2) A B
- Codeforces Round #Pi (Div. 2) Problem C
- Codeforces Round #Pi (Div. 2) (ABCD)
- Codeforces Round #Pi (Div. 2) (STL专场)
- Codeforces Round #Pi (Div. 2) ABCD
- Codeforces Round #Pi (Div. 2) E
- codeforces Round #Pi (div.2) 567ABCD
- Codeforces Round #Pi (Div. 2) (ABCD题解)
- Codeforces Round #Pi (Div. 2) C
- Codeforces Round #Pi (Div. 2) C. Geometric Progression dp
- Codeforces Round #Pi (Div. 2) B. Berland National Library
- A. Lineland Mail-水题-Codeforces Round #Pi (Div. 2)
- 第0004道练习题_Python统计文本里单词出现次数
- 黑马程序员———Java编程基础之面向对象
- tail -f 退出不了怎么办
- POJ 1625 Censored! (AC自动机 + 高精度 + DP)
- hadoop-hdfs学习笔记
- Codeforces Round #Pi (Div. 2)
- 调试FSL Android GPS学习select和epoll的用法
- Material Design文档翻译(材料设计)
- Android Api Demos登顶之路(三十三)Alert Dialogs
- windows下C/C++连接MySQL
- 黑马程序员———面向对象之封装及this和static关键字
- OpenCV颜色识别
- scala学习:List的基本操作实战与基于模式匹配的List排序算法实现
- HDU 5386 暴力