牛客NC13223: 竞标赛

题目大意为:
第一个为小美的参赛积分
对数组中 除了第一个位置以外 进行从小到大排序
然后我们通过大的与大的比较 >> 淘汰较大的
小美一直与 存活的 最小的积分 进行比较 >> 当最小的积分都大于小美时 >> dfs 结束了

网上许多题解不是 dfs 解法的 >> 大多好像找规律 >> 数学 log 再除以 xx 就行了.

这里的 dfs 主要要关注 每次 小美要找到最小的那个积分 即 >> start 的下标

从第一次开始 >> 下标的变化 >> 1 3 7 …

大胆猜测 >> ( 2 n ) − 1 ( 2 ^ n) - 1 (2n)−1

DFS代码

import java.util.Arrays;
import java.util.Scanner;/*** @author lankeren* @ClassName jingbiaosai* @Deacription:* @create: 2020-11-09 20:43*/
public class Main {static int ans = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int own = 0;own = in.nextInt();// n 个参赛者int[] arr = new int[n];arr[0] = Integer.MIN_VALUE;for (int i = 1; i < n; i++) {arr[i] = in.nextInt();}Arrays.sort(arr);arr[0] = own;dfs(arr, 1, 1, 2);System.out.println(ans);}public static void dfs(int[] arr, int start, int step, int sum) {if (sum > arr.length) return ;int mx = 0;// [4] 1 2 [3]// [4] 1 2 [3] 5 [6] 7 [8]// [4] 1 2 3 5 6 7 [8] 9 10 11 [12] 13 14 15 [16]// start >> 规律 >> 1  3  7//   1*2^(n-1) + 1*2^(n-1) - 1;mx = arr[start + step - 1];// 如果当前小美的积分当前最小的  >>  还可以参加一轮if (arr[0] >= mx) {ans++;// own 每次和第一个(最小)的进行比较, >> 大的与大的比dfs(arr, start * 2, step * 2, sum * 2);}}}

这段代码 start 可以换成

cnt >> 表示第几轮筛选 >> 从 第 1 轮开始

public static void dfs(int[] arr, int cnt, int sum) {if (sum > arr.length) return ;int mx = 0;// [4] 1 2 [3]// [4] 1 2 [3] 5 [6] 7 [8]// [4] 1 2 3 5 6 7 [8] 9 10 11 [12] 13 14 15 [16]// start >> 规律 >> 1  3  7mx = arr[(int) (Math.pow(2, cnt) - 1)];// 如果当前小美的积分当前最小的  >>  还可以参加一轮if (arr[0] >= mx) {ans++;// own 每次和第一个(最小)的进行比较, >> 大的与大的比dfs(arr, cnt + 1, sum * 2);}}

牛客 /acm/problem/13223 竞标赛相关推荐

  1. 牛客ACM模式标准输入

    牛客ACM模式标准输入 1.cin 根据cin>>sth 中sth的变量类型读取数据,这里变量类型可以为int,float,char,char*,string等诸多类型.这一输入操作,在遇 ...

  2. 牛客网 OI 赛制测试赛

    比赛链接:这里写链接内容 A 斐波那契 链接:https://www.nowcoder.com/acm/contest/181/A 来源:牛客网 设f[i]表示斐波那契数论的第i项 f[1]=1,f[ ...

  3. 2019牛客网暑期多校赛第七场C题Governing sand --思维+前缀和

    链接:https://ac.nowcoder.com/acm/contest/887/C 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 65536K,其他语言13107 ...

  4. 2021年牛客跨年场有奖赛

    牛客2020跨年场 有奖赛(奖品:

  5. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  6. 【Java/总结/牛客/ACM赛制】 “中国东信杯”广西大学第四届程序设计竞赛(同步赛)

    文章目录 题目链接 知识一览 题目列表 快输 F Antinomy与金手指(kmp) H Antinomy与法术威力(队列/区间最值) 题目链接 "中国东信杯"广西大学第四届程序设 ...

  7. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  8. 牛客竞赛mjt的毒瘤赛

    题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线. 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如 ...

  9. 2019牛客暑假多校训练赛第七场C Governing sand(暴力)

    题目链接:https://ac.nowcoder.com/acm/contest/887/C 题意:给出n种树和n个h[i],c[i],p[i]代表每种树的高度,砍掉一棵的花费,树的个数.现在要求砍掉 ...

最新文章

  1. Tungsten Fabric SDN — 零宕机(ZIU)自动化运维
  2. Java程序员从笨鸟到菜鸟之(七十)细谈Spring(三)IOC和spring基本配置详解
  3. 数据库的一些基本知识
  4. 鼠标控制方向java代码_java鼠标操控小程序
  5. 反射笔记-----------------------------
  6. Linux内核Crash分析
  7. HttpClient通过Post上传文件(转)
  8. zz -- QQ圈子感想
  9. 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...
  10. TortoiseGit 推送本地仓库变动文件至远程仓库_入门试炼_06
  11. java怎么弄redis,java怎么使用redis
  12. 华为笔记本计算机在哪,新一代华为MateBook 的机会在哪里?
  13. docker 及 docker-compose 的快速安装和简单使用
  14. Spring Bean装配
  15. 尝试修改smali码破解App
  16. 用html语言制作表白动画,抖音很火的卡通做我女朋友表白html源码
  17. 【vue】vue中设置路径别名
  18. html5页面嵌入视频播放,使用HTML5在网页中嵌入音频和视频播放的基本方法
  19. 【Vue】学习笔记-组件传值的数据累加器
  20. ALSA编程细节分析

热门文章

  1. 找到了最喜欢的那首歌
  2. 那些无聊的人为什么排长队去买土掉渣烤饼?
  3. html iframe 传递数据,IFrame传入POST参数。
  4. DoS 拒绝服务攻击专题
  5. canvas绘制扇形,可以改变数量、扇形角度、扇形方向
  6. 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
  7. 电动汽车(EV)电池涂料市场现状及未来发展趋势
  8. :linux 字符串拼接,Shell 字符串拼接的实现示例
  9. 高斯滤波GaussianBlur()中参数详解
  10. 基于springboot的健身管理系统微信小程序源码和论文