• 暑假补题【7-1】(codeforces)Educational Codeforces Round 121 (Rated for Div. 2)


    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define x first
    #define y second
    #define lowbit(x) (x&(-x))
    const int N = 200;
    ll a[N], h[N];
    
    void solve(){
    	int n;
    	cin >> n;
    	for(int i = 1; i <= n; i ++){
    		cin >> a[i];
    	}
    	for(int i = 1; i <= n; i ++){
    		cin >> h[i];
    	}
    	ll ans = 0, last = n;
    	for(int i = n; i >= 1; i --){
    		if((a[i] - a[i - 1]) >= h[i]){
    			int dis = a[i] - h[i];
    			ans += (a[last] - dis + 1) * (a[last] - dis) / 2;
    			last = i - 1;
    		}
    		else{
    			h[i - 1] = max(h[i - 1], h[i] - (a[i] - a[i - 1]));
    		}
    	}
    	cout << ans << endl;
    }
    
    int main(){
    	int T;
    	cin >> T;
    	while(T--)
    		solve();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    D
    在这里插入图片描述

    在这里插入图片描述

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define x first
    #define y second
    #define lowbit(x) (x&(-x))
    const int N = 2e5 + 10;
    int a[N], cnt[N], n;
    
    ll cal(int x, int y){	
    	ll sum1 = 0, sum2 = 0, sum3 = 0, k = 1;
    	for(; k <= n; k ++){
    		if(sum1 + cnt[k] > x)break;
    		sum1 += cnt[k];
    	}
    	for(; k <= n; k ++){
    		if(sum2 + cnt[k] > y)break;
    		sum2 += cnt[k];
    	}
    	sum3 = n - sum1 - sum2;
    	ll z = 1;
    	while(sum3 > z) z <<= 1;
    	return x - sum1 + y - sum2 + z - sum3;
    }
    
    void solve(){ 
    	cin >> n;
    	for(int i = 0; i <= n; i ++) cnt[i] = 0;
    	for(int i = 1; i <= n; i ++){
    		cin >> a[i];
    		cnt[a[i]] ++;
    	}
    	ll ans = 1e18;
    	for(int i = 0; i <= 20; i ++){
    		for(int j = 0; j <= 20; j ++){
    			ans = min(ans, cal(1 << i, 1 << j));
    		}
    	}
    	cout << ans << endl;
    }
    
    int main(){
    	int T;
    	cin >> T;
    	while(T--)
    		solve();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
  • 相关阅读:
    【算法 | 模拟No.3】leetcode 38. 外观数列
    你有多了解Shiro认证-SSM?
    Linux系统——Tomcat部署及优化
    Vue3 响应式原理
    STM32H743的FDCAN使用方法(2):STM32CubeMX初始化代码修改
    QT取消自动关联
    高防CDN:保障网络安全的未来之路
    网站速度测试和优化方案
    数据资产管理解决方案:构建高效、安全的数据生态体系
    股指期货开户的条件和流程
  • 原文地址:https://blog.csdn.net/m0_51678367/article/details/125557969