CF252A:

前缀和的练手题,具体思路:

1,把所有数输入。

2,把所有区间的和求出来。

3,求一下那个区间异或和最大,并存给ANS。

4,输出ANS。

代码如下:


// luogu-judger-enable-o2
#include <iostream>//头文件
using namespace std;
int a[105],s[105];//定义两个数组A用来输入,S用来存储异或和
int main()
{
    int n,ans=-1e9;//ANS是答案
    cin>>n;//输入一下N
    for(int i=1;i<=n;i++)
    cin>>a[i];//输入那几个数
    s[1]=a[1];//S数组的第一个永远都是A数组的一个
    for(int i=2;i<=n;i++)
    s[i]=a[i]^s[i-1];//把异或求出来
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j<=n;j++)
        {
            ans=max(ans,s[j]^s[i-1]);//把最大的异或和存下来
        }
    }
    cout<<ans;//输出异或和
    return 0;//结束
}A

珍惜生命,远离抄袭。。。

CF62A:


题意懂了就可以开始做题了,只要按题面规则模拟就可以,只要读懂题就行,没什么可以说的:


#include <iostream>//头文件
using namespace std;//常规
int main()//主函数
{
    int a,b,c,d;//定义手指
    cin>>a>>b>>c>>d;//输入手指根数
    if((a*2+3>d&&d+1>=a)||(b*2+3>c&&c+1>=b))//判断有两种情况,每种情况里又有两种小情况,只要满足两种小情况就行(题意说了)
        cout<<"YES";//输出
    else//不符合要求
        cout<<"NO";//输出
    return 0;//结束
}

CF466A:
其实这道题并没有我想像的那么难,我最初看题以为是一个动态规划的题,后来发现只需要简单的模拟即可,并不用什么太难的算法,于是我就放心,12行代码就过了。

言归正传

本题思路其实也很简单,只需要简单的判断一下是买a卢布一张,可以搭一次地铁的和b卢布一张,可以搭m次地铁这两种票那种票便宜即可连循环都不用写。


首先咱们来看那种票单价便宜,便宜很明显,第一种票单价就是a,而第二种票单价为b/m,所以只要判断哪个低就买那个。如果第一种便宜就直接输出a×n(买n张为a元的票总价就是a×n)而第二种就稍微复杂一点,第二种票价很显然是n/m×b,但还会剩n%m次车,所以还要加上b,但这不一定是对的,因为还有第一种票呢,如果第一种票的价钱×n%m小于b,那么第一种就便宜,所以去一个最小值即可就MIN(iostream里自带的)。

好了有了概念就来敲代码吧:


#include <iostream>//头文件
using namespace std;//常规
int main()//主函数
{
    int n,m,a,b;//一行四个整数:n,m,a,b,代表的数请看题意
    cin>>n>>m>>a>>b;//输入
    if(float(b/m)>=a)//判断那种便宜
    cout<<a*n;//如果第一种便宜就输出a×n
    else//其他情况
    cout<<n/m*b+min(b,n%m*a);//第二种票价怎么计算前面说了,就是n/m*b+min(b,n%m*a),输出就行了
    return 0;//华华丽丽的结束
}

请大家在看题解前自己思考,那样才能获得真正的知识!!!