首页 > 其他分享 >牛客4

牛客4

时间:2024-02-25 12:11:46浏览次数:27  
标签:int sum long 牛客 solve mp ans

1.D守恒(主要通过数份数来和n作比较,一定要特判1这个特殊情况)

#include<bits/stdc++.h>
using namespace std;
long long t[1000000];
void solve()
{
    int n;
    cin>>n;
    long long sum=0,ans=0;
    for(int i=0;i<n;i++)
    {
        cin>>t[i];
        sum+=t[i];
    }
    if(n==1){cout<<1<<endl;
             return;
            }
    for(int i=1;i<=ceil((double)sum/n);i++)
    {
        if(sum/i>=n&&sum%i==0)ans++;
    }
    cout<<ans<<endl;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0) , cout.tie(0);
    int T = 1;
//    cin >> T ;
    while(T--) solve();
    return 0;
}

2.E漂亮数组(使用map存图,记录余数情况,如果某余数再次出现,说明中间有一段数字和为k,ans计数并清图重新计算)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
void solve()
{
    ll n,k,t;cin >> n >> k;
    map<ll,int> mp;
    mp[0]=1;
    ll sum=0,ans=0;
    for(int i=1;i<=n;i++){
        cin >> t;
        sum+=t;
        if(mp[sum%k]){
            ans++;
            sum=0;
            mp.clear();
            mp[0]=1;
        }else{
            mp[sum%k]=1;
        }
    }cout << ans << endl;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0) , cout.tie(0);
    int T = 1;
//    cin >> T ;
    while(T--) solve();
    return 0;
}

3.G数三角形(easy)(枚举三角形的最上面那个点,然后用一个前缀和来看下面是否有一条线)

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;

const int N = 510 , M = 1e6+10 ;

int ans=0;
char t[N][N];
int h[N][N];

void solve() {
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            cin >> t[i][j];
            if(t[i][j]=='*') h[i][j]=h[i][j-1]+1;
            else h[i][j]=h[i][j-1];
        }
    }

    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            if(t[i][j]=='*') {
                int k=i+1 , x=j-1 , y=j+1 , cnt=1;
                while(k<=n && x>=1 && y<=m && t[k][y]=='*' && t[k][x]=='*') {
                    if(h[k][y]-h[k][x-1]==2*cnt+1) ans++;
                    k++ , x-- , y++ , cnt++;
                }
            }
        }
    }

    cout << ans << endl;
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0) , cout.tie(0);
    int T = 1;
//    cin >> T ;
    while(T--) solve();
    return 0;
}

  

标签:int,sum,long,牛客,solve,mp,ans
From: https://www.cnblogs.com/violet-hty/p/18032236

相关文章

  • 2024牛客寒假算法基础集训营4个人补题题解(B、E)
    B、左右互博不能操作的情况有且仅有所有石子堆的石子个数只有1的时候,因此不管途中怎么操作,让所有石子堆都变成1的总操作次数是确定的。即假设一共有\(n\)堆石子,石子总数为\(sum\),总操作次数为\((sum-n)\)次。因此当\((sum-n)\)%\(2=0\)时一定在sweet操作完(或没有操作)后gui无法......
  • 2024牛客寒假算法基础集训营3
    2024牛客寒假算法基础集训营3A 智乃与瞩目狸猫、幸运水母、月宫龙虾题意给出若干组字符串,判断无视大小写,判断首字母是否相同思路如果首字母相同,则直接用\(==\)比较即可,如果首字母只有大小写的区别,则ASCII码值相差\(32\)代码/*******************************|Author:......
  • 2024牛客寒假算法基础集训营6
    2024牛客寒假算法基础集训营6比赛链接打一半就收拾行李了,不想开学呜呜呜(应该是lzgg出的题)A.宇宙的终结思路数据不大才100,所以模拟完全可以过去Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()std::vector<......
  • 2024牛客寒假算法基础集训营6
    A.宇宙的终结Code(伪代码):voidsolve(){intleft,right;cin>>left>>right;autocheck1=[&](intn){for(inti=2;i<=sqrt(n);i++){if(n%i==0){returnfalse;}......
  • 2024牛客寒假算法基础集训营5
    A.总数-1的个数#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){intn;cin>>n;intans=0;for(inti=1,x;i<=n;i++){cin>>x;if(x==1)c......
  • 2024牛客寒假算法基础集训营5
    2024牛客寒假算法基础集训营5比赛链接赛时出了五题,被自己不严谨的思维害惨了,之后的题晚几天再补,要开学了A.mutsumi的质数合数思路既不是质数也不是合数恐怕非1莫属了吧Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()......
  • 2024牛客寒假算法基础集训营4
    2024牛客寒假算法基础集训营4比赛地址A.柠檬可乐思路:简单的模拟,按照题目描述判断大小即可Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()voidsolve(){ inta,b,k; cin>>a>>b>>k; if(a>=k*b)cout<<&qu......
  • 2024牛客寒假算法基础集训营4
    A.直接计算#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){inta,b,k;cin>>a>>b>>k;if(a>=k*b)cout<<"good";elsecout<&l......
  • 寒假训练第四周(牛客训练营)
    E-漂亮数组_2024牛客寒假算法基础集训营4(nowcoder.com)这题想多了,以为是一个dp优化,没想到贪心即可,dp比较弱,赶紧优化题解:找一个区间满足k倍即可,我们直接累加然后模k如果出现两次模k等于同一个数那么这个区间就是k的倍数记录即可简单贪心,没想到#include<bits/stdc++.h>//#p......
  • 2024牛客寒假算法基础集训营4 K.方块掉落
    线段树维护的信息有当前行有多少方块,一共有多少方块拿线段树维护一个矩阵就行,转移更新就是矩阵乘类似题有这个 牛客多校第二场-H-zhujio两题都基本上就是转移矩阵求出来正常建线段树,pushup就是直接矩阵乘 #include<bits/stdc++.h>usingnamespacestd;#defineen......