zoukankan      html  css  js  c++  java
  • Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3

    A,有多个线段,求一条最短的线段长度,能过覆盖到所又线段,例如(2,4)和(5,6)

    那么我们需要4 5连起来,长度为1,例如(2,10)(3,11),用(3,10)

    思路:我们想一下如果题目说的是最长我们肯定是取最小x和最大的y连起来就完事。

    但是要求长度最小又得覆盖,那么可以这样想,我们需要把最小的x不断右移到这条线段的y,

    最大的左移到x,所以就是最大x-最小y完事

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll n,m,x,y,z,b,c=0,a=0,k;
    ll arr[1000006];
    int main()
    {
        ios_base::sync_with_stdio(0);
        cin>>m;
        while(m--){
           cin>>n;
           ll mx = -1e9 , mn=1e9;
           for(int i=0 ; i<n;i++){
            cin>>x>>y;
            mx = max(mx , x);
            mn = min(mn , y);
           }
           cout<<max(mx -mn , (ll) 0)<<endl;
        }
        return 0;
    }
    

    B 没啥好说的,

    https://codeforces.com/contest/1262/problem/B

    #include <cstdio>
    #include <algorithm>
    #include <set>
    using namespace std;
     
    const int maxn = 1e5+10;
     
    int n, p[maxn], a[maxn];
    set<int> s;
     
    void solve() {
    	scanf("%d", &n);
    	for (int i = 1; i <= n; ++i) {
    		scanf("%d", a+i);
    		s.insert(i);
    	}
    	for (int i = 1; i <= n; ++i) {
    		if (a[i] != a[i-1]) {
    			p[i] = a[i];
    			s.erase(a[i]);
    		} else {
    			if (*s.begin() > a[i]) {
    				puts("-1");
    				return;
    			}
    			p[i] = *s.begin();
    			s.erase(s.begin());
    		}
    	}
    	for (int i = 1; i <= n; ++i)
    		printf("%d%c", p[i], " \n"[i==n]);
    }
     
    int main() {
    	int t;
    	scanf("%d", &t);
    	while (t--) solve();
    }
    

     C,

    给你一个括号序列,你有一个操作,选定l,r,就可以反转他们,例如 1 2 3 4变成 4 3 2 1 

    最多n次操作,那就说明我们一定能构造成我们想要的序列

    题目要求你把这个序列变成合法括号序列,同时!恰好有k个前缀是合法的。

    很容易想到先构造k-1个()这种序列,这样()()(),然后后面把所有括号变成((()))这种

    #include<bits/stdc++.h>
    using namespace std;
    int n,k;
    string s;
    void solve_swap(int x,int y){
        while(x<y){
            swap(s[x],s[y]);
            x++,y--;
        }
    }
    string get_str(int n,int k){
        string tmp="";
        for(int i=0;i<k-1;i++){
            tmp+="(";
            tmp+=")";
        }
        int len = n-tmp.size();
        for(int i=0;i<len/2;i++){
            tmp+="(";
        }
        for(int i=0;i<len/2;i++){
            tmp+=")";
        }
        return tmp;
    }
    void solve(){
        cin>>n>>k;
        cin>>s;
        vector<pair<int,int>>ans;
        string final_str = get_str(n,k);
        for(int i=0;i<s.size();i++){
            if(s[i]!=final_str[i]){
                for(int j=i+1;j<s.size();j++){
                    if(s[j]==final_str[i]){
                        solve_swap(i,j);
                        ans.push_back(make_pair(i+1,j+1));
                        break;
                    }
                }
            }
        }
        //cout<<s<<endl;
        cout<<ans.size()<<endl;
        for(int i=0;i<ans.size();i++){
            cout<<ans[i].first<<" "<<ans[i].second<<endl;
        }
    }
    int main(){
        int t;
        scanf("%d",&t);
        while(t--)solve();
    }
    

      D1,D2

    https://www.cnblogs.com/hgangang/p/11648398.html更新到了里面

     

  • 相关阅读:
    Android学习笔记之-----讯飞语音识别实例化RecognizerDialog参数出现错误的解决方法
    java基本数据类型取值范围
    中国教育
    git push --help
    cherry Tree的严重漏洞
    程序的核心是什么
    BeanUtils.getProperty性能分析
    Java各种反射性能对比
    Spring AOP无法拦截Controller中的方法
    Mock单元测试
  • 原文地址:https://www.cnblogs.com/hgangang/p/11965301.html
Copyright © 2011-2022 走看看