• Codeforces Round #624 (Div. 3)


    Codeforces Round #624 (Div. 3)

    A.Add Odd or Subtract Even:

    对于一个数,你可以执行操作:加一个奇数,或者减一个偶数,给出两个数a,b,判断最少执行几次操作可以由a得到b。分情况讨论即可。

    /**********************************************************
    * @Author: 			   Maple
    * @Date:   			   2020-02-24 22:37:36
    * @Last Modified by:   Maple
    * @Last Modified time: 2020-02-24 22:39:42
    * @Remark: 
    **********************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
    
    const int maxn=1000;
    
    
    int main()
    {
    	#ifndef ONLINE_JUDGE
    	freopen("in.in","r",stdin);
    	#endif
    	FAST
    	int t;
    	cin>>t;
    	while(t--){
    		int a,b;
    		cin>>a>>b;
    		if(a<b){
    			int x=b-a;
    			if(x&1)
    				cout<<"1"<<endl;
    			else
    				cout<<"2"<<endl;
    		}
    		else if(a==b)
    			cout<<"0"<<endl;
    		else{
    			int x=a-b;
    			if(x&1)
    				cout<<"2"<<endl;
    			else
    				cout<<"1"<<endl;
    		}
    	}
    	return 0;
    }
    

    B.WeirdSort

    题意:给出一个数组a有n个数,再给出一个长度为m的数组p,对于p中每一个数,pi=x,则a数组中ax和a(x+1)可以交换。判断给出的p数组能否实现将a数组从小到大排序。冒泡排序题,排序过程加入判断即可。

    /**********************************************************
    * @Author: 			   Maple
    * @Date:   			   2020-02-24 22:44:28
    * @Last Modified by:   Maple
    * @Last Modified time: 2020-02-24 22:53:24
    * @Remark: 
    **********************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
    
    const int maxn=111;
    int n,m,a[maxn],p[maxn];
    
    void swap(int &x,int &y){
    	int temp=x;
    	x=y;
    	y=temp;
    	return;
    }
    
    bool bubleok(){
    	for(int i=0;i<n-1;i++){
    		for(int j=0;j<n-1-i;j++){
    			if(a[j]>a[j+1]){
    				if(p[j]){
    					swap(a[j],a[j+1]);
    				}
    				else
    					return false;
    			}
    		}
    	}
    	return true;
    }
    
    void piaint(){
    	for(int i=0;i<n;i++)
    		cout<<a[i]<<" ";
    	cout<<endl;
    	return;
    }
    
    int main()
    {
    	#ifndef ONLINE_JUDGE
    	freopen("in.in","r",stdin);
    	#endif
    	FAST
    	int t;
    	cin>>t;
    	while(t--){
    		memset(p,0,sizeof(p));
    		cin>>n>>m;
    		for(int i=0;i<n;i++)
    			cin>>a[i];
    		for(int i=0;i<m;i++){
    			int x;
    			cin>>x;
    			p[x-1]=1;
    		}
    		bubleok()?cout<<"YES"<<endl:cout<<"NO"<<endl;
    		// /piaint();
    	}	
    	return 0;
    }
    

    C.Perform the Combo

    题意,有一个长度为n的字符串和一个长度为m的数组p,对于p数组中的数,如果pi=x意味着,当顺次使用到字符串m位置时,会出现错误,所以,要从头开始,要求计算出26个小写字母各被用到多少次。用前缀和维护字符串中i位置之前各个字母各出现了多少次,然后遍历数组p累计p中描述位置的字母出现次数计科,最后加上完整使用一整个字符串会用多少字符。

    /**********************************************************
    * @Author: 			   Maple
    * @Date:   			   2020-02-24 23:03:43
    * @Last Modified by:   Maple
    * @Last Modified time: 2020-02-24 23:22:50
    * @Remark: 
    **********************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
    
    const int maxn=2e5+100;
    int n,m,lsum[30][maxn],ans[maxn];
    char str[maxn];
    
    int main()
    {
    	#ifndef ONLINE_JUDGE
    	freopen("in.in","r",stdin);
    	#endif
    	int t;
    	scanf("%d",&t);
    	while(t--){
    		for(int i=0;i<26;i++)
    			lsum[i][0]=0;
    		scanf("%d%d",&n,&m);
    		scanf("%s",str+1);
    		for(int i=1;i<=n;i++){
    			for(int j=0;j<26;j++)
    				lsum[j][i]=lsum[j][i-1];
    			lsum[int(str[i]-'a')][i]++;
    		}
    		for(int i=0;i<m;i++){
    			int p;
    			scanf("%d",&p);
    			for(int j=0;j<26;j++){
    				ans[j]+=lsum[j][p];
    			}
    		}
    		for(int i=0;i<26;i++){
    			ans[i]+=lsum[i][n];
    		}
    		for(int i=0;i<26;i++){
    			printf("%d ",ans[i]);
    			ans[i]=0;
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    

    注意数据量较大采用高效输入模式

    D.Three Integers:

    题意,给出三个数,a,b,c,每个数可以执行加或减1操作无数次,但是不能出现非正数,求最少执行多少次可以实现b%a==0&&c%b==0 ,直接在范围内搜索a的可能值,b的可能值和c的可能值,注意开大上限,防止漏掉情况。

    /**********************************************************
    * @Author: 			   Maple
    * @Date:   			   2020-02-25 11:22:43
    * @Last Modified by:   Maple
    * @Last Modified time: 2020-02-25 11:26:47
    * @Remark: 
    **********************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-(x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
    
    const int maxn=1000;
    int a,b,c;
    
    int main()
    {
    	#ifndef ONLINE_JUDGE
    	freopen("in.in","r",stdin);
    	#endif
    	FAST
    	int t;
    	cin>>t;
    	while(t--){
    		int ans=INF,wa,wb,wc;
    		cin>>a>>b>>c;
    		for(int i=1;i<=20000;i++){
    			for(int j=i;j<=20000;j+=i){
    				for(int k=j;k<=20000;k+=j){
    					int mid=abs(a-i)+abs(b-j)+abs(c-k);
    					if(mid<ans){
    						ans=mid;
    						wa=i;
    						wb=j;
    						wc=k;
    					}
    				}
    			}
    		}
    		cout<<ans<<endl;
    		cout<<wa<<" "<<wb<<" "<<wc<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    [NOI2012]美食节——费用流(带权二分图匹配)+动态加边
    mysqlsla slow-query常用用法
    [POI2000]病毒
    mysqlsla安装
    mysqldumpslow
    [学习笔记]约数
    查看MySQL数据的连接
    [学习笔记]质数
    关于ulimit -a中需要修改的两个值
    Miller-Rabin与二次探测
  • 原文地址:https://www.cnblogs.com/LeafLove/p/12361984.html
Copyright © 2020-2023  润新知