1、
给定一张包含N个点、N-1条边的无向连通图,节点从1到N编号,每条边的长度均为1。假设你从1号节点出发并打算遍历所有节点,那么总路程至少是多少?
输入描述:
第一行包含一个整数N,1≤N≤10^5。
接下来N-1行,每行包含两个整数X和Y,表示X号节点和Y号节点之间有一条边,1≤X,Y≤N。
输出描述:
输出总路程的最小值。
示例1
输入
4
1 2
1 3
3 4
输出
4
解析:这首先不是一个环,如果要想路径最短那么只能最长路径走一遍,短的路径走两遍(要返回1)。

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();ArrayList[] arr=new ArrayList[n+1];//邻接表for(int i=0;i<n;i++){int x=sc.nextInt();int y=sc.nextInt();arr[x].add(y);arr[y].add(x);}int len=0;Stack<Integer> stack=new Stack<>();stack.add(1);int[] visited=new int[n+1];visited[1]=1;//广度优先搜索while(!stack.isEmpty()){len++;Stack<Integer> s=new Stack<>();while(!stack.isEmpty()){int now=stack.pop();ArrayList<Integer> list=arr[now];for(Integer a:list){if(visited[a]==0){s.add(a);visited[a]=1;}}}stack=s;}System.out.println(2*(n-1)-len+1);}
}

2、
给你一个01字符串,定义答案=该串中最长的连续1的长度,现在你有至多K次机会,每次机会可以将串中的某个0改成1,现在问最大的可能答案
输入描述:
输入第一行两个整数N,K,表示字符串长度和机会次数
第二行输入N个整数,表示该字符串的元素
( 1 <= N <= 300000
, 0 <= K <= N )
输出描述:
输出一行表示答案
输入例子1:
10 2
1 0 0 1 0 1 0 1 0 1
输出例子1:
5
解析:滑动窗口,找出连续的最大值。一直滑动右窗口,如果0的值超过k,再滑动左窗口。

import java.util.Scanner;public class Main2 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int k=sc.nextInt();int[] num=new int[n];for(int i=0;i<n;i++){num[i]=sc.nextInt();}int left=0,right=0;int count=0;int max=Integer.MIN_VALUE;while(right<n){if(num[right]==0) count++;while(count>k){if(num[left]==0) count--;left++;}max=Math.max(max,right-left+1);right++;}System.out.println(max);}
}

3、你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点一份,现在问你最少需要选择多少元的商品才能使用这张券。
输入描述:
第一行两个正整数n和X,分别表示菜品数量和券的最低使用价格。(1≤n≤100, 1≤X≤10000) 接下来一行n个整数,第i个整数表示第i种菜品的价格。(1≤A_i≤100)
输出描述:
一个数,表示最少需要选择多少元的菜才能使用这张满X元减10元的券,保证有解。
输入例子1:
5 20
18 19 17 6 7
输出例子1:
23
解析:
01背包,动态规划,dp[x+1],定义未达到i元的最低消费,剩下j元,对于当前物品int[i],价值和花费为int[i],是否购买当前物品分两种情况:
当前价值j不够或者刚好能够购买物品i,买了物品i不能买其他物品了,dp[j]是前i-1件的最小价值,与当前价值作比较;
当前价值j超过了物品i的价值,买了物品i,还能买其他物品。

import java.util.Arrays;
import java.util.Scanner;public class Main3 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int x=sc.nextInt();int[] arr=new int[n];for(int i=0;i<arr.length;i++){arr[i]=sc.nextInt();}//dp[i]表示达到i元的最低消费int[] dp=new int[x+1];dp[0]=0;Arrays.fill(dp,100001);for(int i=0;i<n;i++){for(int j=x;j>=0;j--){if(j>arr[i]){dp[j]=Math.min(dp[j],dp[j-arr[i]]+arr[i]);}else{dp[j]=Math.min(dp[j],arr[i]);}}}System.out.println(dp[x]);}
}

