头像

ray2060




离线:1天前


最近来访(16)
用户头像
15922191810
用户头像
sscanf
用户头像
zwhy
用户头像
Hollow
用户头像
guud
用户头像
专三液氮大炮
用户头像
h111111
用户头像
yxc
用户头像
N1GU
用户头像
coder2050
用户头像
zombotany
用户头像
Juan
用户头像
代码改变头发
用户头像
Binarysearch

活动打卡代码 AcWing 3822. 食堂排队

ray2060
30天前

赛后写的

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

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- ) {
        int n;
        cin >> n;
        int last = 0;
        while (n -- ) {
            int l, r;
            cin >> l >> r;
            if (max(last, l) > r) {
                cout << 0 << ' ';
            } else {
                cout << max(last, l) << ' ';
                last = max(last, l) + 1;
            }
        }
        cout << endl;
    }
    return 0;
}


活动打卡代码 AcWing 3821. 区间选数

ray2060
30天前

线性

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

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- ) {
        int l1, r1, l2, r2;
        cin >> l1 >> r1 >> l2 >> r2;
        int l, r, cnt;
        for (l = l1, r = r2, cnt = 0; l != r; cnt ++ ) {
            if (cnt % 2 == 0) {
                l ++;
            } else {
                r --;
            }
        }
        cout << l << ' ' << r << endl;
    }
    return 0;
}

常数

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

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- ) {
        int l1, r1, l2, r2;
        cin >> l1 >> r1 >> l2 >> r2;
        cout << l1 << ' ' << ((l1 == l2) ? r2 : l2) << endl;
    }
    return 0;
}


新鲜事 原文

ray2060
1个月前
## 错误代码(必填) C++ ``` #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { int T; cin >> T; while (T -- ) { int n; cin >> n; for (int i = n; i >= 1; i -- ) { cout << i << ' '; } cout << endl; } return 0; } ``` ## 错误思路(必填) 倒序输出不就行了吗 ## 错误数据(选填) ### Wrong Answer 输入: T=2 n1=2 n2=5 输出: a1={2, 1} a2={5, 4, 3, 2, 1} 标准输出: a1={2, 1} a2={2, 1, 5, 3, 4} #### 试了四次,全部WA



ray2060
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int n;
    cin >> n;
    while (n -- ) {
        int m;
        cin >> m;
        if (m == 0) {
            cout << 0 << ' ';
            continue;
        }
        int res=0;
        while (m) {
            res ++;
            m &= m - 1;
        }
        cout << res << ' ';
    }
    return 0;
}


活动打卡代码 AcWing 3807. 构造字符串

ray2060
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- ) {
        int n, k;
        char ans[110];
        char next = 'a';
        cin >> n >> k;
        for (int i = 0; i < n; i ++ ) {
            ans[i] = next;
            next ++;
            if (next >= 'a' + k) {
                next = 'a';
            }
        }
        ans[n] = 0;
        printf("%s", ans);
        puts("");
    }
    return 0;
}


活动打卡代码 AcWing 3808. 画正方形

ray2060
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- ) {
        int n;
        cin >> n;
        int s;
        s = floor(sqrt(n));
        if (s * s >= n) cout << 2 * s << endl;
        else if (s * (s + 1) >= n) cout << 2 * s + 1 << endl;
        else if ((s + 1) * (s + 1) >= n) cout << 2 * s + 2 << endl;
    }
    return 0;
}


活动打卡代码 AcWing 3802. 消灭数组

ray2060
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int get_len(int a[], int n) {
    if (n == 1) return 1;
    if (is_sorted(a, a + n)) return n;
    return max(get_len(a, n >> 1), get_len(a + (n >> 1), n >> 1));
}


int main()
{
    int T;
    cin >> T;
    int a[20], n;
    while (T -- ) {
        cin >> n;
        for (int i = 0; i < n; i ++ ) cin >> a[i];
        printf("%d\n", get_len(a, n));
    }
    return 0;
}


活动打卡代码 AcWing 3806. 最小化字符串

ray2060
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int T;
    scanf("%d", &T);
    while (T -- ) {
        int n;
        char s[200010];
        scanf("%d", &n);
        scanf("%s", s);
        int res = -1;
        for (int i = 0; i < n - 1; i ++ ) {
            if (s[i] > s[i + 1]) {
                res = i;
                break;
            }
        }
        if (res == -1) res = n - 1;
        for (int i = 0; i < n; i ++ ) {
            if (i != res) printf("%c", s[i]);
        }
        puts("");
    }
    return 0;
}


新鲜事 原文

ray2060
1个月前
帮我DFS一下“知识点书”,谢谢



ray2060
1个月前

算法1

(暴力)

直接扫描出最大值,再找出最长连续出现的最大值就可以了

时间复杂度 O(n)

参考文献

C++ 代码


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

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T -- ) {
        int a[100010], n;
        cin >> n;
        int max = 0;
        for (int i = 0; i < n; i ++ ) {
            cin >> a[i];
            if (max < a[i]) max = a[i];
        }
        int max_res = 0, res = 0;
        for (int i = 0; i < n; i ++ ) {
            if (max == a[i]) res ++ ;
            else res = 0;
            if (max_res < res) max_res = res;
        }
        cout << max_res << endl;
    }
    return 0;
}