Codeforces Round #835 (Div. 4)A.B.C.D.E.F
创始人
2024-03-08 11:01:07

A. Medium Number

题目链接:

Problem - A - Codeforces 

题面:

题意:

给定三个数,求中间那个数的值

思路:

我们可以分别求出三个数的总和,最大值和最小值,在通过总和减最大值和最小值的方法求出中间的值

代码:

#include
using namespace std;
int arr[5];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int maxn = 0;int minn = 25;int sum = 0;for(int i = 0; i < 3; i++){cin >> arr[i];maxn = max(maxn, arr[i]);minn = min(minn, arr[i]);sum += arr[i];}cout << sum - maxn - minn << endl;}return 0;
}

B. Atilla's Favorite Problem

题目链接:

Problem - B - Codeforces

题面:

题意:

思路:

找到这个字符串里面最大的字符,这个字符的大小就是字母表的大小

代码:

#include
using namespace std;
int arr[5];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int n;cin >> n ;string s;cin >> s;int maxn = 0;for(int i = 0; i< n; i++){maxn = max(maxn, s[i] - 'a' + 1);}cout << maxn << endl;}return 0;
}

C. Advantage

题目链接:

Problem - C - Codeforces

题面:

题意:

给定一个数组,求每个数和除它之外的最大数的差值

思路:

用另一个数组排序这些数字,然后遍历输入数组,如果当前值和最大值不同,就求当前数和最大数的差值,如果相同,就求当前数和第二大数的差值

代码:

#include
using namespace std;
bool cmp(int a, int b){return a > b;
}
int a[200005];
int b[200005];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int n;cin >> n;for(int i = 0; i < n; i++){cin >> a[i];b[i] = a[i];}sort(b, b + n, cmp);for(int i = 0; i < n; i++){if(i != 0){cout << " ";}if(a[i] != b[0]){cout << a[i] - b[0];}else{cout << a[i] - b[1];}}cout << endl;	}return 0;
}

D. Challenging Valleys

题目链接:

Problem - D - Codeforces

题面:

题意:

给定一个数组,如果只有一个子数组满足条件

就输出yes,否则就输出no

思路:

遍历一遍数组,然后判断有几个子数组满足这个条件即可

代码:

#include
using namespace std;
bool cmp(int a, int b){return a > b;
}
int a[200005];
int b[200005];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int n;cin >> n;for(int i = 0; i < n; i++){cin >> a[i];}if(n == 1){cout << "YES" << endl;continue;}int ans = 0;bool flag = 0;for(int i = 0; i < n; i++){if(i == 0){flag = 1;}else if(a[i] < a[i - 1]){flag = 1;}else if(a[i] > a[i - 1]){flag = 0;}if(i + 1 < n && a[i] < a[i + 1] && flag == 1){ans++;flag = 0;}else if(i + 1 < n && a[i] > a[i + 1]){flag = 0;}}if(flag){ans++;}	if(ans == 1){cout << "YES" << endl;}else{cout << "NO" << endl;} }return 0;
}

E. Binary Inversions

题目链接:

Problem - E - Codeforces

题面:

题意:

一个01数组,你只能进行一次操作:把一个0变成1或者把一个1变成0,问最多一次操作后数组值最大多少

数组值的计算方法:满足条件的ij对数:iaj

思路:

对于每个ai为1的i,其后面的0的数量和就是数组值

如果我们把0变成1,那么数组值就会减去前面的1的数量,加上后面的0的数量

把1变成0,减去后面0的数量,加上1的数量

代码:

#include
using namespace std;
#define ll long long
int a[200005];
int b[200005];
int c[200005];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int n;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i];}b[0] = 0;c[n + 1] = 0;for(int i = 1; i <= n; i++){if(a[i]){b[i] = b[i - 1] + 1;}else{b[i] = b[i - 1];				}}ll sum = 0;ll maxn = 0;for(int i = n; i >= 1; i--){if(a[i]){c[i] = c[i + 1];sum += c[i];}else{c[i] = c[i + 1] + 1;}}maxn = sum;for(int i = 1; i <= n; i++){if(a[i]){maxn = max(maxn, sum - c[i] + b[i] - 1);}else{maxn = max(maxn, sum + c[i] - b[i] - 1);}}cout << maxn << endl;}return 0;
}

F. Quests

题目链接:

Problem - F - Codeforces

题面:

题意:

思路:

如果每天都接最多的任务还是不能道c元,那么就是不可能,如果d天接不同的任务都可以到c元那么k就是任意大,如果都不行,就二分查找k的值

代码:

#include
using namespace std;
#define ll long long
ll arr[200005];
bool cmp(ll a, ll b){return a > b;
}
bool check(int mid, ll c, int d, int n){ll sum = arr[0];for(int i = 1; i <= mid && i < n && i < d; i++){sum += arr[i];}ll ans = d / (mid + 1);int cnt = d % (mid + 1);sum *= ans;for(int i = 0; i < cnt && i < n; i++){sum += arr[i];}if(sum >= c){return true;}return false;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while(t--){int n;ll c;int d;cin >> n >> c >> d;for(int i = 0; i < n; i++){cin >> arr[i];}sort(arr, arr + n, cmp);ll sum = 0;for(int i = 0; i < min(n, d); i++){sum += arr[i];}if(sum >= c){cout << "Infinity" << endl;}else{if(arr[0] * d < c){cout << "Impossible" << endl;}else{int l = 0, r = 1e9;while(l <= r){int mid = (l + r) / 2;if(check(mid, c, d, n)){l = mid + 1;}else{r = mid - 1;}}cout << r << endl;}}}return 0;
}

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...