头像

liunian




离线:2天前


最近来访(24)
用户头像
Whalefall.
用户头像
打不死的KK
用户头像
忧郁的外星人
用户头像
-楠朋友
用户头像
OLIVEIRA
用户头像
harrygao
用户头像
feverish
用户头像
安半愚
用户头像
可爱不是长久之计
用户头像
HUSTzyk
用户头像
光可遇
用户头像
Egbert-Lannister.
用户头像
TralSun
用户头像
凌乱之风
用户头像
XinyeChu
用户头像
瑾川致知
用户头像
明天的天明
用户头像
风不会停息_6
用户头像
摸鱼ing
用户头像
arisingstar

活动打卡代码 AcWing 5031. 矩阵扩张

liunian
4天前
#include<bits/stdc++.h>
using namespace std;
const int N = 250;
int n, m;
char p[N][N], a[N][N], b[N][N];
int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i ++ ) scanf("%s", p[i]);
    int k = 1;
    a[0][0] = '.';
    while (m -- )
    {
        for (int i = 0; i < k; i ++ )
            for (int j = 0; j < k; j ++ )
                for (int x = 0; x < n; x ++ )
                    for (int y = 0; y < n; y ++ )
                    {
                        char c = '*';
                        if (a[i][j] == '.') c = p[x][y];
                        b[i * n + x][j * n + y] = c;
                    }
        memcpy(a, b, sizeof a);
        k *= n;
    }

    for (int i = 0; i < k; i ++ ) puts(a[i]);
    return 0;
}



liunian
5天前

参考文献

先枚举左端点i,再枚举右端点,每当右端点新加进来一个数,更改此时区间的满足要求的值,

C++ 代码

#include<bits/stdc++.h>
using namespace std;
const int N=5e3+10;
int n,a[N],b[N],cnt[N];
int read() {
    int x; scanf("%d",&x); return x;
}
signed main() {
    n=read();
    for(int i=1;i<=n;i++) a[i]=read();
    for(int i=1;i<=n;i++) {
        int maxx=0,id=2e9;
        memset(b,0,sizeof b);
        for(int j=i;j<=n;j++) {
            b[a[j]]++;
            if((b[a[j]]>maxx)||(b[a[j]]==maxx&&id>a[j])) maxx=b[a[j]],id=a[j];
            cnt[id]++;
        }
    }
    for(int i=1;i<=n;i++) cout<<cnt[i]<<" ";
    return 0;
}


活动打卡代码 AcWing 5030. 核心元素

liunian
5天前
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+10;
int n,a[N],b[N],cnt[N];
int read() {
    int x; scanf("%d",&x); return x;
}
signed main() {
    n=read();
    for(int i=1;i<=n;i++) a[i]=read();
    for(int i=1;i<=n;i++) {
        int maxx=0,id=2e9;
        memset(b,0,sizeof b);
        for(int j=i;j<=n;j++) {
            b[a[j]]++;
            if((b[a[j]]>maxx)||(b[a[j]]==maxx&&id>a[j])) maxx=b[a[j]],id=a[j];
            cnt[id]++;
        }
    }
    for(int i=1;i<=n;i++) cout<<cnt[i]<<" ";
    return 0;
}


活动打卡代码 AcWing 5029. 极值数量

liunian
5天前
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e3+10;
int n,a[N],cnt;
signed main() {
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=2;i<n;i++)
        if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1]))
            cnt++;
    cout<<cnt;
    return 0;
}



liunian
7天前
#include<bits/stdc++.h>
using namespace std;
int T,h,m;
signed main() {
    cin>>T;
    while(T--) {
        cin>>h>>m;
        cout<<(23-h)*60+60-m<<endl;
    }
    return 0;
}



liunian
7天前
#include<bits/stdc++.h>
using namespace std;
int T,h,m;
signed main() {
    cin>>T;
    while(T--) {
        cin>>h>>m;
        cout<<(23-h)*60+60-m<<endl;
    }
    return 0;
}


活动打卡代码 AcWing 3734. 求和

liunian
8天前
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

typedef long long ll;
ll l ,r;
ll j;
vector<ll> a;

void dfs(int u, ll x)//打表 dfs求所以满足的数
{
    a.push_back(x);
    if (u == 10) return;
    dfs(u + 1, x * 10 + 4);
    dfs(u + 1, x * 10 + 7);
}

int main()
{
    cin >> l >> r;
    dfs(0, 0);
    sort(a.begin(), a.end());
    ll d = lower_bound(a.begin(), a.end() , l) - a.begin();//二分找到大于等于l的第一个符合条件的数
    ll c = lower_bound(a.begin(), a.end() , r) - a.begin();//二分找到大于等于r的第一个符合条件的数
    ll sum = 0;
    if (d != c)//分段处理
    {
        sum += a[d] * (a[d] - l + 1);
        for (int i = d + 1; i < c; i ++)
        {
            sum += a[i] * (a[i] - a[i - 1]);
        }
        if (c - 1 >= d) sum += a[c] * (r - a[c - 1]);
        cout << sum << endl;
    }
    else 
        cout << a[d] * (r - l + 1) << endl;
    return 0;
}


活动打卡代码 AcWing 3733. 去掉一个元素

liunian
8天前
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,a[N],cnt,ans;
signed main() {
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>a[i];
        cnt+=a[i];
    }
    for(int i=1;i<=n;i++) 
        if((cnt-a[i])%2==0) ans++;
    cout<<ans;
}


活动打卡代码 AcWing 3727. 乘方相加

liunian
9天前

/*
将所有数转化为k进制,最后k进制上面的数不能超过1
*/

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=100;
int T,n,k,s[N];
int read() {
    int x;scanf("%lld",&x);return x;
}
signed main() {
    T=read();
    while(T--) {
        n=read(),k=read();
        memset(s,0,sizeof s);
        for(int i=1;i<=n;i++) {
            int x=read();
            for(int j=0;x;j++,x/=k)
                s[j]+=x%k;
        }
        bool flag=true;
        for(int i=0;i<N;i++)
            if(s[i]>1) {
                flag=false;
                break;
            }
        if(flag) puts("YES");
        else puts("NO");
    }
    return 0;
}


活动打卡代码 AcWing 3726. 调整数组

liunian
10天前
#include<bits/stdc++.h>
using namespace std;
int T,n;
int read() {
    int x;scanf("%d",&x);return x;
}
signed main() {
    T=read();
    while(T--) {
        n=read();
        unordered_map<int,int> h;
        while(n--) h[read()%2]++;
        if(h.size()==1) puts("YES");
        else puts("NO");
    }
    return 0;
}