头像

星河2008

$\href{https://www.acwing.com/user/myspace/index/211074/}{{星河依旧长明}}$的小号




离线:1天前


最近来访(29)
用户头像
胡想
用户头像
Chena
用户头像
xyh2
用户头像
云衣醉梦
用户头像
77777777777
用户头像
木讷2.0
用户头像
次饭
用户头像
Finn2009
用户头像
吴梦涵2023
用户头像
雪落之声
用户头像
Kamisato_Ayaka
用户头像
蘑菇QQ糖
用户头像
Sagesse
用户头像
jwh
用户头像
jinguanyu
用户头像
Serendipity_85
用户头像
是个木头脑袋
用户头像
2010
用户头像
种花家的兔兔
用户头像
小小_88

新鲜事 原文

原来AC自动机的AC不是Accepted那个AC 哈哈哈


活动打卡代码 AcWing 4729. 解密

#include <iostream>
#include <cstring>
#include <algorithm> 

using namespace std;

typedef long long LL;

LL k, n, d, e;
LL p, q, m;

int main()
{
    scanf("%lld", &k);

    for (int i = 1; i <= k; i ++ )
    {
        scanf("%lld%lld%lld", &n, &d, &e);
        m = n - d * e + 2;

        LL l = 1, r = m >> 1;
        while (l < r)
        {
            LL mid = l + r >> 1;
            if (mid * (m - mid) >= n) r = mid;
            else l = mid + 1;
        }

        p = l, q = m - l;
        if (p * q == n) printf("%lld %lld\n", p, q);
        else puts("NO");
    }

    return 0;
}


活动打卡代码 AcWing 4728. 乘方

#include <iostream>

using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    if (a == 1)
    {
        cout << 1 << endl;
        return 0;
    }

    long long res = 1;
    for (int i = 1; i <= b; i ++ )
    {
        res *= (long long)a;
        if (res > 1e9)
        {
            cout << -1 << endl;
            return 0;
        }
    }

    cout << res << endl;

    return 0;
}


新鲜事 原文

xdm, 梅开三度!!
图片


活动打卡代码 AcWing 3422. 左孩子右兄弟

#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;

int n, x;
int e[N], ne[N], h[N], idx;

void add(int a, int b)
{
    e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}

int dfs(int x)
{
    int res = 0, cnt = 0, cur;
    for (int i = h[x], y; i != -1; i = ne[i])
    {
        cur = dfs(y = e[i]);
        res = max(res, cur);
        cnt ++ ;
    }

    return res + cnt;
}

int main ()
{
    memset(h, -1, sizeof(h));

    scanf("%d", &n);    
    for (int i = 2; i <= n; i ++ )
    {
        scanf("%d", &x);
        add(x, i);
    }

    printf("%d\n", dfs(1));

    return 0;
}



#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1010, M = 55;

int n, l, s;
int a[M][M];
int t[M][M];
int res;

struct qq
{
    int a, b;
}e[N];

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

    for (int i = s; i >= 0; i -- )
        for (int j = 0; j <= s; j ++ )
            scanf("%d", &a[i][j]);

    for (int i = 0; i < n; i ++ )
    {
        int x = e[i].a, y = e[i].b;
        if (x > l - s || y > l - s) continue;

        memset(t, 0, sizeof(t));

        for (int j = 0; j < n; j ++ )
        {
            int x1 = e[j].a - x, y1 = e[j].b - y;
            if (x1 >= 0 && x1 <= s && y1 >= 0 && y1 <= s)
                t[x1][y1] = 1;
        }

        bool f = 1;
        for (int j = 0; j <= s; j ++ )
            for (int k = 0; k <= s; k ++ )
                if (t[j][k] != a[j][k]) 
                {
                    f = 0;
                    break;
                }

        if (f) res ++;
    }

    printf("%d\n", res);

    return 0;
}


活动打卡代码 AcWing 4455. 出行计划

#include <iostream>

using namespace std;

const int N = 2e5 + 10;

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

int main()
{
    int x, y, q;
    cin >> n >> m >> k;

    for (int i = 0; i < n; i ++ )
    {
        scanf("%d%d", &x, &y);
        int l = max(0, x - k - y + 1);
        int r = max(0, x - k);
        a[l] ++ , a[r + 1] -- ;
    }

    for (int i = 1; i < N; i ++ )
        a[i] += a[i - 1];

    for (int i = 0; i < m; i ++ )
    {
        scanf("%d", &q);
        printf("%d\n", a[q]);
    }

    return 0;
}


新鲜事 原文

兄弟们,梅开二度!!
图片


活动打卡代码 AcWing 4700. 何以包邮?

#include <iostream>
#include <cstring>

using namespace std;

const int N = 40, M = 400000;

int n, x, ans = 2e9;
int a[N], f[M];

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

    memset(f, 0x3f, sizeof(f));
    f[0] = 0;

    for (int i = 1; i <= n; i ++ )
    {
        cin >> a[i];
        for (int j = x + 1e4; j >= a[i]; j --)
            f[j] = min(f[j], f[j - a[i]] + a[i]);
    }
    for (int i = x; i < x + 1e4; i ++ )
        ans = min(ans, f[i]);

    printf("%d", ans);
    return 0;
}


新鲜事 原文

全体起立!!!
图片