codeforces:ProblemMset

最近一个月在codeforces上做的题(做个记录)

后面太多了就不把代码一一放出了,只放置了链接,可根据链接找到提交的代码.


最小子矩阵

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;

const int N = 1e2+7;
int a[N],b[N];
int w[N][N];
int dp[N];
int n,m,x,y;

double maxSub(int c[]){
    
    
    int b = 0;
    int cnt = 0;
    double avg = 0.0,s = 0.0;
    
    for(int i=0;i<m;i++){
    
    
        if(b<0){
    
    
            b = c[i];
            cnt = 0;
        }else{
    
    
            b += c[i];
            cnt++;
            avg = b/(cnt*1.0);
        }
        
        if(cnt>=x){
    
    
            s = max(s,avg);
        }
    }
    
    return s;
}

int main()
{
    
    
    scanf("%d%d%d%d",&n,&m,&x,&y);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(int i=0;i<m;i++)
        scanf("%d",&b[i]);
    
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            w[i][j] = a[i] + b[j];
    
    double maxavg = 0.0;
    int f = 0;
    for(int i=0;i<n;i++){
    
    
        memset(dp,0,sizeof(dp));
        f = 0;
        
        for(int j=i;j<n;j++){
    
    
            f++;
            for(int k=0;k<m;k++){
    
    
                dp[k] += w[j][k];
            }
            if(f>=y){
    
    
                maxavg = max(maxavg,maxSub(dp));
            }
        }
    }
    
    printf("%.10lf\n",maxavg);
    
    return 0;
}

1504A - Déjà Vu:构造.
1513B AND Sequences(数学+位运算.)
构造

#include <iostream>
#include <cstdio>

using namespace std;

typedef long long ll;

int main()
{
    
    
	ll a,b;
	ll t;	
	scanf("%lld",&t);
	getchar();
	while(t--){
    
    
		scanf("%lld%lld",&a,&b);
		
		if(b==1){
    
    
			puts("NO");
		}else{
    
    
			puts("YES");
			printf("%lld %lld %lld\n",a,2*a*b-a,2*a*b);
		}
	}
	
	return 0;
}

构造,数学

	while(t--){
    
    
		cin >> n;
		for(int i=0;i<n;i++)
			scanf("%d",&a[i]);
			
		cout << n/2 << endl;
		
		for(int i=0;i<n-1;i+=2){
    
    
			cout << i+1 << " " << i+2 << " " << min(a[i],a[i+1]) << " " << k << endl;
		}
	}

数学

	int t,k;
	cin >> t;
	while(t--){
    
    
		cin >> k;
		
		int g = gcd(k,100-k);
//		cout << g << endl;
		cout << k/g + (100-k)/g << endl;
	}

贪心

void solve(){
    
    
	
	bool flag = false;
	cin >> n;
	for(int i=0;i<n;i++){
    
    
		cin >> a[i];
		if(a[i]!=i+1){
    
    
			flag = true;
		}
	}
	
	if(!flag){
    
    
		cout << "0" << endl;
		return;
	}
	
	if(a[0]==n&&a[n-1]==1){
    
    
		cout << "3" << endl;
	}else if(a[0]==1||a[n-1]==n){
    
    
		cout << "1" << endl;
	}else{
    
    
		cout << "2" << endl;
	}
	return;
}

A.Mean Inequality

	while(t--){
    
    
		cin >> n;
		
		for(int i=0;i<2*n;i++)
			scanf("%d",&a[i]);
			
		sort(a,a+2*n);
		
		for(int i=0,j=n;i<n;i++,j++){
    
    
			printf("%d %d",a[i],a[j]);
			
			if(i!=n-1){
    
    
				printf(" ");
			}
		}
		printf("\n");
	}

B. I Hate 1111

	while(t--){
    
    
		cin >> a;
		
		if(a/111>=a%11)
			puts("YES");
		else
			puts("NO");
	}

C1. Potions (Easy Version)

#include <iostream>
#include <cstdio>
#include <queue>

using namespace std;

typedef long long ll;

int main()
{
    
    
    int n;
    scanf("%d",&n);
    
    ll sum = 0;
    int x;
    int ans = 0;
    priority_queue<int,vector<int>,greater<int> > pq;
    while(n--){
    
    
        scanf("%d",&x);
        sum += x;
        ans++;
        pq.push(x);
        
        if(sum<0){
    
    
            sum -= pq.top();
            pq.pop();
            ans--;
        }
    }
    printf("%d\n",ans);
    return 0;
}

C2. Potions (Hard Version)

