zoukankan      html  css  js  c++  java
  • Codeforces Round #735 (Div. 2) 题解

    A

    发现长度为 (2) 的一定是最好的。

    #pragma GCC optimize("O3")
    #include<bits/stdc++.h>
    using namespace std;
    #define endl '
    '
    #define debug(x) cerr << #x << ": " << x << endl
    #define pb(a) push_back(a)
    #define set0(a) memset(a,0,sizeof(a))
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define dwn(i,a,b) for(int i=(a);i>=(b);i--)
    #define ceil(a,b) (a+(b-1))/b
    #define INF 0x3f3f3f3f
    #define ll_INF 0x7f7f7f7f7f7f7f7f
    typedef long long ll;
    typedef pair<int,int> PII;
    typedef pair<double,double> PDD;
    
    #define int long long
    
    inline void read(int &x) {
        int s=0;x=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();}
        while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar();
        x*=s;
    }
    
    signed main(){
    	int T; cin>>T;
    	while(T--){
    		int n; cin>>n;
    		
    		int a=0, b=0, res=0;
    		rep(i,1,n){
    			a=b; cin>>b;
    			res=max(res, a*b);
    		}
    		cout<<res<<endl;
    	}	
        return 0;
    }
    

    B

    暴力

    #pragma GCC optimize("O3")
    #include<bits/stdc++.h>
    using namespace std;
    #define endl '
    '
    #define debug(x) cerr << #x << ": " << x << endl
    #define pb(a) push_back(a)
    #define set0(a) memset(a,0,sizeof(a))
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define dwn(i,a,b) for(int i=(a);i>=(b);i--)
    #define ceil(a,b) (a+(b-1))/b
    #define INF 0x3f3f3f3f
    #define ll_INF 0x7f7f7f7f7f7f7f7f
    typedef long long ll;
    typedef pair<int,int> PII;
    typedef pair<double,double> PDD;
    
    inline void read(int &x) {
        int s=0;x=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();}
        while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar();
        x*=s;
    }
    
    const int N=3e5+5;
    
    int w[N];
    
    int main(){
    	int T; cin>>T;
    	while(T--){
    		int n, k; read(n), read(k);
    		rep(i,1,n) read(w[i]);
    		
    		ll res=-INF;
    		rep(i, max(1, n-2000), n) rep(j, i+1, n){
    			res=max(res, 1LL*i*j-1LL*k*(w[i]|w[j]));
    		}
    		cout<<res<<endl;
    	}	
        return 0;
    }
    

    C

    什么样的数 (k) 一定会出现在序列 (noplus 0 ... noplus m) 中?

    换句话说,就是 (k = noplus x),其中 (xin [0,m])

    进一步得到应有 (noplus k leq m),这样的 (k) 一定会出现在序列中。

    我们的目标是找到一个最小的 (k) 使得 (noplus k geq m+1)

    从而转化为一个经典问题:给出 (a, c) 求最小的 (b) 使得: (a oplus b geq c)

    #pragma GCC optimize("O3")
    #include<bits/stdc++.h>
    using namespace std;
    
    #define endl '
    '
    #define debug(x) cerr << #x << ": " << x << endl
    #define pb(a) push_back(a)
    #define set0(a) memset(a,0,sizeof(a))
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define dwn(i,a,b) for(int i=(a);i>=(b);i--)
    #define ceil(a,b) (a+(b-1))/b
    
    #define all(x) (x).begin(), (x).end()
    #define SUM(a) accumulate(all(a), 0LL)
    #define MIN(a) (*min_element(all(a)))
    #define MAX(a) (*max_element(all(a)))
    #define lb(a, x) distance(begin(a), lower_bound(all(a), (x)))
    #define ub(a, x) distance(begin(a), upper_bound(all(a), (x)))
    
    #define INF 0x3f3f3f3f
    #define ll_INF 0x7f7f7f7f7f7f7f7f
    
    using pii = pair<int, int>;
    using pdd = pair<double, double>;
    using vi = vector<int>;
    using vvi = vector<vi>;
    using vb = vector<bool>;
    using vpii = vector<pii>;
    using ll = long long;
    using ull = unsigned long long;
    
    inline void read(int &x) {
        int s=0;x=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();}
        while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar();
        x*=s;
    }
    
    int main(){
    	int T; cin>>T;
    	while(T--){
    		int n, m; read(n), read(m);
    		int a=n, b=0, c=m+1;
    		
    		dwn(i,30,0){
    			int x=a>>i&1, y=c>>i&1;	
    			if(y && !x) b+=(1<<i);
    
    			if((a^b)>=c) break;
    		}
    		cout<<b<<endl;
    	}
        return 0;
    }
    
    

    D

    构造,就在中间插个 b,然后如果是奇数就在尾部插个 c,其它全部选 a,见代码:

    #pragma GCC optimize("O3")
    #include<bits/stdc++.h>
    using namespace std;
    
    #define endl '
    '
    #define debug(x) cerr << #x << ": " << x << endl
    #define pb(a) push_back(a)
    #define set0(a) memset(a,0,sizeof(a))
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define dwn(i,a,b) for(int i=(a);i>=(b);i--)
    #define ceil(a,b) (a+(b-1))/b
    
    #define all(x) (x).begin(), (x).end()
    #define SUM(a) accumulate(all(a), 0LL)
    #define MIN(a) (*min_element(all(a)))
    #define MAX(a) (*max_element(all(a)))
    #define lb(a, x) distance(begin(a), lower_bound(all(a), (x)))
    #define ub(a, x) distance(begin(a), upper_bound(all(a), (x)))
    
    #define INF 0x3f3f3f3f
    #define ll_INF 0x7f7f7f7f7f7f7f7f
    
    using pii = pair<int, int>;
    using pdd = pair<double, double>;
    using vi = vector<int>;
    using vvi = vector<vi>;
    using vb = vector<bool>;
    using vpii = vector<pii>;
    using ll = long long;
    using ull = unsigned long long;
    
    inline void read(int &x) {
        int s=0;x=1;
        char ch=getchar();
        while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();}
        while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar();
        x*=s;
    }
    
    const int N=1e5+5;
    char res[N];
    
    int main(){
    	int T; cin>>T;
    	while(T--){
    		int n; read(n);
    		
    		rep(i,1,n){
    			res[i]='a';
    			if(i==(n+1)/2) res[i]='b';
    		}
    		if(n&1) res[n]='c';
    		
    		rep(i,1,n) cout<<res[i];
    		cout<<endl;
    	}
        return 0;
    }
    
  • 相关阅读:
    重载操作符- 友元函数- 非/模板类重载
    静态成员变量
    函数指针的使用
    高斯消元_HihoCoderOffer6_03
    多重背包(MultPack = ZeroOnePack + CompletePack)
    高斯消元
    textbox文本键盘全选
    BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
    Jquery获取input=text 的值
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
  • 原文地址:https://www.cnblogs.com/Tenshi/p/15078889.html
Copyright © 2011-2022 走看看