头像

消灭dp暴政世界属于记搜-每题都要打挑战-看题宰题虐题王冲鸭

<a>Dracula编程写代码</a>




离线:9小时前


最近来访(344)
用户头像
ACE_22
用户头像
maple826
用户头像
MZY
用户头像
starrrr
用户头像
smakslow
用户头像
interment
用户头像
为光nixiaK
用户头像
zysmmer
用户头像
cgg小迷弟
用户头像
直行格子
用户头像
AiW
用户头像
hewllet
用户头像
acWing_lbwnb
用户头像
knighz
用户头像
蒟蒻LXY
用户头像
徐一凯
用户头像
limie
用户头像
早睡早起_8
用户头像
人头像萨拉卡
用户头像
Kevin_Durant

活动打卡代码 AcWing 1341. 十三号星期五

#include <bits/stdc++.h>
using namespace std;

int weekday[43 * 19 / 128 + 1];
int month[] = {1^1, 95^64, 54^42, 95^64, 95^65, 95^64, 95^65, 95^64, 95^64, 95^65, 95^64, 95^65, 95^64};

int main()
{
    int n;
    cin >> n;
    int year = ((84 * 7 + 1589) / 2 + 827) * 2 - 1930;
    int days = ((7 - 4) ^ 9) - 10;
    while (n --)
    {
        for (int i = (((~84) ^ 83) + 10) ^ 3; i <= ((75 | 192) & 293) + 11; i ++)
        {
            weekday[(days + ((75 | 192) & 293) + 11) % ((((8 ^ 3) | 1) & 7) + 4)] ++;
            days += month[i];
            if (i == (79 & 58 & ((((8 ^ 3) | 1) & 7) + 4)))
                if (year % ((79 & 58 & 7) << 1) == 0 && year % (94 ^ ((28 << 1) + 2)) != 0 || year % ((94 ^ ((28 << 1) + 2)) << 2) == 0)
                    days ++;
        }
        year ++;
    }
    for (int i = 7044 ^ (7040 + (5 ^ 4)), j = 0; j < ((((8 ^ 3) | 1) & 7) + 4); i ++, j ++)
        printf ("%d ", weekday[i % ((((8 ^ 3) | 1) & 7) + 4)]);
    puts("");
    return 0;
}



活动打卡代码 AcWing 1340. 贪婪的送礼者

傻逼

#include <bits/stdc++.h>
using namespace std;

const int N = 101010;
string names[N];
unordered_map <string, int> person;

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i ++)
        cin >> names[i];
    for (int i = 0; i < n; i ++)
    {
        string name;
        int money, cnt;
        cin >> name >> money >> cnt;
        if (cnt)
        {
            person[name] -= money / cnt * cnt;
            int kcnt = cnt;
            while (kcnt --)
            {
                string p;
                cin >> p;
                person[p] += money / cnt;
            }
        }
    }
    for (int i = 0; i < n; i ++)
        cout << names[i] << ' ' << person[names[i]] << endl;
    return 0;
}




#include <bits/stdc++.h>
using namespace std;

/* 这里写USACO的提交程序模板 */

int get(string &s)
{
    int res = 1;
    for (auto c : s)
        (res *= c - 'A' + 1) %= 47;
    return res;
}

int main()
{
    string a, b;
    cin >> a >> b;
    if (get(a) == get(b))
        puts("GO");
    else
        puts("STAY");
    return 0;
}




活动打卡代码 AcWing 4000. 排位

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

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T --)
    {
        int n, a, b;
        scanf ("%d%d%d", &n, &a, &b);
        if (a + b < n)
            printf ("%d\n", b += 1);
        else
            printf ("%d\n", n - a);
    }
    return 0;
}



新鲜事 原文

rp++


活动打卡代码 AcWing 472. 跳房子


#include <bits/stdc++.h>
using namespace std;

int n, k, d;

int x[1000010], w[1000010];
long long f[1000010];
int q[1000010];

bool check(int mid)
{
    int l = max(1, d - mid);
    int r = d + mid;
    long long res = 0;
    memset(f, -0x3f, sizeof f);
    f[0] = 0;
    int hh = 0, tt = -1;
    for (int i = 1, j = 0, k = 0; i <= n; i ++)
    {
        while (x[i] - x[k] >= l)
        {
            while (hh <= tt && f[q[tt]] <= f[k])
                tt --;
            q[++ tt] = k ++;
        }
        while (x[i] - x[j] > r)
            j ++;
        while (hh <= tt && q[hh] < j)
            hh ++;
        if (hh <= tt)
            f[i] = f[q[hh]] + w[i];
        res = max(res, f[i]);
    }
    return res >= k;
}

int main()
{
    cin >> n >> d >> k;
    for (int i = 1; i <= n; i ++)
        scanf ("%d%d", &x[i], &w[i]);
    int l = 0, r = 1E9 + 7;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid))
            r = mid;
        else
            l = mid + 1;
    }
    if (! check(r))
        r = -1;
    cout << r;
    return 0;
}



