牛客 子序列的权值最小值(贪心)

2024-03-07 00:20

本文主要是介绍牛客 子序列的权值最小值(贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:https://ac.nowcoder.com/acm/contest/76803/A
来源:牛客网

题目描述
给定一个长度为 n n n 的数组 a a a,求数组所有非空子序列权值的最小值。
定义子序列 a i , a j , … , a k a_i,a_j,…,a_k ai,aj,,ak 的权值为 a i a_i ai & a j a_j aj & … & a k a_k ak
其中 & 为二进制中的按位与

输入描述:
第一行包含一个正整数 n n n ( 1 ≤ n ≤ 20 ) (1≤n≤20) (1n20) 代表数组长度。
第二行包含 n n n 个正整数 a i a_i ai ( 1 ≤ a i ≤ 1 0 9 ) (1≤a_i≤10^9) (1ai109)代表数组中每个数的值。

输出描述:
输出数组中所有非空子序列权值的最小值。

示例1

输入

6
1 1 4 5 1 4

输出

0

一个知识点: a a a & b < = m i n ( a , b ) b <= min(a,b) b<=min(a,b),所以每次 & 运算都一定会得到一个更小的数或者相等的数,不会出现更大的。

所以只要我们取一个变量为第一个最小的输入的值,然后让他从头 & 到尾,然后每次如果得到了更小的值,就更新最小值为这个更小的数。

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 25;
int a[N];
int main(){int n;cin >> n;for(int i = 1;i <= n;i++)cin >> a[i];sort(a+1,a+n+1);int res = a[1];int mm = a[1];for(int i = 1;i <= n;i++){if((mm = mm&a[i]) < res){res = mm;}}cout << res;return 0;
}

这篇关于牛客 子序列的权值最小值(贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781842

相关文章

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

poj 3258 二分最小值最大

题意: 有一些石头排成一条线,第一个和最后一个不能去掉。 其余的共可以去掉m块,要使去掉后石头间距的最小值最大。 解析: 二分石头,最小值最大。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <c

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

ural 1820. Ural Steaks 贪心

1820. Ural Steaks Time limit: 0.5 second Memory limit: 64 MB After the personal contest, happy but hungry programmers dropped into the restaurant “Ural Steaks” and ordered  n specialty steaks

ural 1014. Product of Digits贪心

1014. Product of Digits Time limit: 1.0 second Memory limit: 64 MB Your task is to find the minimal positive integer number  Q so that the product of digits of  Q is exactly equal to  N. Inpu

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr