头像

ZTXX




离线:4个月前


最近来访(0)

活动打卡代码 AcWing 3208. Z字形扫描

ZTXX
5个月前
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,a[510][510];
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i ++ )
    for (int j = 1; j <= n; j ++ )
    cin >> a[i][j];
    for (int i = 2; i <= n * 2; i ++ )
    {
        if (i % 2)
        {
            for (int j = 1; j < i; j ++ )
            if (j >= 1 && j <= n && i - j >= 1 && i - j <= n)
            cout << a[j][i - j] << " ";
        }
        else
        {
            for (int j = i - 1; j; j -- )
            if (j >= 1 && j <= n && i - j >= 1 && i - j <= n)
            cout << a[j][i - j] << " ";
        }
    }
    return 0;
}



ZTXX
5个月前

近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。

简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。

如果跳到了方块上,但没有跳到方块的中心则获得 1 分;跳到方块中心时,若上一次的得分为 1 分或这是本局游戏的第一次跳跃则此次得分为 2 分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将 +2,+4,+6,+8…)。

现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。

输入格式
输入包含多个数字,用空格分隔,每个数字都是 1,2,0 之一,1 表示此次跳跃跳到了方块上但是没有跳到中心,2 表示此次跳跃跳到了方块上并且跳到了方块中心,0 表示此次跳跃没有跳到方块上(此时游戏结束)。

输出格式
输出一个整数,为本局游戏的得分(在本题的规则下)。

数据范围
对于所有评测用例,输入的数字不超过 30 个,保证 0 正好出现一次且为最后一个数字。

输入样例:

1 1 2 2 2 1 1 2 2 0

输出样例:

22

C++ 代码及注释解析

#include <iostream>
using namespace std;
int main()
{
    int ans=0,x,cen=2;
    while(cin>>x)
    {
        if(x==1)//不在中心
        {
            ans+=1;//加一分
            cen=2;//下一次跳到中心回归2分
        }
        if(x==2)//跳到中心
        {
            ans+=cen;//累计
            cen+=2;//如果下一次跳到中心加|/cen+2\|分
        }
    }
    cout<<ans;//输出
    return 0;
}


活动打卡代码 AcWing 3257. 跳一跳

ZTXX
5个月前
#include <iostream>
using namespace std;
int main()
{
    int ans=0,x,cen=2;
    while(cin>>x)
    {
        if(x==1)//不在中心
        {
            ans+=1;//加一分
            cen=2;//下一次跳到中心回归2分
        }
        if(x==2)//跳到中心
        {
            ans+=cen;//累计
            cen+=2;//如果下一次跳到中心加|/cen+2\|分
        }
    }
    cout<<ans;//输出
    return 0;
}



ZTXX
5个月前

题目描述

给定 n 个整数表示一个商店连续 n 天的销售量。

如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。

其他的天都不是折点。

如下图中,第 3 天和第 6 天是折点。

19_0024670364-p1.png

给定 n 个整数 a1,a2,…,an 表示销售量,请计算出这些天总共有多少个折点。

为了减少歧义,我们给定的数据保证:在这 n 天中相邻两天的销售量总是不同的,即 ai−1≠ai。

注意,如果两天不相邻,销售量可能相同。

输入格式
输入的第一行包含一个整数 n。

第二行包含 n 个整数,用空格分隔,分别表示 a1,a2,…,an。

输出格式
输出一个整数,表示折点出现的数量。

数据范围
所有评测用例满足:1≤n≤1000,每天的销售量是不超过 10000 的非负整数。

输入样例:

7
5 4 1 2 3 6 4

输出样例:

2

C++ 代码

#include <iostream>
using namespace std;
int turn(int x,int y)//用于比较的自定义函数
{
    if(x>y) return 1;
    else    return 2;
}
int main()
{
    int n,i,a[1010],ans=0,f,g;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>a[i];
    f=turn(a[2-1],a[2]);//先对f进行赋值
    for(i=3;i<=n;i++)
    {
        g=turn(a[i-1],a[i]);
        if(f!=g) ans++;
        f=g;//覆盖
    }
    cout<<ans;
    return 0;
}


活动打卡代码 AcWing 3227. 折点计数

ZTXX
5个月前
#include <iostream>
using namespace std;
int turn(int x,int y)//用于比较的自定义函数
{
    if(x>y) return 1;
    else    return 2;
}
int main()
{
    int n,i,a[1010],ans=0,f,g;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>a[i];
    f=turn(a[2-1],a[2]);//先对f进行赋值
    for(i=3;i<=n;i++)
    {
        g=turn(a[i-1],a[i]);
        if(f!=g) ans++;
        f=g;//覆盖
    }
    cout<<ans;
    return 0;
}



ZTXX
5个月前

题目描述

小明正在利用股票的波动程度来研究股票。

小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。

输入格式
输入的第一行包含了一个整数 n,表示小明拿到的收盘价格的连续天数。

第二行包含 n 个正整数,依次表示每天的收盘价格。

输出格式
输出一个整数,表示这只股票这 n 天中的最大波动值。

数据范围
对于所有评测用例,2≤n≤1000。
股票每一天的价格为 1 到 10000 之间的整数。

输入样例:

6
2 5 5 7 3 5

输出样例:

4

样例解释
第四天和第五天之间的波动最大,波动值为 |3−7|=4。


C++ 代码

#include <iostream>
using namespace std;
int main()
{
    int i,n,a,x,ans=0;
    cin>>n;
    cin>>x;
    for(i=1;i<=n;i++)
    {
        cin>>a;
        ans=max(ans,abs(a-x));
        x=a;//不断替换,节省空间
    }
    cout<<ans;
    return 0;
}


活动打卡代码 AcWing 3232. 最大波动

ZTXX
5个月前
#include <iostream>
using namespace std;
int main()
{
    int i,n,a,x,ans=0;
    cin>>n;
    cin>>x;
    for(i=1;i<=n;i++)
    {
        cin>>a;
        ans=max(ans,abs(a-x));
        x=a;//不断替换,节省空间
    }
    cout<<ans;
    return 0;
}



ZTXX
5个月前

题目描述

在一个定义了直角坐标系的纸上,画一个 (x1,y1) 到 (x2,y2) 的矩形指将横坐标范围从 x1 到 x2,纵坐标范围从 y1 到 y2 之间的区域涂上颜色。

下图给出了一个画了两个矩形的例子。

第一个矩形是 (1,1) 到 (4,4),用绿色和紫色表示。

第二个矩形是 (2,3) 到 (6,5),用蓝色和紫色表示。

图中,一共有 15 个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。

在实际的涂色过程中,所有的矩形都涂成统一的颜色,图中显示不同颜色仅为说明方便。

19_4d1ede065e-p21.png

给出所有要画的矩形,请问总共有多少个单位的面积被涂上颜色。

输入格式
输入的第一行包含一个整数 n,表示要画的矩形的个数。

接下来 n 行,每行 4 个非负整数,分别表示要画的矩形的左下角的横坐标与纵坐标,以及右上角的横坐标与纵坐标。

输出格式
输出一个整数,表示有多少个单位的面积被涂上颜色。

数据范围
1≤n≤100,
0≤ 横坐标、纵坐标 ≤100

输入样例

2
1 1 4 4
2 3 6 5

输出样例

15

C++ 代码及解析

#include<iostream>
using namespace std;
int main()
{
    int n,ans=0,x[110][110];//用于标记
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int a,b,c,d;
        cin>>a>>b>>c>>d;//分别表示要画矩形左下角的横坐标与纵坐标,右上角的横坐标与纵坐标。
        for(int j=a+1;j<=c;j++)
        for(int k=b+1;k<=d;k++)
        if(x[j][k]==0)//没画过时
        {
            x[j][k]=1;
            ans++;//涂上颜色的矩形+1
        }
    }
    cout<<ans;//输出结果
    return 0;
}


活动打卡代码 AcWing 3203. 画图

ZTXX
5个月前
#include<iostream>
using namespace std;
int main()
{
    int n,ans=0,x[110][110];//用于标记
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int a,b,c,d;
        cin>>a>>b>>c>>d;//分别表示要画矩形左下角的横坐标与纵坐标,右上角的横坐标与纵坐标。
        for(int j=a+1;j<=c;j++)
        for(int k=b+1;k<=d;k++)
        if(x[j][k]==0)//没画过时
        {
            x[j][k]=1;
            ans++;//涂上颜色的矩形+1
        }
    }
    cout<<ans;//输出结果
    return 0;
}



ZTXX
5个月前

题目描述

求 a 的 b 次方对 p 取模的值。

输入格式
三个整数 a,b,p ,在同一行用空格隔开。

输出格式
输出一个整数,表示a^b mod p的值。

数据范围
0≤a,b≤109
1≤p≤109

输入样例:

3 2 7

输出样例:

2

C++ 代码

#include <iostream>
using namespace std
int main()
{
    int a, b, p, ans;
    cin >> a >> b >> p;
    ans = 1 % p;
    while(b)
    {
        if (b&1)//如果个位是1
        ans = ans * 1ll * a % p;//1ll(强制转换为long long 形式)
        a = a * 1ll * a % p;
        b >>= 1;//右移一位(个位→十位→百位......)
    }
    cout << ans ;
    return 0;
}