头像

Strive_aaa




离线:2天前


最近来访(106)
用户头像
蘑菇级
用户头像
JackeyLove
用户头像
AuroraY
用户头像
小橘子呀
用户头像
dsc182
用户头像
CJR__LKP
用户头像
凌乱之风
用户头像
冰之韵
用户头像
陈信长
用户头像
OLIVEIRA
用户头像
困A困
用户头像
ICZK
用户头像
挑战全AcWing关注第一人
用户头像
.拾光.
用户头像
李献计3
用户头像
YuWindSky
用户头像
飞劫
用户头像
杜昊Darko
用户头像
jangyi.
用户头像
散兵别歪

活动打卡代码 AcWing 4607. 字母补全

Strive_aaa
1个月前
B这次挺简单的就是暴力就行了啊
#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i =(a) ; i <= (b) ; i++)
#define _for(i,a,b) for(int i =(a) ; i <  (b) ; i ++)
using ll =long long;
#define endl '\n'
using pii =pair<int,int>;
#define pb push_back
#define all(x) x.begin(),x.end()
int main(){
//  map<char,int >
//  map<char,int> mp;
    string s;
    cin >> s;
    int cc = -1;
    bool flag = true;
    for(int i = 0 ;i < s.size() - 25; i ++){
        if(cc != -1) break;
        map<char,int> mp;
        for(int j = 0 ;j <= 25; j ++){
            if(s[i + j] == '?') continue;
            mp[s[i + j]] ++;
        }
        bool f = true;
        for(auto k = 'A' ; k <= 'Z' ; k ++){
            if(mp[k] >= 2 ){
                f = false;
                break;
            }
        }
        if(f){
            cc = i;
        }
    }
    if(cc == -1) {
        cout << -1 << endl;
        return 0;
    }
    for(int i = 0 ;i < s.size() ; i++){
        if(i == cc){
            map<char,int> mp;
            for(int j = 0 ;j <= 25 ; j++){
                if(s[i + j] == '?') continue;
                mp[s[i + j]] ++;
            }
            for(int j = 0;j <= 25 ;j ++){
                if(s[i + j] == '?'){
                    for(auto k = 'A' ; k <= 'Z' ; k++){
                        if(mp[k] == 0){
                            s[i + j] = k;
                        //  cout << i + j <<' ' << s[i + j] << endl;
                            mp[k] ++;

                            break;
                        }
                    }
                }
            }
            i = i + 25 -1;
        }
        else{
            if(s[i] == '?') s[i] = 'A';
        }
    }
    map<char,int> mp;
    for(auto v : s){
        mp[v] ++;
    }
    for(auto i = 'A' ;i <= 'Z' ;i ++){
        if(mp[i] == 0) {
            cout << -1 << endl;
            return 0;
        }
    }
    cout << s << endl;
    return 0;
}



活动打卡代码 AcWing 4507. 子数组异或和

Strive_aaa
1个月前
思维题
#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i =(a) ; i <= (b) ; i++)
#define _for(i,a,b) for(int i =(a) ; i <  (b) ; i ++)
using ll =long long;
#define endl '\n'
using pii =pair<int,int>;
#define pb push_back
#define all(x) x.begin(),x.end()
const int N = 3e5 + 999;
ll a[N];
ll solve(){
    ll n;
    cin >> n;
    _rep(i,1,n){
        cin >> a[i];
    }
    map<ll,pair<ll,ll>> mp;
    ll temp = 0;
    ll res = 0;
    mp[0].first = 1;
    for(int i = 1;i <= n;i ++){
        int x = a[i];
        temp ^= x;
        if(i % 2  == 0){
            res += mp[temp].first;
        }
        else res += mp[temp].second;
        if(i %  2 == 0){
            mp[temp].first ++;
        }
        else{
            mp[temp].second ++;
        }
    }
    return res;
}
int main(){
//  cout << (2 ^ 3 ^ 4 ^ 5) << endl; 
    cout << solve() << endl;

    return 0;
}



活动打卡代码 AcWing 4506. 三国语言

