Codeforces Round #289 (Div. 2, ACM ICPC Rules) (A, B, C, E)

2024-06-01 18:48

本文主要是介绍Codeforces Round #289 (Div. 2, ACM ICPC Rules) (A, B, C, E),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A:水题,根据题目预处理一下输出即可

B:先把最大和最小找出来,可以让最小全是1,然后最大比最小多出的部分就放1,2,3,4,5...所以如果MAX - MIN > k就是NO,不然就根据这个构造出答案

C:贪心的策略,每次要让数字尽量小,那么就和上一个数字比较,如果需要的和比上一个小,就先找到一个新数字,使得和小于所需数字,并且该数字是大于上一个数字的最小值,找的方法就是从末尾不断放0进位。那么现在情况就只剩下需要的和比上一个大的了,这个就贪心,从末尾尽量变成9即可

E:一个计数问题,其实只要考虑每个字母所加成的值即可,每个字母而言,长度满足能到最左和最右的就是+1,而中间到不了最大的则为,1/ i + 1 / (i +1) + 1 / ( i +2)....,i在该数字到两边的距离之间的值,比如总长度为7当前位置为2,那么i就是从长度为3到长度6,而这样并没有计算完,因为还有后面超过6的情况,只要在加上从后面往前算的 1 / (n - i + 1) * i 之和即可,所以要预处理两个数组进行计数,具体看代码:

A:

#include <cstdio>
#include <cstring>
using namespace std;int n, a[15][15];int main() {for (int i = 1; i <= 10; i++) a[1][i] = a[i][1] = 1;for (int i = 2; i <= 10; i++)for (int j = 2; j <= 10; j++)a[i][j] = a[i - 1][j] + a[i][j - 1];while (~scanf("%d", &n)){printf("%d\n", a[n][n]);}return 0;
}

B:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;int n, k, a[105];int main() {while (~scanf("%d%d", &n, &k)) {int Min = 105, Max = 0;for (int i = 0; i < n; i++) {scanf("%d", &a[i]);Min = min(Min, a[i]);Max = max(Max, a[i]);}int use = min(k, Min);int one = Min / use;int yu = Min % use;if (Max - Min > k) printf("NO\n");else {printf("YES\n");for (int i = 0; i < n; i++) {printf("1");for (int j = 2; j <= Min; j++)printf(" 1");for (int j = Min + 1; j <= a[i]; j++)printf(" %d", j - Min);printf("\n");}}}return 0;
}

C:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 305;int n, b[N];
int num[10005], nn;void find(int cha) {for (int i = 0; i < nn; i++) {if (cha > 0) {num[i] += 1;for (int j = i; j < nn; j++) {num[j + 1] += num[j] / 10;num[j] %= 10;}if (num[nn]) nn++;return;}cha += num[i];num[i] = 0;}num[nn++] = 1;
}int main() {while (~scanf("%d", &n)) {nn = 1;memset(num, 0, sizeof(num));for (int i = 0; i < n; i++)scanf("%d", &b[i]);for (int i = 0; i < n; i++) {int tmp = 0;for (int i = 0; i < nn; i++)tmp += num[i];int cha = b[i] - tmp;if (cha <= 0) find(cha);tmp = 0;for (int i = 0; i < nn; i++)tmp += num[i];cha = b[i] - tmp;for (int i = 0; i < nn; i++) {if (num[i] + cha <= 9) {num[i] += cha;cha = 0;break;} else {cha = max(cha - 9 + num[i], 0);num[i] = 9;}}if (cha) {while (cha) {num[nn++] = min(cha, 9);cha = max(cha - 9, 0);}}for (int i = nn - 1; i >= 0; i--)printf("%d", num[i]);printf("\n");}}return 0;
}

E:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 500005;char str[N];double cal1[N], cal2[N];
int vis[1005];
double ans;int main() {gets(str + 1);int n = strlen(str + 1);for (int i = 1; i <= n; i++) {cal1[i] = cal1[i - 1] + 1.0 / i;cal2[i] = cal2[i - 1] + 1.0 / (n - i + 1) * i;}ans = 0;memset(vis, 0, sizeof(vis));vis['I'] = vis['E'] = vis['A'] = vis['O'] = vis['U'] = vis['Y'] = 1;for (int i = 1; i <= n; i++) {if (vis[str[i]]) {int c = min(i,  n - i + 1);ans += c * (cal1[n - c + 1] - cal1[c]) + c + cal2[c - 1];}}printf("%.10lf\n", ans);return 0;
}


这篇关于Codeforces Round #289 (Div. 2, ACM ICPC Rules) (A, B, C, E)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021822

相关文章

Codeforces 158B

很久没有刷题了,刚刚有小学弟问了这道题,AC之后贴上来吧。水~~~ #include <cstdio>#include <cmath>int main() {int n;while(scanf("%d", &n) != EOF) {int a = 0, b = 0, c = 0, d = 0;int arr[100001];for (int i = 0; i < n; ++

Codeforces April Fools Day Contest 2014(附官方题解)

Codeforces2014年愚人节的坑题。。。但还是感觉挺好玩的。。。 A. The Great Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two teams mee

Codeforces April Fools Day Contest 2013

2013年愚人节的坑题。。。 A. Mysterious strings time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Input The input contains a sin

【会议征稿,ACM出版】2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024,8月9-11)

2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024)将于2024年8月9-11日在中国福州举行。本届会议由阳光学院、福建省空间信息感知与智能处理重点实验室、空间数据挖掘与应用福建省高校工程研究中心联合主办。 会议主要围绕图像处理、智能控制与计算机工程等研究领域展开,旨在为从事计算机等相关研究的专家学者提供一个交流科研成果和前沿技术的平台,了解学术发展趋势,拓宽研究思路

杭电ACM hdu 2110 Crisis of HDU 解题报告(母函数)

Problem Description 话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固。随着集团的发展,很多创业时期的元老逐步功成身退,先是8600移民海外,然后是linle夫妇退隐山林,逐渐的,最初众多的元老只剩下XHD夫妇和Wiskey三人了。 到了2020年,因为扩张过度加上老鼠数量逐年减少,公司的发展遇到了前所未有的危机,此时集团已经

杭电ACM hdu 2082 找单词 解题报告(母函数)

Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如

杭电ACM hdu 2079 选课时间 解题报告(母函数)

Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)   Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。 接着有k行,每行有两个整数a(1 <= a <= 8),b

力扣SQL50 项目员工 I ROUND AVG

Problem: 1075. 项目员工 I 👨‍🏫 参考题解 Code select project_id,ROUND(AVG(e.experience_years),2) as average_yearsFROMproject as pLEFT JOINemployee as eONp.employee_id = e.employee_idGROUP BYp.proje

[Codeforces 451B] Sort the Array (实现)

Codeforces - 451B 给定一个序列,其中每个数都不相同 问是否能在翻转其中一段后,整个序列变得单调递增 实现题 首先设一个 B B数组为 AA数组排序后的结果 由于只能翻转一个区间,那么我假装 A是满足要求的 找到最小的 A[l]≠B[l] A[l] \ne B[l],最大的 A[r]≠B[r] A[r] \ne B[r], 翻转的区间将会是 [l,r

[Codeforces 451A] Game With Sticks (博弈)

Codeforces - 451A N根横向木棍,M根纵向木棍组成了一个网格图 每次可以选择一个交点,去掉所有通过这个交点的木棍 两个人交替进行这个游戏,问最后谁能胜利 每次选择的一个交点,必然去掉了一根横向木棍和纵向木棍 所以每次 N和 M都减一 当其中有一个为 0的时候,就是先手必败态 所以只和 N、M中较小的那个的奇偶性有关 #pragma comment(link