首页 > 其他分享 >牛客周赛 Round 69

牛客周赛 Round 69

时间:2024-11-25 18:24:42浏览次数:10  
标签:前缀 int sum ne 牛客 maxn 69 正数 Round

题解

赛时做题

A

入门题
等差数列,找公差,构造第三个即可

B

题意简单,考察字符串转化成数字

C

几何题,大概初中难度,用全等或者向量都可以(初做时废了半天劲,果然上了大学就废了

赛后补题

D

纯暴力,但是可以收获的有两点

  1. 将二维转化成一维处理
  2. bitset的使用和二进制操作
__builtin_popcount(i)返回i的二进制数中有多少个1


#include<bits/stdc++.h>

using namespace std;
int n,m,q;

bitset<49>b[9];//设置多少位的二进制数

bitset<49>a;

int ans;
int main(){
    cin>>n>>m>>q;ans=q+1;
    for(int k=0;k<=q;++k){
        string s,x;
        for(int i=1;i<=n;++i){//将矩阵转化成一维
            cin>>x;
            s+=x;
        }
        b[k]=bitset<49>(s);
    }
    int check=0;
    for(int i=0;i<(1<<q);++i){
        if(__builtin_popcount(i)>=ans) continue;
        bitset<49>c;
        for(int j=0;j<q;++j)
            if((i>>j)&1){
                c|=b[j+1];
            }
        if((c|b[0])==(1ll<<(m*n))-1 && (c&b[0])==0){
            ans=__builtin_popcount(i);
            check=i;
        }
    }
    if(ans==q+1) ans=-1;
    cout<<ans<<endl;
    if(ans!=-1){
        for(int i=0;i<q;++i){
            if(check>>i&1){
                cout<<i+1<<" ";
            }
        }
    }
    return 0;
}

E

值得学习的点:
对前缀和的精妙使用,还有前驱后驱的利用

从暴力的思想逐渐优化:
暴力找第一个点 ,找到后找第二个切割点(统计共有多少个点可以)
优化:

判断区间内正数个数,也用前缀和

(第二步用后缀和就可以优化)

判断切割点用前缀和判断区间和是否满足要求

#include<bits/stdc++.h>

using namespace std;
int n;
const int maxn=2e5+10;

int f[maxn];//后缀和 统计i点之后有多个合法的(可以切成全部和的1/3且有正数的)切割点
int nt[maxn];//后驱 i点及以后的第一个正数的位置(下标)
int ne[maxn];//前缀和统计正数的个数
long long sum[maxn];//前缀和
int a[maxn];
int main(){
    cin>>n;
    for(int i=1;i<=n;++i){
        cin>>a[i];
        sum[i]=sum[i-1]+a[i];
        ne[i]=ne[i-1]+(a[i]>0);//正数个数的前缀和
    }
    if(sum[n]%3){//不能均分
        puts("0");
        return 0;
    }
    nt[n+1]=n+1;
    for(int i=n;i>=1;--i){
        f[i]=f[i+1]+(sum[n]-sum[i-1]==sum[n]/3 && ne[n]-ne[i-1]);//i点之后 合法的第二个切割点总数
        nt[i]=a[i]>0?i:nt[i+1];//下一个正数的位置
    }
    long long ans=0;
    for(int i=1;i<=n;++i){
        if(sum[i]==sum[n]/3 && ne[i]){//找第一个切割点
            int t=nt[i+1];
            if(t<n)ans+=f[t+1];
        }
    }
    cout<<ans<<endl;
    return 0;
}

标签:前缀,int,sum,ne,牛客,maxn,69,正数,Round
From: https://www.cnblogs.com/guiyou/p/18568313

相关文章

  • CodeTON Round 9 (Div. 1 + Div. 2)
    CodeTONRound9(Div.1+Div.2)总结A自己推一下就能出来的,输出奇数即可。因为要递增,所以尽可能取小的数字。\(i=1\),余数肯定是\(0\),尽可能小,所以\(a_1=1\)。\(i=2\),余数尽可能小且不重,是\(1\),所以\(a_1=1+2=3\)\(i=3\),余数为\(2\),\(a_3=2+3=5\)。这样推导后知......
  • 【牛客训练记录】牛客周赛 Round 69
    训练情况赛后反思好吧,D题没想到二进制枚举,以为\(O(2^knm)\)不可做。。。A题要求要等差数列,我们先求公差,为两元素的最大值-最小值,再在最大值的基础上加上公差即可。#include<bits/stdc++.h>//#defineintlonglong#defineendl'\n'usingnamespacestd;voidsol......
  • 牛客小白月赛105 补题
    Blz的数字问题链接:B-lz的数字问题_牛客小白月赛105思路:多列举测试用例,考虑完整。首先判断是整数还是小数,小数分整数和小数两部分判断(函数调用最方便!)。注意有<小数的小数部分不够六位>的情况看个错误代码:tip(注释里):1.判断整数和小数应遍历整个数组,若出现".",则为小数,否则相反。......
  • 【MX-S7】梦熊 NOIP 2024 模拟赛 3 & SMOI Round 2
    俩签到俩不可做是吧。Rank【MX-S7-T1】「SMOI-R2」HappyCard签到题一号,以为撑死评个黄但没想到那么多人不会打扑克。考虑炸弹也是三带一,出三带一肯定更优秀。考虑将所有牌变为若干个三张和剩余的,那么三张先带单张,再将对子拆开带。那么现在就有以下几种情况:单张太多,那么......
  • 牛客周赛 Round 69(A~E)
    https://ac.nowcoder.com/acm/contest/96115#question真难过,一个小时竟然做不出F。没想到F是线段树的变式,我还想开7,8个树状数组进行维护,直接秀逗了。要做大物作业,先丢个题解吧A.构造C的歪#include<iostream>#include<queue>#include<map>#include<set>#include<vector>#in......
  • 【MX-S7】梦熊 NOIP 2024 模拟赛 3 & SMOI Round 2(同步赛)
    【MX-S7】梦熊NOIP2024模拟赛3&SMOIRound2(同步赛)\(T1\)luoguP11323【MX-S7-T1】「SMOI-R2」HappyCard\(20pts\)发现可以把「炸弹」也看做「三带一」。先使用「三带一」带走原用于出「单牌」的牌,若「三带一」还有剩余则尝试带走原用于出「对子」的牌,否则直接......
  • CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes!)(A - D) (C2 还在补)
    CodeTONRound9(Div.1+Div.2,Rated,Prizes!)4/11(ABC1D)A.ShohagLovesMod题目大意Shohag有一个整数nn。请帮助他找到一个递增的整数序列1≤a1<a2<…<an≤1001≤a1<a2<…<an≤100,使得对于所有的1≤i<j≤n1≤i<j≤n,都满足aimodi≠ajmodjaimodi≠ajmodj∗∗......
  • [CSS] Houdini CSS to animate linear gradient background
    https://developer.mozilla.org/en-US/docs/Web/API/Houdini_APIs<!doctypehtml><htmllang="en"><head><metacharset="utf-8"/><title>Houdini</title><linkrel="stylesheet"......
  • Cellebrite UFED 4PC 7.69 (Windows) - Android 和 iOS 移动设备取证软件
    CellebriteUFED4PC7.69(Windows)-Android和iOS移动设备取证软件TheIndustryStandardforLawfullyAccessingandCollectingDigitalData请访问原文链接:https://sysin.org/blog/cellebrite-ufed/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgC......
  • 牛客面试必刷TOP101之链表专项
    个人主页:C++忠实粉丝欢迎点赞......