头像

senkuIgM




离线:7小时前


最近来访(12)
用户头像
听雨家族--无尘Txc.
用户头像
zjsqwq
用户头像
lyric_01
用户头像
易思人
用户头像
acwing_zfw
用户头像
夜寐
用户头像
本人和硕
用户头像
潘潘_the_panda
用户头像
Codyyan
用户头像
张大壮
用户头像
sweettea

活动打卡代码 AcWing 1524. 最长回文子串

senkuIgM
7小时前
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
bool f[N][N];
string s;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    getline(cin, s);
    int res=0;
    for(int i=s.size()-1; ~i; i--)
        for(int j=i; j<s.size(); j++) {
            if(i==j) f[i][j]=1;
            else if(i+1==j) f[i][j]=s[i]==s[j];
            else f[i][j]=f[i+1][j-1] && s[i]==s[j];
            if(f[i][j]) res=max(res, j-i+1);
        }
    cout << res;
}


活动打卡代码 AcWing 1528. 火星购物

senkuIgM
10小时前
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n, m, s[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for(int i=1; i<=n; i++) cin >> s[i], s[i]+=s[i-1];

    int res=1e9;
    // 以i为右端点最右的j,j越靠右最小
    for(int i=1, j=0; i<=n; i++) {
        while(s[i]-s[j+1]>=m) j++;
        if(s[i]-s[j]>=m) res=min(res, s[i]-s[j]);
    }

    for(int i=1, j=0; i<=n; i++) {
        while(s[i]-s[j+1]>=m) j++;
        if(s[i]-s[j]==res) cout << j+1 << '-' << i << '\n';
    }
}


活动打卡代码 AcWing 1607. 爱丁顿数

senkuIgM
11小时前
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N], n;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for(int i=0; i<n; i++) cin >> a[i];
    sort(a, a+n);

    // 倒数第E个数是不是大于E
    for(int e=n; e; e--)
        if(a[n-e]>e) {
            cout << e;
            return 0;
        }
    cout << 0;
}


活动打卡代码 AcWing 1543. 栈

senkuIgM
12小时前

IMG_0102.jpg

#include<bits/stdc++.h>
using namespace std;
stack<int> stk;
multiset<int> up, down;
int n;

void adjust() {
    while(up.size()>down.size()) {
        down.insert(*up.begin());
        up.erase(up.begin());
    }
    while(down.size()>up.size()+1) {
        up.insert(*--down.end());
        down.erase(--down.end());
    }
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    while(n--) {
        string s;
        cin >> s;
        if(s=="Push") {
            int k;
            cin >> k;
            stk.push(k);
            // 这里写*--down.begin()会RE, 因为第二个条件是在!up.empty()情况下执行
            if(up.empty() || k<*up.begin()) down.insert(k);
            else up.insert(k);
            adjust();
        } else if(s=="Pop") {
            if(stk.empty()) cout << "Invalid\n";
            else {
                int t=stk.top();
                stk.pop();
                cout << t << '\n';
                // 这里写*up.begin()会segfault, 只有一个数的时候没有up.begin()
                if(t<=*--down.end()) down.erase(down.find(t));
                else up.erase(up.find(t));
                adjust();
            }
        } else {
            if(stk.empty()) cout << "Invalid\n";
            else cout << *--down.end() << '\n';
        }
    }
}


活动打卡代码 AcWing 1543. 栈

senkuIgM
12小时前
#include<bits/stdc++.h>
using namespace std;
stack<int> stk;
multiset<int> up, down;
int n;

void adjust() {
    while(up.size()>down.size()) {
        down.insert(*up.begin());
        up.erase(up.begin());
    }
    while(down.size()>up.size()+1) {
        up.insert(*--down.end());
        down.erase(--down.end());
    }
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    while(n--) {
        string s;
        cin >> s;
        if(s=="Push") {
            int k;
            cin >> k;
            stk.push(k);
            // 这里写*--down.begin()会RE, 因为第二个条件是在!up.empty()情况下执行
            if(up.empty() || k<*up.begin()) down.insert(k);
            else up.insert(k);
            adjust();
        } else if(s=="Pop") {
            if(stk.empty()) cout << "Invalid\n";
            else {
                int t=stk.top();
                stk.pop();
                cout << t << '\n';
                // 这里写*up.begin()会segfault, 只有一个数的时候没有up.begin()
                if(t<=*--down.end()) down.erase(down.find(t));
                else up.erase(up.find(t));
                adjust();
            }
        } else {
            if(stk.empty()) cout << "Invalid\n";
            else cout << *--down.end() << '\n';
        }
    }
}


活动打卡代码 AcWing 1541. 世界首富

senkuIgM
14小时前

IMG_0100.jpg

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=210;
struct Psn {
    string id;
    int age, net;

