zoukankan      html  css  js  c++  java
  • cf1206解题报告

    cf1206解题报告

    A

    模拟

    #include <bits/stdc++.h>
    using namespace std;
    int n,m,a[1010],b[12910];
    int dsr[1111];
    int main() {
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) scanf("%d",&a[i]),dsr[a[i]]=1;
    	scanf("%d",&m);
    	for(int j=1;j<=m;++j) scanf("%d",&b[j]),dsr[b[j]]=1;
    	for(int i=1;i<=n;++i) {
    		for(int j=1;j<=m;++j) {
    			if(!dsr[a[i]+b[j]]) {
    				cout<<a[i]<<" "<<b[j];
    				return 0;
    			}
    		}
    	}
    	return 0;
    }
    

    B

    普及dp,其实不用开数组

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int _=2e5+7;
    ll n,a[_],b[_],f[_][2];
    int main() {
    	cin>>n;
    	for(ll i=1,x;i<=n;++i) {
    		cin>>x;
    		a[i]=abs(x-1),b[i]=abs(x+1);
    	}
    	f[0][1]=100000000000000000LL;
    	for(ll i=1;i<=n;++i) {
    		f[i][0]=min(f[i-1][0]+a[i],f[i-1][1]+b[i]);
    		f[i][1]=min(f[i-1][1]+a[i],f[i-1][0]+b[i]);
    	}
    	cout<<f[n][0];
    	return 0;
    }
    
    

    C

    贪心,套路,构造
    互相差1,那i和i+n+1就是相差1的。
    根据样例可以这样构造。
    (a[1]=1,a[n+1]=2;)
    (a[2]=2n,a[n+2]=2n-1;)
    (a[3]=3,a[n+3]=4;)
    (a[4]=2n-2,a[n+4]=2n-3;)
    (…………)
    无解瞎猜偶数,很套路

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int _=2e5+7;
    int n,a[_],b[_];
    int main() {
    	scanf("%d",&n);
    	if(n%2==0) return puts("NO"),0;
    	int l=1,r=n*2;
    	for(int i=1;i<=n;++i) {
    		if(i&1) {
    			a[i]=l;
    			++l;
    			b[i]=l;
    			++l;
    		} else {
    			a[i]=r;
    			--r;
    			b[i]=r;
    			--r;
    		}
    	}
    	printf("YES
    ");
    	for(int i=1;i<=n;++i) printf("%d ",a[i]);
    	for(int i=1;i<=n;++i) printf("%d ",b[i]);
    	return 0;
    }
    
    

    D

    这个题很容易想歪呀。
    二进制的x位为1的数的个数有3个及其以上。
    答案就是3,且没有比他再小的ans了。
    首先先去掉没用的0。
    剩下的数如果大于120的话,必定有上述情况。
    因为每一个数至少包含一位。
    然后范围缩小到100了。
    暴力Floyd找最小环,学到了。

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,ans,dis[207][207],g[207][207];
    std::vector<ll> a;
    int main() {
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) {
    		ll x;cin>>x;
    		if(x) a.push_back(x);
    	}
    	n=a.size();
    	if(n>=130) return puts("3"),0;
    	memset(dis,0x3f,sizeof(dis));
    	memset(g,0x3f,sizeof(g));
    	for(int i=1;i<=n;++i)
    		for(int j=1;j<=n;++j)
    			dis[i][j]=g[i][j]=233;
    	for(int i=1;i<=n;++i) {
    		for(int j=1;j<=n;++j) {
    			if(i==j) continue;
    			if(a[i-1]&a[j-1]) dis[i][j]=g[i][j]=1;
    		}
    	}
    	ans=200;
    	for(int k=1;k<=n;++k) {
    		for(int i=1;i<k;++i)
    			for(int j=i+1;j<k;++j)
    				ans=min(ans,dis[i][j]+g[j][k]+g[k][i]);
    		for(int i=1;i<=n;++i)
    			for(int j=1;j<=n;++j)
    				dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    	}
    	if(ans==200) ans=-1;
    	printf("%d
    ",ans);
    	return 0;
    }
    

    E,F

    看见交互题就烦,虽然不是不能做。
    算了,咕咕了。

  • 相关阅读:
    什么是封装?
    table
    POM文件
    Maven环境的搭建
    什么是maven
    J2EE的三层经典结构
    DOM对象和jQuery对象对比
    jQuery常用选择器分类
    什么是JQuery?它的特点是什么?
    jQuery准备函数语法
  • 原文地址:https://www.cnblogs.com/dsrdsr/p/11375129.html
Copyright © 2011-2022 走看看