当前位置:网站首页>Enumeration, simulation, and sorting

Enumeration, simulation, and sorting

2022-07-07 23:39:00 Yuesi

acwing Question no 1210

Topic link

acwing subject 1210

Answer link :

acwing Answer key 1210

1∼N
Section [L,R] All the elements in ( That's the number L One to the first R Elements )
( If the interval [L,R] All the elements in
( That is The first L One to the first R Elements ) You can get a length of R−L+1 Of “ continuity ” The sequence , It's called the serial interval .
PS:

1-n All numbers are in the sequence represented by intervals 

The difference between the minimum value and the maximum value after arrangement is equal to the digit difference R-L; namely [L,R] In the interval max-min=R-L;

 Be careful :

1. When R And L stay [1,n] Interval time L=R It is also in line with the meaning of the question ;

2. The initial value should be restored every time the maximum and minimum values of the interval are calculated ,
 Otherwise, the second comparison will be affected 

 With two for Interval to traverse all possible interval situations ;
#include<bits/stdc++.h>
using namespace std;
int main(){
    
	int n;//n The scope is [1,10000] 
	scanf("%d",&n);
	int ans[10010];
	for(int i=1;i<=n;i++){
    
		scanf("%d",&ans[i]);
	}
	int cou=0;
	for(int i=1;i<=n;i++){
    
		int MIN=1000500,MAX=-1000000;
		// Every time we find the minimum and maximum value of the interval, we need   Prepare for the second application  
		for(int h=i;h<=n;h++){
    
			MIN=min(MIN,ans[h]);
			MAX=max(MAX,ans[h]);
			if(MAX-MIN==h-i){
    
				cou++;
			}
		}
	}
	printf("%d\n",cou);
	return 0;
}

1236. Increment triples

Topic link :

acwing subject 1236

Answer link :

acwing Answer key 1236

int pos1=`lower_bound(num,num+6,7)-num`;    
// Returns the first... In the array ` Greater than or equal to ` The value of the checked number 
int pos2=`upper_bound(num,num+6,7)-num`;    
// Returns the first... In the array ` Greater than ` The value of the checked number 

 Violence solution 
#include<bits/stdc++.h>
using namespace std;
int main(){
    
	int n;
	scanf("%d",&n);
	int an[100010],bn[100010],cn[100010];
	for(int i=0;i<n;i++){
    
		scanf("%d",&an[i]);
	} 
	for(int i=0;i<n;i++){
    
		scanf("%d",&bn[i]);
	}
	for(int i=0;i<n;i++){
    
		scanf("%d",&cn[i]);
	} 
	sort(an,an+n);
	sort(bn,bn+n);
	sort(cn,cn+n);
	long long int a=0,c=0;
	long long int sum=0;
	for(int i=0;i<n;i++){
    
		a=0;
		c=0;
		while(a<n&&an[a]<bn[i]){
    
			a++;
		}
		while(c<n&&cn[c]<=bn[i]){
    
			c++;
		}
		sum+=a*(n-c);
	}
	printf("%d\n",sum);
	return 0;
}

Violent solution data arrives 100000 No result at all
Big brother
Increment triples

原网站

版权声明
本文为[Yuesi]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130556375485.html