牛客 /acm/problem/13223 竞标赛
牛客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 竞标赛相关推荐
- 牛客ACM模式标准输入
牛客ACM模式标准输入 1.cin 根据cin>>sth 中sth的变量类型读取数据,这里变量类型可以为int,float,char,char*,string等诸多类型.这一输入操作,在遇 ...
- 牛客网 OI 赛制测试赛
比赛链接:这里写链接内容 A 斐波那契 链接:https://www.nowcoder.com/acm/contest/181/A 来源:牛客网 设f[i]表示斐波那契数论的第i项 f[1]=1,f[ ...
- 2019牛客网暑期多校赛第七场C题Governing sand --思维+前缀和
链接:https://ac.nowcoder.com/acm/contest/887/C 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 65536K,其他语言13107 ...
- 2021年牛客跨年场有奖赛
牛客2020跨年场 有奖赛(奖品:
- 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)
文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...
- 【Java/总结/牛客/ACM赛制】 “中国东信杯”广西大学第四届程序设计竞赛(同步赛)
文章目录 题目链接 知识一览 题目列表 快输 F Antinomy与金手指(kmp) H Antinomy与法术威力(队列/区间最值) 题目链接 "中国东信杯"广西大学第四届程序设 ...
- 牛客ACM赛 B [小a的旅行计划 ]
链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...
- 牛客竞赛mjt的毒瘤赛
题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线. 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如 ...
- 2019牛客暑假多校训练赛第七场C Governing sand(暴力)
题目链接:https://ac.nowcoder.com/acm/contest/887/C 题意:给出n种树和n个h[i],c[i],p[i]代表每种树的高度,砍掉一棵的花费,树的个数.现在要求砍掉 ...
最新文章
- Tungsten Fabric SDN — 零宕机(ZIU)自动化运维
- Java程序员从笨鸟到菜鸟之(七十)细谈Spring(三)IOC和spring基本配置详解
- 数据库的一些基本知识
- 鼠标控制方向java代码_java鼠标操控小程序
- 反射笔记-----------------------------
- Linux内核Crash分析
- HttpClient通过Post上传文件(转)
- zz -- QQ圈子感想
- 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...
- TortoiseGit 推送本地仓库变动文件至远程仓库_入门试炼_06
- java怎么弄redis,java怎么使用redis
- 华为笔记本计算机在哪,新一代华为MateBook 的机会在哪里?
- docker 及 docker-compose 的快速安装和简单使用
- Spring Bean装配
- 尝试修改smali码破解App
- 用html语言制作表白动画,抖音很火的卡通做我女朋友表白html源码
- 【vue】vue中设置路径别名
- html5页面嵌入视频播放,使用HTML5在网页中嵌入音频和视频播放的基本方法
- 【Vue】学习笔记-组件传值的数据累加器
- ALSA编程细节分析
热门文章
- 找到了最喜欢的那首歌
- 那些无聊的人为什么排长队去买土掉渣烤饼?
- html iframe 传递数据,IFrame传入POST参数。
- DoS 拒绝服务攻击专题
- canvas绘制扇形,可以改变数量、扇形角度、扇形方向
- 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
- 电动汽车(EV)电池涂料市场现状及未来发展趋势
- :linux 字符串拼接,Shell 字符串拼接的实现示例
- 高斯滤波GaussianBlur()中参数详解
- 基于springboot的健身管理系统微信小程序源码和论文