    bool operator<(const Psn &t) const {
        if(net!=t.net) return net>t.net;
        if(age!=t.age) return age<t.age;
        return id<t.id;
    }
};
int n, k;
vector<Psn> ages[N];
int idx[N]; // 当前年龄i用到第几个

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> k;
    for(int i=0; i<n; i++) {
        string id;
        int age, net;
        cin >> id >> age >> net;
        ages[age].pb({id, age, net});
    }
    for(auto& it: ages) sort(it.begin(), it.end());

    for(int i=1; i<=k; i++) {
        cout << "Case #" << i << ":\n";
        int m, l, r;
        cin >> m >> l >> r;

        memset(idx, 0, sizeof idx);
        bool have=false;
        while(m--) {
            int t=-1;
            for(int j=l; j<=r; j++) {
                if(idx[j]<ages[j].size()) {
                    if(t==-1 || ages[j][idx[j]]<ages[t][idx[t]])
                        t=j;
                }
            }
            if(t==-1) break;

            auto &p=ages[t][idx[t]];
            idx[t]++;
            cout << p.id << ' ' << p.age << ' ' << p.net << '\n';
            have=true;
        }
        if(!have) cout << "None\n";
    }
}



senkuIgM
15小时前
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n, k;
struct Node {
    string name;
    int age, net;

    bool operator<(const Node& t) const { // 3关键字排序
        if(net!=t.net) return net>t.net;
        if(age!=t.age) return age<t.age;
        return name<t.name;
    }
} a[N];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> k;
    for(int i=0; i<n; i++) cin >> a[i].name >> a[i].age >> a[i].net;
    sort(a, a+n); // 时间瓶颈:nlogn => 1e6

    for(int i=1; i<=k; i++) { // 数据太弱了,这次应该要TLE的
        cout << "Case #" << i << ":\n";
        int m, l, r;
        cin >> m >> l >> r;
        int q=0; // 记数
        for(int j=0; j<n; j++) {
            if(a[j].age>=l && a[j].age<=r) {
                cout << a[j].name << ' ' << a[j].age << ' ' << a[j].net << '\n';
                if(++q==m) break; // 恰好m个
            }
        }
        if(q==0) cout << "None\n";
    }
}



活动打卡代码 AcWing 1535. 弹出序列

senkuIgM
15小时前
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int m, n, k;
int a[N];

// 每次插入一个数,能弹就弹
bool check() {
    stack<int> s;
    for(int i=1, j=0; i<=n; i++) {
        s.push(i);
        if(s.size()>m) return false;
        while(s.size() && s.top()==a[j]) s.pop(), j++;
    }
    return s.empty();
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> m >> n >> k;
    while(k--) {
        for(int i=0; i<n; i++) cin >> a[i];
        if(check()) cout << "YES" << '\n';
        else cout << "NO" << '\n';
    }
}



senkuIgM
16小时前

不要考虑矛盾律,直接暴力枚举

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int a[N], n;

int judge(int k, int i, int j) { // jia 1 zhen 0
    int t=a[k];
    if(t>0) {
        if(t==i || t==j) return 1;
        return 0;
    }
    t=-t;
    if(t==i || t==j) return 0;
    return 1;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for(int i=1; i<=n; i++) cin >> a[i];

    for(int i=1; i<=n; i++)
        for(int j=i+1; j<=n; j++) {
            int s=judge(i, i, j)+judge(j, i, j);
            if(s!=1) continue;

            s=0;
            for(int k=1; k<=n; k++)
                s+=judge(k, i, j);
            if(s!=2) continue;

            cout << i << ' ' << j;
            return 0;
        }

    cout << "No Solution";
}


活动打卡代码 AcWing 1581. 急性中风

senkuIgM
17小时前

f85c00cc-62ce-41ff-8dd0-d1c288d87409.jpeg
3维走迷宫,走完记录一下就行

#include<bits/stdc++.h>
using namespace std;
const int M=1286, N=128, L=60;
int g[L][M][N];
struct Pt {
    int z, x, y;
};
queue<Pt> q;
int m, n, l, t;
int d[][3]={
    {1, 0, 0},
    {-1, 0, 0},
    {0, 1, 0},
    {0, -1, 0},
    {0, 0, 1},
    {0, 0, -1},
};

int bfs(Pt pt) {
    q.push(pt);
    g[pt.z][pt.x][pt.y]=0;
    int v=1;

    while(q.size()) {
        auto t=q.front();
        q.pop();
        for(int i=0; i<6; i++) {
            int z=t.z+d[i][0], x=t.x+d[i][1], y=t.y+d[i][2];
            if(~z && ~x && ~y && z<l && x<m && y<n && g[z][x][y]) {
                g[z][x][y]=0;
                q.push({z, x, y});
                v++;
            }
        }
    }
    return v;
}

int main() {
    cin >> m >> n >> l >> t;
    for(int i=0; i<l; i++)
        for(int j=0; j<m; j++)
            for(int k=0; k<n; k++)
                cin >> g[i][j][k];

    int ans=0;
    for(int i=0; i<l; i++)
        for(int j=0; j<m; j++)
            for(int k=0; k<n; k++)
                if(g[i][j][k]) {
                    int v=bfs({i, j, k});
                    if(v>=t) ans+=v;
                }

    cout << ans;
}