Strive_aaa
1个月前
#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i =(a) ; i <= (b) ; i++)
#define _for(i,a,b) for(int i =(a) ; i <  (b) ; i ++)
using ll =long long;
#define endl '\n'
using pii =pair<int,int>;
#define pb push_back
#define all(x) x.begin(),x.end()
int main(){
    int n;
    cin >> n;
    _rep(i,1,n){
        string s;
        cin >> s;
        if(s.back()== 'o'){
            cout << "FILIPINO" << endl;
        }
        else if(s.back() == 'u'){
            cout << "JAPANESE" << endl;
        }
        else cout << "KOREAN" << endl;
    }
    return 0;
}



活动打卡代码 AcWing 1. A + B

Strive_aaa
1个月前
#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i =(a) ; i <= (b) ; i++)
#define _for(i,a,b) for(int i =(a) ; i <  (b) ; i ++)
using ll =long long;
#define endl '\n'
using pii =pair<int,int>;
#define pb push_back
#define all(x) x.begin(),x.end()
int main(){
    int a,b;
    cin >> a >> b;
    cout << a+ b << endl; 
    return 0;
}




Strive_aaa
3个月前
#include<bits/stdc++.h>
using namespace std;
const int N =1e6 + 999;
using ll =long long;
ll s[N],a[N];
ll stk[N],top;
#define _rep(i,a,b) for(int i = (a) ; i <=(b) ;i ++)
void solve(){
    int n;
    cin >> n;
    _rep(i,1,n){
        cin >>a[i];
    }
    _rep(i,1,n){
        s[i] = s[i-1] + a[i];
    }
    _rep(i,1,n){
        s[i] -= i*100; 
    }
    ll ans = 0;
    stk[++top] = 0;
    _rep(i,1,n){
        if(s[stk[top]] >= s[i]) stk[++top] =i;
        else {
            int l = 1 , r = top;
            while(l < r){
                int mid = l + r >> 1;
                if(s[stk[mid]] < s[i]) r = mid;
                else l = mid + 1;
            }
            ans = max(ans , 1LL*(i - stk[l]));
            //stk[++top] =i;
        }
    } 
    cout << ans << endl;
    return ;
}
int main(){
    solve();
    return 0;
}


活动打卡代码 AcWing 4485. 比大小

Strive_aaa
3个月前
#include<bits/stdc++.h>
using namespace std;
#define _rep(i,a,b) for(int i=(a) ; i<=(b) ;i ++)
int main(){
    int s = 0 ,s1=0;
    int n;
    cin >> n;
    _rep(i,1,n){
        int x;
        cin >> x;
        s +=x;
    }
    _rep(i,1,n){
        int x;
        cin >> x;
        s1 +=x; 
    }
    if(s >= s1){
        return puts("Yes"),0;
    }
    else    return puts("No"),0;
    return 0;
}


活动打卡代码 AcWing 4486. 数字操作

Strive_aaa
3个月前
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> s;
void divide(int x){
    for(int i = 2; i <= x/i ; i++){
        while(x%i==0){
            s[i] ++ ;
            x /= i;
        }
    }
    if(x > 1){
        s[x] ++;
    }
}
int main(){
    int n;
    cin >> n;
    divide(n);
    int maxn = 0;
    for(auto [u,v] : s){
        maxn = max(maxn,v);
    }
    int res = 1;
    int tot = 0;
    int sum2= 0;
    int cnt= 0;
    while(pow(2,tot)<maxn) ++tot;
    for(auto [u,v] : s){
        res =res * u;
        sum2 += (pow(2,tot) - v);
    }
    if(sum2 == 0) cout << res << ' ' << tot <<endl;
    else{
    cnt += 1 +tot ;
    cout << res << ' '<<cnt <<endl;
    }
    return 0;
}


活动打卡代码 AcWing 288. 休息时间