4、
公园里有N个花园,初始时每个花园里都没有种花,园丁将花园从1到N编号并计划在编号为i的花园里恰好种A_i朵花,他每天会选择一个区间[L,R](1≤L≤R≤N)并在编号为L到R的花园里各种一朵花,那么园丁至少要花多少天才能完成计划?
输入描述:
第一行包含一个整数N,1≤N≤10^5。
第二行包含N个空格隔开的整数A_1到A_N,0≤A_i≤10^4。
输出描述:
输出完成计划所需的最少天数。
示例1
输入
5
4 1 8 2 5
输出
14
解析:例如 4 1 8 2 5
因为最小的肯定会先变为0,如果让所有的值都先变为最小值,即可一起变为0
遍历,如果前者的值大于后者,就取差值,这个差值n表明经过n天,这两个花园的花一样。
即4 1 8 2 5 -经过3天> 1 1 8 2 5 -经过6天> 1 1 2 2 5 ->再经过5天就都为0了。

import java.util.Scanner;public class Main4 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] num=new int[n];for(int i=0;i<n;i++){num[i]=sc.nextInt();}int res=0;for(int i=1;i<n;i++){if(num[i-1]>num[i]){res+=num[i-1]-num[i];}}res+=num[n-1];System.out.println(res);}
}

5、
小明同学在参加一场考试,考试时间2个小时。试卷上一共有n道题目,小明要在规定时间内,完成一定数量的题目。 考试中不限制试题作答顺序,对于 i 第道题目,小明有三种不同的策略可以选择: (1)直接跳过这道题目,不花费时间,本题得0分。 (2)只做一部分题目,花费pi分钟的时间,本题可以得到ai分。 (3)做完整个题目,花费qi分钟的时间,本题可以得到bi分。 小明想知道,他最多能得到多少分。
输入描述:
第一行输入一个n数表示题目的数量。
接下来n行,每行四个数p_i,a_i,q_i,b_i。(1≤n≤100,1≤p_i≤q_i≤120,0≤a_i≤b_i≤1000
)。
输出描述:
输出一个数,小明的最高得分。
示例1
输入
4
20 20 100 60
50 30 80 55
100 60 110 88
5 3 10 6
输出
94
解析:0-1背包问题,使用一维动态规划,dp[i]表示在花费i时间得分的值。

import java.util.Scanner;public class Main5 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[][] num=new int[n][4];for(int i=0;i<n;i++){for(int j=0;j<4;j++){num[i][j]=sc.nextInt();}}int[] dp=new int[121];for(int i=0;i<n;i++){for(int j=120;j>=0;j--){if(num[i][0]<=j){dp[j]=Math.max(dp[j],dp[j-num[i][0]]+num[i][1]);}if(num[i][2]<=j){dp[j]=Math.max(dp[j],dp[j-num[i][2]]+num[i][3]);}}}System.out.println(dp[120]);}
}

6、
一条直线上等距离放置了n台路由器。路由器自左向右从1到n编号。第i台路由器到第j台路由器的距离为| i-j |。 每台路由器都有自己的信号强度,第i台路由器的信号强度为ai。所有与第i台路由器距离不超过ai的路由器可以收到第i台路由器的信号(注意,每台路由器都能收到自己的信号)。问一共有多少台路由器可以收到至少k台不同路由器的信号。
输入描述:
输入第一行两个数n , k(1≤n , k≤10^5)
第二行n个数, a1 , a2 , a3……… , an(0≤ai≤10^9)
输出描述:
输出一个数,一共有多少台路由器可以收到至少k台不同路由器的信号。
示例1
输入
4 4
3 3 3 3
输出
4
解析:使用差分数组,思想是,如果是3路由器在发出信号,如果1能得到信号,那么2也能,如果5不能得到信号,那么6也不能。所以,可以利用差分的思想,当面路由的信号都是可以累加前面的路由器的信号的。(为什么可以累加前面的,因为如果1可以得到,2也可以,但是在进行统计的时候,只统计到边界,也就是最左边可以到1,那么统计2的时候是可以到1的+正好边界可以照到2的)。

