头像

种花家的虎式坦克

$\href{https://www.acwing.com/blog/content/28491/}{题解主页}$




离线:3小时前


最近来访(1686)
用户头像
落月成孤倚灬
用户头像
源泉
用户头像
勇敢牛牛_
用户头像
甜菜丘
用户头像
宁滥勿缺
用户头像
tyjz_yyds
用户头像
zzlhh
用户头像
AIMHIGHOUTWITHABONG
用户头像
天行_闻天
用户头像
奶香一刀
用户头像
清风qwq
用户头像
_小镇做题家
用户头像
Pilgrims
用户头像
L-China
用户头像
magicat
用户头像
1234567869
用户头像
Jinlk
用户头像
say774
用户头像
ssyyg11
用户头像
六便士与月亮

活动打卡代码 AcWing 1058. 股票买卖 V

#include <iostream>
#include <cstring>

using namespace std;

const int N = 1e5 + 10;

int n;
int w[N];
int f[2][3];

int main()
{
    cin >> n;
    for (int i = 1; i <= n; ++ i) cin >> w[i];

    memset(f, -0x3f, sizeof f);
    f[0][0] = 0;
    for (int i = 1; i <= n; ++ i)
    {
        f[i & 1][0] = max(f[(i - 1) & 1][0], f[(i - 1) & 1][2]);
        f[i & 1][1] = max(f[(i - 1) & 1][1], f[(i - 1) & 1][0] - w[i]);
        f[i & 1][2] = f[(i - 1) & 1][1] + w[i];
    }
    cout << max(f[n & 1][0], f[n & 1][2]) << endl;
    return 0;
}


活动打卡代码 AcWing 1057. 股票买卖 IV

#include<bits/stdc++.h>
#define read(x) scanf("%d",&x)
using namespace std;
const int INF = 0x3f3f3f3f;
int n,k,a[100005],f[100005][103][2],ans;

int main(){
    read(n),read(k);
    for(register int i=1; i<=n; i++) read(a[i]);

    memset(f,-0x3f,sizeof(f)); 
    for(register int i=0; i<=n; i++) f[i][0][0] = 0;

    for(register int i=1; i<=n; i++) 
        for(register int j=1; j<=k; j++) {
            f[i][j][0] = max(f[i-1][j][0],f[i-1][j][1]+a[i]);
            f[i][j][1] = max(f[i-1][j][1],f[i-1][j-1][0]-a[i]);
        }
    for(register int i=0; i<=k; i++) ans = max(ans,f[n][i][0]);
    printf("%d\n",ans);
    return 0;
}


活动打卡代码 AcWing 1049. 大盗阿福

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 100010;

int n;
int w[N], f[N][2];

int main()
{
    int T;
    scanf("%d", &T);
    while (T -- )
    {
        scanf("%d", &n);
        for (int i = 1; i <= n; i ++ ) scanf("%d", &w[i]);

        for (int i = 1; i <= n; i ++ )
        {
            f[i][0] = max(f[i - 1][0], f[i - 1][1]);
            f[i][1] = f[i - 1][0] + w[i];
        }

        printf("%d\n", max(f[n][0], f[n][1]));
    }

    return 0;
}


新鲜事 原文

我觉得有争议,为啥比利时会超过四次世界冠军的意大利,还有墨西哥排名超过了乌拉圭,摩洛哥超过了德国………………………………


新鲜事 原文

FIFA公布年终国家队排名:巴西世界第一,国足降至第80名 @中新体育、@足球报官方微博 2022-12-22 17:49 北京时间22日,国际足联更新本年度最后一期世界排名,巴西队依旧高居榜首,刚刚夺得世界杯冠军的阿根廷队排名升至第二,法国排名第三。闯入四强的摩洛哥队飙升至第十一。国足排名比去年底下降六位,来到第八十名,在亚足联则位居第十一名。 前十名国家队: 1、巴西 2、阿根廷 3、法国 4、比利时 5、英格兰 6、荷兰 7、克罗地亚 8、意大利 9、葡萄牙 10、西班牙


新鲜事 原文

阴了!阴了!我终于转阴了!


新鲜事 原文

暂时不放个人主页了,换成题解主页,个人主页在我的分享里面



精选题解3篇(按点赞数排序)

1. 高精度乘法

2. 逆序对的数量

3. 高精度除法

(按阅读量排序)

1. 逆序对的数量

2. 数的范围

3. 快速排序

(按详细度排序)

1. 高精度加法

2. a ^ b

3. 逆序对的数量

欢迎讨论自己的题解




<-求赞

思路

直接x -= lowbit(x),减多少次就说明有多少个1

#include<iostream>

using namespace std;

int lowbit(int x)
{
    return x&-x;
}

int main()
{
    int n;
    cin>>n;

    while(n--)
    {
        int x;
        cin>>x;

        int res=0;
        while(x) x-=lowbit(x),res++;

        cout<<res<<endl;
    }

    return 0;
}



<-求赞

思路(双指针)

因为序列是有序的,所以我们从头往后扫描b数组,只要有一个a数组中的元素匹配不上,就不匹配。

否则是匹配的。

c++代码:

#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;

int n, m;
int a[N], b[N];

int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
    for (int i = 0; i < m; i ++ ) scanf("%d",&b[i]);

    int i = 0, j = 0;
    while (i < n && j < m)
    {
        if(a[i] == b[j]) i ++ ;
        j ++ ;
    }

    if(i == n) puts("Yes");
    else puts("No");

    return 0;
}