zoukankan      html  css  js  c++  java
  • 18/10/19 周五欢乐赛题解(c++版)

    注意本题解并没有去追求最优解,只是用比较暴力的方法求解。D题听说要改说明不是位数30位,目前除了D题可能有问题之外其他代码已经全部正确。

    A.查找字串

    用string BF(暴力求解即可)

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	string a,b;
    	cin>>a>>b;
    	for(int i=0;i<a.size();i++)
    	{
    		int f=1;
    		if(a[i]==b[0])
    		{
    			for(int j=0;j<b.size();j++)
    			if(a[i+j]!=b[j])
    			{
    				f=0;
    				break;
    			}
    			if(f) 
    			return cout<<"Y",0;
    		}
    	}
    	cout<<"N";
    }
    

    B.A+B Problem

    a+b不多解释,注意用long long

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	long long a,b;
    	cin>>a>>b;
    	cout<<a+b;
    }
    

    C.斜率

    非常简单的数学题,注意斜率不存在即为Δx为0

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	double ax,ay,bx,by;
    	cin>>ax>>ay>>bx>>by;
    	if(bx-ax==0)
    	return cout<<"NO",0;
    	double k=(by-ay)/(bx-ax);
    	printf("%.2lf",k);
    }
    

    D.小明的成绩

    直接在输入的时候找出最大值之后求差判断即可

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	int a1,b1,c1;
    	cin>>a1>>b1>>c1;
    	int ans1,ans2,ans3;
    	int n;	
    	cin>>n;
    	while(n--)
    	{
    		int n1,n2,n3;
    		cin>>n1>>n2>>n3;
    		ans1=max(ans1,n1);
    		ans2=max(ans2,n2);
    		ans3=max(ans3,n3);
    	}
    	(ans1-a1>0)?cout<<ans1-a1:cout<<0;
    	cout<<" ";
    	(ans2-b1>0)?cout<<ans2-b1:cout<<0;
    	cout<<" ";
    	(ans3-c1>0)?cout<<ans3-c1:cout<<0; 	
    } 
    

    E.DQ数球

    标准的队列模拟题,直接用队列模拟即可,把经过的球放到队尾,数到的球踢出队列即可

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
        int n;
        while(cin>>n)
        {
        	queue<int> q;
    		for(int i=1;i<=n;i++)
        	q.push(i);
        	while(1)
        	{
            	if(q.size()==1)
            	{
            	    cout<<q.front()<<endl;
            	    break;
            	}
            	for(int i=0;i<2;i++)
            	{
                	int t=q.front();
                	q.pop();
                	q.push(t);  
            	}
            	q.pop(); 
        	}
        }
    }
    

    F.环形求和

    最大子序列和的翻版问题设置两个变量sum和id,sum用来记录最大值,id用来记录下标。然后循环里面的t用来记录一次要加多少的数

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int num[105];
    main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        cin>>num[i];
        for(int i=n+1;i<n+4;i++)
        num[i]=num[i-n];
        int ans=0;int id=1;
        for(int i=1;i<=n;i++)
        {
            int sum=0;
    		for(int j=i;j<=i+3;j++)
            sum+=num[j];
            if(sum>ans)
            {
            	ans=sum;
            	id=i;
    		}
        }
        cout<<ans<<endl<<id;
    }
    

    G.数字换位

    直接转换成字符串倒叙输出即可

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	string a;
    	cin>>a;
    	reverse(a.begin(),a.end());
    	cout<<a;
    }
    

    H.数字统计

    还是直接转换成字符串硬解统计即可

    代码

    #include <bits/stdc++.h>
    using namespace std;
    main()
    {
    	int L,R;
    	cin>>L>>R;
    	int sum=0;
    	for(int i=L;i<=R;i++)
    	{
    		stringstream s;
    		s<<i;
    		string ss;
    		s>>ss;
    		for(int i=0;i<ss.size();i++)
    		if(ss[i]=='2')
    		sum++;
    	}
    	cout<<sum;
    }
    
  • 相关阅读:
    mybatis的注意事项一
    java代码操作word模板生成PDF文件
    使用mybatis框架实现带条件查询多条件(传入实体类)
    MyBatis框架ResultMap节点
    优化mybatis框架中的查询用户记录数的案例
    Mybatis框架联表查询显示问题解决
    使用mybatis框架实现带条件查询单条件
    [DB] 如何彻底卸载删除MySQL 【MYSQL】
    [DB] MySQL窗口输入密码后消失问题 【MYSQL】
    [acm] 曾经 刷题记录 [只有正确的坚持才是胜利]
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9819952.html
Copyright © 2011-2022 走看看