import java.util.Scanner;public class Main6 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int k=sc.nextInt();int[] router=new int[n];//这个就是差分数组for(int i=0;i<n;i++){int num=sc.nextInt();int start=Math.max(0,i-num);router[start]++;if(num+i+1<n){router[num+i+1]--;}}int ans=0;int sum=0;for(int i=0;i<n;i++){sum+=router[i];if(sum>=k){ans++;}}System.out.println(ans);}
}

7、
在D塔2这款游戏中,英雄和小兵都可以对对方的防御塔造成伤害,但是只有当对敌方防御塔最后的伤害是由英雄造成时,才会得到相应的金钱奖励。 现在小明正在玩D塔2,操作英雄带着一波兵进入了对方的塔下进行攻击。已知: 1. 一共有n个小兵,小兵的攻击力为d,所有小兵对塔的攻击是同时进行的,小兵的攻击冷却为t0。 2. 小明的英雄有一个技能可以对塔造成伤害,伤害值为x;英雄的普通攻击也可以对塔造成的伤害,伤害值为y。小明的英雄普通攻击的冷却为t1,技能冷却为t2。 3. 小兵的攻击,小明的普通攻击和小明的技能攻击,只要冷却时间一到,就会马上攻击;小明的普通攻击和技能攻击可以同时施展;如果小兵和英雄同时攻击,小兵的伤害算在前。 已知现在对方的塔还剩下s的血量,所有小兵的第一次攻击和英雄的第一次普通攻击和技能攻击在初始时刻同时进行,问小明可以得到破坏该塔的金钱奖励么? 注意:这里冷却是指连续两次攻击之间的等待时间,英雄的普通攻击和技能攻击的冷却两者互不干预。如果冷却是1,某次攻击发生在时间2,那么时间3才可以继续攻击。假定攻击立即生效。
输入描述:
第一行一个整数T,表示测试组数,1≤T≤10;
接下来一行一个整数s,表示塔的剩余血量,1≤s≤10000;
接下来一行4个整数n,d,x,y,含义如题面,1≤n,d,x,y≤100;
接下来一行3个整数t0,t1,t2,含义如题面,1≤t0,t1,t2≤100。
输出描述:
对于每组测试数据输出”YES”表示小明的英雄可以补到,”NO”表示不能。(输出不包括引号)

import java.util.Scanner;public class Main7 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int T=sc.nextInt();for(int i=0;i<T;i++){int s = sc.nextInt();int n = sc.nextInt();int d = sc.nextInt();int x = sc.nextInt();int y = sc.nextInt();int t0 = sc.nextInt();int t1 = sc.nextInt();int t2 = sc.nextInt();int j=0;//用来计时while(true){if(j%t0==0){s-=n*d;if(s<=0){System.out.println("NO");break;}}if(j%t1==0) s-=y;if(j%t2==0) s-=x;if(s<=0){System.out.println("YES");break;}j++;}}}
}