Strive_aaa
4个月前
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int N = 4e3;
#define go(i, a, b) for (int i = (a); i <= (b);i++)
#define gon(i, a, b) for (int i = (a); i < (b);i++)
using ll = long long;
int f[2][N][2];
int w[N];
int n, m;   
int main(){
    cin >> n >> m;
    go(i,1,n)
    {
        cin >> w[i];
    }
    //bu选择第n个时间段
    memset(f,-0x3f,sizeof f);
    f[1][0][0] = f[1][1][1] = 0;
    go(i,2,n){
        go(j,0,min(i,m)){
            f[i & 1][j][0] = max(f[i-1 & 1][j][1], f[i-1 & 1][j][0]);
            if(j >= 1) f[i & 1][j][1] = max(f[i-1 & 1][j-1][1] + w[i], f[i-1 & 1][j-1][0]);
        }
    }
    ll ans = f[n&1][m][0];
    memset(f, -0x3f, sizeof f);
    f[1][0][0] = 0;
    f[1][1][1] = w[1];
    go(i,2,n){
        go(j,0,min(i,m)){
            f[i & 1][j][0] = max(f[i-1 & 1][j][1], f[i-1 & 1][j][0]);
            if(j >= 1) f[i & 1][j][1] = max(f[i-1 & 1][j-1][1] + w[i], f[i-1 & 1][j-1][0]);
        }
    }
    ans = max(ans, 1LL*f[n&1][m][1]);
    cout << ans << endl;
    return 0;
}


活动打卡代码 AcWing 311. 月之谜

Strive_aaa
4个月前
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<unordered_map>
#include<unordered_set>
using namespace std;
int a[15];
int len = 0;
int p;
int f[15][200][200];//因为初始化的问题f[15][1000][1000]TLE了因为记住每次memset 那么时间复杂度就是100*1000*100*10 明显要超时。。一开始就是这样T的。。
int dfs(int pos,int sum,int count,int limit)
{
    if(!pos){
        if(sum==p&&!count){
            return 1;
        }
        return 0;
    }
    if(!limit&&f[pos][sum][count]!=-1)
        return f[pos][sum][count];
    int up = limit ? a[pos] : 9;
    int res = 0;
    for (int i = 0; i <= up;i++){
        res += dfs(pos -1, sum + i, (count * 10 + i) % p, limit && i == up);
    }
    return limit ? res : f[pos][sum][count] = res;
}
int cal(int x){
    len = 0;
    while(x){
        a[++len] = x % 10, x /= 10;
    }
    int ans = 0;
    for (p = 1; p <= 101 ; p++){
        memset(f,-1,sizeof f);
        ans += dfs(len, 0, 0, 1); //这里一样要重新的memset因为每一次左后p是不同
    }
    return ans;
}
signed main(){
    int a, b;
    cin >> a >> b;
    cout << cal(b) - cal(a - 1);
    return 0;
}


活动打卡代码 AcWing 310. 启示录

Strive_aaa
4个月前
//数位dp
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cstdio>
#include<unordered_map>
#include<unordered_set>
using namespace std;
#define int long long
const int N = 16;
int x;
int a[N];
const int M=1e3 +100;
int dp[N][M];
int len;
int dfs(int pos,int cnt,int limit){
    if(!pos)
        return cnt >= 3;
    int res = 0;
    if(!limit&&dp[pos][cnt]!=-1)
        return dp[pos][cnt];
    int up = limit ?    a[pos] : 9;
    for (int i = 0; i <= up;i++){
        bool t = (i == 6);
        if(cnt>=3)
            res += dfs(pos - 1, cnt, limit && i == up);
        else if(t){
            res += dfs(pos - 1, cnt + 1, limit && i == up);
        }
        else{
            res += dfs(pos - 1, 0, limit && i == up);
        }
    }
    return limit?res:dp[pos][cnt]=res;
}
int cal(int x){
   // memset(dp, -1, sizeof dp);
    len = 0;
    while(x){
        a[++len] = x % 10, x /= 10;
    }
    return dfs(len, 0, 1);
}
signed main(){
    memset(dp, -1, sizeof dp);
    int _;
    cin >> _;
    while(_--){
        cin >> x;
        int l = 1, r = 1e10;
        while(l<r){
            int mid = l + r >> 1;
            if(cal(mid)>=x)
                r=mid;
            else
                l = mid + 1 ;
        }
        cout << r << endl;
    }
    return 0;
}