同上.

B. Histogram Ugliness

//割去突出部分即可

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

long long a[500010];

int main()
{
    
    
	int t,n;
	scanf("%d",&t);
	while(t--){
    
    
		long long ans = 0;
		
		scanf("%d",&n);
		
		for(int i=0;i<n;i++)
			scanf("%d",&a[i]);
			
		for(int i=1;i<n-1;i++){
    
    
			if(a[i]>a[i-1]&&a[i]>a[i+1]){
    
    
				ans += min(a[i]-a[i-1],a[i]-a[i+1]);
				a[i] = a[i+1]>a[i-1]?a[i+1]:a[i-1];
			}
		}
		
		if(a[0]>a[1]){
    
    
			ans += a[0]-a[1];
			a[0] = a[1];
		}
		
		
		if(a[n-1]>a[n-2]){
    
    
			ans += a[n-1]-a[n-2];
			a[n-1] = a[n-2];
		}
		
		for(int i=1;i<n;i++){
    
    
			ans += abs(a[i]-a[i-1]);
		}
		
		cout << (ans+a[0]+a[n-1]) << endl;
	}
	
	
	return 0;
} 

A. Arithmetic Array

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    
    
	int t;
	scanf("%d",&t);
	while(t--){
    
    
		int n;
		scanf("%d",&n);
		
		int sum = 0,a;
		for(int i=0;i<n;i++){
    
    
			scanf("%d",&a);
//			cnt ++;
			sum += a;
		}
		int ans = sum - n;
		
		if(ans < 0){
    
    
			puts("1");
		}else{
    
    
			printf("%d\n",ans);
		}
	}
	
	
	return 0;
 } 

B. Bad Boy
C. Challenging Cliffs

A. Stone Game
B. Friends and Candies
C. Number of Pairs
D. Another Problem About Dividing Numbers
F. Interesting Function

B. Love Song
C. Stable Groups
D. PriceFixed

C. Strange Function

A. AquaMoon and Strange Sort

A. AquaMoon and Two Arrays

AquaMoon and Stolen String

A. Web of Lies

A. Gregor and Cryptography
B. Gregor and the Pawn Game

A. Find The Array
B. Maximum Cost Deletion
C. Manhattan Subarrays

A. Polycarp and Coins
B1. Wonderful Coloring - 1
B2. Wonderful Coloring - 2
C. Interesting Story
D1. Domino (easy version)

A. Subsequence Permutation
B. Running for Gold
C. Maximize the Intersections
D. Array Differentiation

A. Digits Sum
B. Reverse String
C. Penalty
D. Backspace

A. Cherry
B. Cobb
C. Mikasa
D. Diane

A. PizzaForces
B. Two Tables
C. Coin Rows
D. Say No to Palindromes

A. A Variety of Operations
B. Take Your Places!
A. Ezzat and Two Subsequences

B. Moamen and k-subarrays
A. Charmed by the Game
C. Mocha and Hiking
D1. Mocha and Diana (Easy Version)

D. Make a Power of Two

C. Deep Down Below

C. Rings

A. Median Maximization
B. MIN-MEX Cut
C. MAX-MEX Cut
D1. Seating Arrangements (easy version)

A. Domino Disaster
B. MEXor Mixup
C. Carrying Conundrum

A. Balanced Substring
C. Jury Meeting

A. Countdown
B. Swaps
A. Regular Bracket Sequences
B. Combinatorics Homework
C. Slay the Dragon

A. Another Sorting Problem

J. Jeopardy of Dropped Balls

E. Easy Scheduling

A. Casimir’s String Solitaire
B. Shifting Sort
C. Ticks
D. Productive Meeting
E1. Permutation Minimization by Deque
E2. Array Optimization by Deque
F. Array Stabilization (AND version)

A. CQXYM Count Permutations
B. Diameter of Graph
A. Luntik and Concerts
B. Luntik and Subsequences
C. Grandma Capa Knits a Scarf
D. Vupsen, Pupsen and 0

A. Windblume Ode

A. Gamer Hemose
B. Hemose Shopping
C. Bakry and Partitioning

A. Elections
B. Make it Divisible by 25
C. Save More Mice
D1. All are Same
E. Gardener and Tree

A. Consecutive Sum Riddle
B. Special Numbers
C. Make Them Equal
E1. Rubik’s Cube Coloring (easy version)

A. Computer Game
B. Groups
C. Delete Two Elements
D. Training Session

J. Robot Factory

猜你喜欢

转载自blog.csdn.net/m0_50435987/article/details/121013818