美团2019编程汇总相关推荐

  1. 2019“编程的夏天”完美收官!这些00后点燃了这个盛夏

    欢迎来到由网易云信独家冠名的2019"编程的夏天"! 在经历3个赛段的激烈角逐后,这场编程盛会终于在杭州网易大厦完美收官. 在每一个赛段刚开始的时候,都会有一个开场表演.作为&qu ...

  2. 2019文献汇总 | 单细胞与病毒感染

    我的单细胞测序project主要是做炎症相关的单细胞转录分析,在检索paper的过程中,发现有关单细胞测序和病毒相关的文献是很少的,大致统计一下也不过十几篇,追根究底可能有两个方面的原因: (1)我们 ...

  3. 2018美团点评编程题第一题

    晚上参加美团的笔试,今天从坐了一天的车,到了学校匆忙吃了饭,然后就开始了.确实是,脑子有点不灵光. 编程的第一题: 给定一个序列,输出这个序列子串的和为K的倍数的子串的长度,如果有重复,输出最大长度. ...

  4. CVPR 2019 论文汇总(按方向划分,0409 更新中)[转载]

    转载链接:http://bbs.cvmart.net/topics/302/cvpr2019paper 作为计算机视觉领域三大顶会之一,CVPR2019(2019.6.16-6.19在美国洛杉矶举办) ...

  5. 一周竞赛资讯|CodeM 2018美团点评编程大赛启动

     (本内容转载自公众号"科技与Python") 如今,小程序小游戏已经成为继手游之后,中小游戏企业公认的下一个风口.CodeM是由美团点评主办的编程竞赛,旨在展示和激发软件技术人才 ...

  6. 学习计算机游戏编程,在线游戏学编程,游戏编程汇总

    21世纪必备技能中,计算机成了现在流行的热门课程,今天小编给大家介绍了一些和游戏结合的编程学习平台,让大家对这门枯燥乏味的编程学习尽量变得有趣.下面介绍的游戏编程中有适合作为入门的编程游戏,还有些可能 ...

  7. 2018美团CodeM编程大赛 Round A Problem 2 下棋 【贪心】

    应该一眼看出来是贪心题,然后想最优解是什么.正确的贪心策略是[原棋盘上每个位置的棋子]都往最近的左边[目标棋盘上棋子]移动,如果左边没有棋子了那就闲置最后处理,如果目标棋盘在该位置上也有棋子,那就算距 ...

  8. 2018美团CodeM编程大赛资格赛第一题

    一.问题描述 题目描述 美团在吃喝玩乐等很多方面都给大家提供了便利.最近又增加了一项新业务:小象生鲜.这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到 ...

  9. MWC 2019新品汇总:5G+折叠屏开启的新时代?

    PConline原创 作者:木兮 责任编辑:zengyaoxin [PConline 杂谈]作为智能机领域的开年盛会,每年的MWC展都是各厂商秀肌肉的最佳舞台.显然,在5G与折叠屏两个关键词的带领下, ...

最新文章

  1. 【转载】#pragma once与#ifndef #define #endif的区别
  2. linux网络编程、socket编程
  3. Linux中实现远程登录Xshell和Xftp
  4. 互斥锁(python 版)
  5. java框架ssh实验报告_基于SSH的实验报告提交系统
  6. Google I/O 2018 之后, Android 工程师将何去何从?
  7. asp.net 2.0 中如何让membership接口使用自定义数据库。
  8. 数值溢出(arithmetic overflow)问题与解决方案
  9. 【div+css】两个div,如何让内层的div在外层div中水平垂直居中
  10. 不要随便参加业主群的赏月大赛
  11. lingo入门教程之一 --- 初识lingo
  12. GIF Movie Gear逆向实战+注册代码+补丁
  13. 安装黑苹果目前最详细教程
  14. sqlserver如何快速生成不重复的随机数据
  15. 便利贴--14{GIF录制工具}
  16. Android Audio 音频路由
  17. android 显示线方向,Android recycleview 分割线彩蛋
  18. 【揭密:刘强东9年密谋的商业布局—京东快物流背后的核心技术盘点】
  19. 【蓝桥杯Java】棋盘放麦子
  20. execve的使用说明

热门文章

  1. 怎么将不可编辑的英文PDF文档翻译成中文
  2. java 生成短链接_java调用百度API生成短链接(一)
  3. java编写爬虫_Java怎么写网络爬虫?分分钟带你爬取,源码
  4. 王艾老哥------不是境况造就人,而是人造就境况。
  5. 智加科技完成A+轮融资,推动物流产业升级
  6. sw转cad映射文件_SW转CAD图层映射
  7. turtle画奥运五环图
  8. 如何用Python画奥运五环——circle()
  9. 一条光纤引发的VMware性能异常
  10. SpringBoot集成腾讯云短信实现注册/登录功能