当前位置:网站首页>Codeforces Global Round 19(A~D)
Codeforces Global Round 19(A~D)
2022-07-06 07:39:00 【Woodenman Du】
The ten thousand year supplementary question is strange ~
A. https://codeforces.com/contest/1637/problem/A
The question :
Given a length of n Array of numbers , from 1 To n-1 Choose any number as len
Then check before len Is the sequence of elements and the subsequent sequence of elements in ascending order , If not, sort them separately
Now ask if you can sort the given array
analysis : In fact, it is to check whether the array is in ascending order
AC Code:
#include <iostream>
using namespace std;
int t,n;
int main()
{
cin >>t;
while(t--)
{
cin >>n;
int temp = -1,x,ans = 1;
for(int i = 1; i <= n; i++){
cin >>x;
if(temp > x) ans = 0;
temp = x;
}
if(ans) cout <<"NO" <<endl;
else cout <<"YES" <<endl;
}
return 0;
}B. https://codeforces.com/contest/1637
The question :
Given length is n Array of
Definition : Each subsequence is divided into k paragraph , Then the value of this subsequence is k+MEX( Subsequence elements ).
Find the maximum value of the sum of the values of all subsequences
analysis :
Last time cf Of MEX The problem made me choke , It took me a long time to understand this question , Can't understand English ...
First :
To be the most valuable , It is best to divide each element into a segment
So if an element is 0, The value of contribution is 1 +MEX0 = 2;
If it's other elements , The value of contribution is 1 + 0 = 1
Then think about the code :
My last step requires the sum of the values of all subsequences , That's many times 1 and 2 Add up , To avoid double counting , You can directly input a[i] Change to the value it can contribute .
As for the final optimization :
Since it is all subsequences , Then the number of occurrences of each element has a fixed relationship with its position , According to the conclusion, it is not impossible to sum directly when inputting , That is to say sum += Contribution value * Number of occurrences , This will eliminate n^3 Subsequence traversal
The code will not write ~
C. https://codeforces.com/contest/1637/problem/C
The question :
Given a length of n Array of , To operate : selected i<j<k, a[j]>=2, a[j] reduce 2,a[i] and a[k] Add one
ask : At least how many times such operations can turn all array elements except the beginning and end into 0, If it cannot be achieved, output -1
analysis :
First think about the simplest
There is an even number in the middle , Then I can i,k Point to a[1] and a[n], And then pass by a[j]/2 This operation will a[j] Turn into 0
If it's an odd number , Then I'll use it as i perhaps k, Make it even first .
in other words , Remove the leading and trailing elements , The number of times each element contributes is : Odd number ,(a[i]+1)/2; even numbers a[i]/2;
After derivation, we can get res = (sum + cnt) /2; sum For elements other than the first and last elements and ,cnt It is an odd number
A special case
All the numbers in the middle are 1, Unable to operate , Output -1
Only 3 Elements , The element in the middle is an odd number , No matter how you operate odd numbers or odd numbers , Output -1
AC Code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,n,cnt,sum;
int a[100010];
int main(){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >>t;
while(t--){
sum = cnt = 0;
cin >>n;
bool ans = true;
for(int i=1;i<=n;++i) cin >>a[i];
//3 Number and the middle number is odd
if( n==3 && (a[2]&1) ){
cout <<-1 <<endl; continue;
}
for(int i=2;i<n;++i){
sum += a[i];
if(a[i]&1) cnt++;
if(a[i]>1) ans = false;
}
// The middle numbers are all 1
if(ans) { cout <<-1 <<endl; continue; }
cout <<(sum + cnt)/2 <<endl;
}
return 0;
}D. https://codeforces.com/contest/1637/problem/D
The question :
Two lengths are given n Array of , You can perform any number of exchanges ai and bi The operation of , Finally, we should minimize the result of the formula given by the topic , Output minimum result
analysis :
Observe the given formula :

In other words, the problem becomes : After exchanging elements , Minimize the sum of the squares of the respective elements of the two arrays
So you need to list all the elements and possible values , Then find the minimum , Equivalent to a knapsack problem , I write recursion and it explodes directly
Stone or not ?
Problems like this can't be written normally at my level , Membrane guy ~
AC Code:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,n,res,res1,sum;
//sum Record the overall elements and
//res Record the final result ,res1 Record (n-2)... Value
int a[101],b[101];
int main(void)
{
std::ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >>t;
while(t--)
{
res = 1e9,sum = 0,res1 = 0;
//cin
cin >>n;
for(int i = 1; i <= n; i++){
cin >>a[i];
res1 += a[i]*a[i]*(n-2);
sum += a[i];
}
for(int i = 1; i <= n; i++){
cin >>b[i];
res1 += b[i]*b[i]*(n-2);
sum += b[i];
}
bool dp[n+1][sum+1];
memset(dp,false,sizeof(dp));
dp[0][0] = true;
// Enumerate all possible elements and
for(int i = 1; i <= n; i++){
for(int j = 1; j <= sum; j++){
if(j >= a[i] & dp[i-1][ j-a[i] ]) dp[i][j] = true;
if(j >= b[i] & dp[i-1][ j-b[i] ]) dp[i][j] = true;
}
}
// Find the formula 2 minimum value
for(int i = 1; i <= sum; i++){
if(dp[n][i]) res = min(res, i*i + (sum-i)*(sum-i));
}
cout <<res + res1 <<endl;
}
return 0;
}边栏推荐
- In the era of digital economy, how to ensure security?
- leecode-C語言實現-15. 三數之和------思路待改進版
- Excel的相关操作
- Simple and understandable high-precision addition in C language
- Leecode-c language implementation -15 Sum of three ----- ideas to be improved
- [dictionary tree] [trie] p3879 [tjoi2010] reading comprehension
- DataX self check error /datax/plugin/reader/_ drdsreader/plugin. Json] does not exist
- Relevant introduction of clip image
- 位运算异或
- Le chemin du navigateur Edge obtient
猜你喜欢

Leecode-c language implementation -15 Sum of three ----- ideas to be improved

Significance and measures of encryption protection for intelligent terminal equipment

Risk planning and identification of Oracle project management system

Mise en œuvre du langage leecode - C - 15. Somme des trois chiffres - - - - - idées à améliorer

Google可能在春节后回归中国市场。

Sharing of source code anti disclosure scheme under burning scenario

Qualitative risk analysis of Oracle project management system

How to delete all the words before or after a symbol in word

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

链表面试题(图文详解)
随机推荐
Luogu p4127 [ahoi2009] similar distribution problem solution
Typescript interface and the use of generics
[CF Gym101196-I] Waif Until Dark 网络最大流
Sharing of source code anti disclosure scheme under burning scenario
word中把帶有某個符號的行全部選中,更改為標題
Opencv learning notes 8 -- answer sheet recognition
MES, APS and ERP are essential to realize fine production
解决方案:智慧工地智能巡检方案视频监控系统
Memory error during variable parameter overload
TypeScript void 基础类型
In the era of digital economy, how to ensure security?
How MySQL merges data
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
http缓存,强制缓存,协商缓存
C intercept string
opencv学习笔记八--答题卡识别
OpenJudge NOI 2.1 1661:Bomb Game
继电反馈PID控制器参数自整定
Force buckle day31
Ble of Jerry [chapter]