活动打卡代码 AcWing 440. 道路游戏

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

using namespace std;

const int N = 1010;

int n, m, p;
int s[N][N], cost[N];
int f[N], g[N][N];

struct node
{
    int v, i, j;
    bool operator < (const node & t) const
    {
        return v < t.v;
    }
};

priority_queue <node> heap[N];

inline int get(int x)
{
    return x % n + (x % n <= 0) * n;
}

int main()
{
    scanf("%d%d%d", &n, &m, &p);
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; j ++ )
            scanf("%d", &s[i][j]);
    for (int i = 1; i <= m; i ++ )
        scanf("%d", &cost[i]);
    for (int i = 1; i <= m; i ++ )
        for (int j = 1; j <= n; j ++ )
            if (j == 1) s[j][i] += s[n][i - 1];
            else s[j][i] += s[j - 1][i - 1];
    memset(f, -0x3f, sizeof f);
    memset(g, -0x3f, sizeof g);
    f[0] = 0;
    for (int i = 1; i <= n; i ++ )
    {
        g[0][i] = -cost[get(i + 1)];
        heap[get(0 - i)].push({g[0][i], 0, i});
    }
    for (int i = 1; i <= m; i ++)
    {
        for (int j = 1; j <= n; j ++)
        {
            auto &h = heap[get(i - j)];
            while (true)
            {
                auto t = h.top();
                if (i - p > t.i)
                    h.pop();
                else
                {
                    f[i] = max(f[i], t.v + s[j][i]);
                    break;
                }
            }
        }
        for (int j = 1; j <= n; j ++)
        {
            g[i][j] = f[i] - s[j][i] - cost[get(j + 1)];
            heap[get(i - j)].push({g[i][j], i, j});
        }
    }
    cout << f[m] << endl;
    return 0;
}



活动打卡代码 AcWing 414. 数字游戏

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

using namespace std;

const int N = 110, M = 10, INF = 0x3f3f3f3f;

int n, m;
int w[N], s[N];
int f[N][N][M], g[N][N][M];

int h(int x)
{
    return (x % 10 + 10) % 10;
}

int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i ++ )
    {
        scanf ("%d", &w[i]);
        w[i + n] = w[i];
    }
    for (int i = 1; i <= n * 2; i ++)
        s[i] = s[i - 1] + w[i];
    memset(f, 0x3f, sizeof f);
    memset(g, -0x3f, sizeof g);
    for (int len = 1; len <= n; len ++)
        for (int l = 1; l <= n; l ++)
        {
            int r = l + len - 1;
            g[l][r][1] = f[l][r][1] = h(s[r] - s[l - 1]);
            for (int i = 2; i <= m; i ++)
                for (int j = l + i - 2; j < r; j ++)
                    f[l][r][i] = min(f[l][r][i], f[l][j][i - 1] * h(s[r] - s[j])), g[l][r][i] = max(g[l][r][i], g[l][j][i - 1] * h(s[r] - s[j]));
        }
    int maxw = -0x3f3f3f3f;
    int minw = 0x3f3f3f3f;
    for (int i = 1; i <= n; i ++ )
        maxw = max(maxw, g[i][i + n - 1][m]), minw = min(minw, f[i][i + n - 1][m]);
    cout << minw << endl << maxw << endl;
    return 0;
}



新鲜事 原文

学着你 用笑温暖世间对与错 成为你 做为梦流浪的先行客 入冬后 这一季添了多种性格 见证着 走走停停和起起落落 折过纸飞机 天南地北略过 折腾这年少 剩下满腔灼热 那些崇拜沉默被写成一首歌 偏要奔赴天边烟火 若陪伴是我所有 那痕迹 藏匿了整个宇宙 我总说最怕 突然没了你消息 隔空道后会无期 可究其原因 只是废柴的自己 太过听天由命 突然有一天 我学会所向披靡 变成无可代替 诗和远方 早不期而遇 有迹可循 时间在偏移 扑空的梦想继续 不需要什么邀请 答不上原因 看着发光的自己 嘴角逐渐弯起 朝夕和四季 一路繁花至梦醒 我又将歌唱起 沿途风景 那一段初心 得到回应 我还是会相信 星星会说话 石头会开花 穿过夏天的木栅栏 和冬天的风雪之后 你终会抵达 编程的终点


活动打卡代码 AcWing 3999. 最大公约数

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

using namespace std;

long long phi(long long x)  // 欧拉函数
{
    long long res = x;
    for (long long i = 2; i <= x / i; i ++ )
        if (x % i == 0)
        {
            res = res / i * (i - 1);
            while (x % i == 0) x /= i;
        }
    if (x > 1) res = res / x * (x - 1);

    return res;
}

int main()
{
    int T;
    cin >> T;
    while (T --)
    {
        long long n, m;
        cin >> n >> m;
        m = m / __gcd(n, m);
        cout << phi(m) << endl;
    }
    return 0;
}