ggreaterandgreater(求满足条件的子序列,bitset用法)(代码片段)

starve starve     2022-12-04     689

关键词:

题:https://ac.nowcoder.com/acm/contest/5667/G

题意:给定n个数的数组A,m个数的数组B,问在A中有多少个子数组满足Si>=Bi

分析:我们可以考虑记录合法子数组以数组A中的一个位置代表一个合法子数组(因为长度固定为m);

   设bitset  的ans和tmp,其中tmp为1的位置表示,对于当前的bi ,a数组中有哪些比b[i].val大;

   如果某个位置x比当前的b[i].val大于等于,那么x-b[i].id的位置就可能形成一个合法序列;

   最后答案就是要找出这些所有的开头(即ans中1的个数

   等价于tmp中1的位置向右移动b[i].id位

 

技术图片
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define MP make_pair
typedef long long ll;
const int mod=998244353;
const int M=150005;
const int inf=0x3f3f3f3f;
const ll INF=1e18;
bitset<150002>ans,tmp;
struct node
    int val,id;
a[M],b[M];
int main()
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i].val),a[i].id=i;
    for(int i=1;i<=m;i++)
        scanf("%d",&b[i].val),b[i].id=i;
    sort(a+1,a+1+n,[&](node A,node B)
        return A.val>B.val;
    );
    sort(b+1,b+1+m,[&](node A,node B)
        return A.val>B.val;
    );
    ans.set();///初始全1
    int nowi=1;
    for(int i=1;i<=m;i++)
        while(nowi<=n&&a[nowi].val>=b[i].val)
            tmp.set(a[nowi].id);
            nowi++;
        
        ans&=(tmp>>b[i].id);
    
    printf("%d
",ans.count());
    return 0;
View Code

 

 

求数组满足条件个数

1问题给定一个数组,求出满足条件的数字个数。2方法(1)使用main()函数,打出数组。(2)用循环遍历然后if判断做出统计(3)输出结果。publicclasstext07publicstaticvoidmain(String[]args)int[]a=20,45,78,34,16,3,99,56;第一步:将数组打印i... 查看详情

sql中关于or用法的一个疑点,求大侠们指点

...出来出现两次,sql是怎么处理的?按照你叙述的,只需要满足其中一个条件就可以出来。以例子来说,会返回只要大于40岁或者性别是女的数据都会出来,是一个结果集,不会出现2次。说的更通俗点,就是循环扫描一个表,用下... 查看详情

118.求满足特异条件的数列

#include<stdio.h>#defineNUM10/*允许分解的最大元素数量*/inti[NUM];/*记录分解出的数值的数组*/voidmain()intsum,n,total,k,flag,count=0;clrscr();puts("*********************************************************");puts("*Thisisaprogramtogetnumbersequencewith*"... 查看详情

满足各种条件时仅求最小值。 EXCEL 和/或 SMARTSHEET

】满足各种条件时仅求最小值。EXCEL和/或SMARTSHEET【英文标题】:SUMonlyminvalueswhenvariousconditionsaremet.EXCELand/orSMARTSHEET【发布时间】:2021-07-2911:54:27【问题描述】:表1InitialScoreActionsOCCriticalityDTPostScoreCurrentScoreResponsibleCompletedDueDate 查看详情

二分(代码片段)

...以用二分来解决。可以定义一个条件C(x) 那么就是求满足某个条件 C(X)的最小的x如果所有的x‘>=x都满足C(x‘),那么就可以用二分搜索来求最小的x左端点初始化为不满足条件的值,右端点初始化为满足条件的值,每次取... 查看详情

华为机试真题c++实现求满足条件的最长子串的长度(代码片段)

...是数字;2、字母可以在子串中的任意位置;如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。输入描述:字符串(只包含字母和数字)输出描述:子串的长度示例1  输入输出示例仅供调试,后台 查看详情

leetcode6057:求满足条件的子树节点的平均值的节点个数(周赛)(代码片段)

...       给你一棵二叉树的根节点root,找出并返回满足要求的节点数,要求节点的值等于其子树中值的平均值。注意:n个元素的平均值可以由n个元素求和然后再除以n,并向下舍入到最近的整数。root的子树由roo... 查看详情

leetcode6057:求满足条件的子树节点的平均值的节点个数(周赛)(代码片段)

...       给你一棵二叉树的根节点root,找出并返回满足要求的节点数,要求节点的值等于其子树中值的平均值。注意:n个元素的平均值可以由n个元素求和然后再除以n,并向下舍入到最近的整数。root的子树由roo... 查看详情

华为od机试真题python实现求满足条件的最长子串的长度(代码片段)

...是数字;2、字母可以在子串中的任意位置;如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。输入描述:字符串(只包含字母和数字)输出描述:子串的长度示例1  输入输出示例仅供调试,后台 查看详情

左神算法课子数组最大差值小于某阈值,求满足条件的子数组个数

题目描述:  解法思路:   本题其实是滑动窗口的变形。主体思路为:  1.从第一个元素开始依次向后遍历,同时维护两个窗口(由于要同时操作窗口的头部和尾部,故采用双端队列):      最大值窗口(... 查看详情

python计算100以内所有奇数的和

...现,在循环内部变量n不断自减,直到变为【-1】时,不再满足while条件,循环推出,代码为【foriinrange(0,100):ifi%2==1:sum+=i;】。Python求1到100的奇数和的方法:只要条件满足,就不断循环,条件不满足时退出循环。sum=0n=99whilen>0:sum=... 查看详情

mysql同一表同一字段满足不同条件的两次求和

求sum(score)当id满足(0,1,4)接着再求sum(score)当id满足(2,3,5)最终得到两个值,用一条sql写出来,跪求大虾来解答参考技术Aselectsum(score)fromtablewhereidin(0,1,4)unionallselectsum(score)fromtablewhereidin(2,3,5)这样处理即可本回答被提问者和网友采纳 查看详情

一道头条笔试题:求区间的个数(代码片段)

给定两个长度都为N的整型数组a[N]和b[N],求满足如下条件的闭区间个数:在区间[l,r]上,a中的任意元素都比b中的任意元素小。这个问题是O(N)复杂度。关键在于发现一个规律:如果在区间[l+d,r]上满足上述条件,那么在更小的区间... 查看详情

codeforces-1325fdfs树求简单环独立点集(代码片段)

...DFS树在DFS的时候如果遇到回边,判断这个环中的点是不是满足条件,满足直接输出。给出一个结论:如果不存在满足条件的简单环,那么一定存在满足条件的独立点 查看详情

在pl/sql中使用casewhen语句求两个条件合并统计的平均值

...句效果相同,其实就是类似于增加一个字段,这个字段,满足条件的为1,不满足的是0,这样sum的效果,就是将所有的1加起来,也就是所有满足条件的记录个数。而count,会不管是1还是0,都会统计,这样怎么算都是总条目数8个... 查看详情

设abc均是0到9之间的数字,abcbcc是两个三位数,且有:abc+bcc=532。求满足条件的所有abc的值。(代码片段)

输入描述:题目没有任何输入。输出描述:请输出所有满足题目条件的a、b、c的值。a、b、c之间用空格隔开。每个输出占一行。temp=[[a,b,c]forainrange(10)forbinrange(10)forcinrange(10)ifa*100+b*10+c+b*100+c*10+c==532]#枚举列表得到需要的值forsintemp: ... 查看详情

求数组中和为给定值的所有子序列

2017年网易游戏的一道编程题,大致意思是满足组合攻击技能,必须是所选择时技能的和为m(m>0),且所选的这些技能的乘积最大:分解后主解决两个问题:其一:求数组中和为m的所有子数组;其二:在满足一的条件下,求所... 查看详情

1.13.14

14:求满足条件的3位数描述编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:1.该数为完全平方数2.该数至少有2位数字相同例如,100同时满足上面两个条件。输入输入一个数n,n的大小不超过实际满足条件... 查看详情