生活再平凡,也是限量版

总要热爱着什么,才不会被这无趣的生活吞没

若心有所向,平凡的日子也会泛着光

心怀浪漫宇宙,也珍惜人间日常

A:卡片

题目描述:

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。

小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 11 拼到多少。

例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,

但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。

现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?

提示:建议使用计算机编程解决问题。

题解思路:

我们可以通过统计1---X花费每一种卡片的数量去判断是否能拼接X,如果不可以则输出的为X-1,如果可以则继续往下进行拼接

那么怎么样进行卡片使用的统计呢?

我们定义数组count[10] 分别用于表示0---9的使用量

然后每一次对X值每一位数进行判断,当count中有任意一位数超过2021时,结束

参考代码:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {int []count=new int[10];for(int i=1;;i++){int t=i;while(t!=0){//对当前值的每一位数进行判断count[t%10]++;if(count[t%10]>2021){//出现超过2021张卡片的时候System.out.println(i-1);//输出return;//强制结束}t/=10;}}}
}

B:路径

题目描述:

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。

小蓝的图由 2021 个结点组成,依次编号 1 至 2021。

对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。

例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

提示:建议使用计算机编程解决问题。

题解思路:

对于点 X,它可以通过 (x-1,x-2,x-3....x-21)获得,那么我们需要到达X点值最小,则对其取min即可,通过数学规律:a,b的最小公倍数=a*b/(a,b的最大公约数),同时,1与任何数的最小公倍数为该数本身,那么我们只需要从22开始到2021,每一次对能到达位置的值取最小即可

参考代码:

import java.io.*;
import java.util.Arrays;
public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st = new StreamTokenizer(br);static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));public static void main(String[] args) throws Exception {int []arr=new int[2022];Arrays.fill(arr,1999999999);//直接赋值最大,然后去求最小(经常被骂,但是还是习惯这样写,呜呜呜)for (int i=1;i<=22;i++ )arr[i]=i;//从1跳到x,最小公倍数为x,所以1---22的最小公倍数都是本体for(int i=22;i<=2021;i++){//从22到2021for(int j=1;j<=21;j++){//每一个i都可以从i-21至i-1过去arr[i]=Math.min(arr[i],arr[i-j]+jl(i,i-j));//我们选择保留最小}}pw.println(arr[2021]);pw.flush();}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}public static int gcd(int a, int b ) {//求取最大公约数return b !=0 ? gcd(b, a%b): a ; }public static int jl(int a, int b) {//求取最小公倍数return a*b/gcd(a,b) ;}
}

C:字符统计

题目描述:

给定一个只包含大写字母的字符串 SS, 请你输出其中出现次数最多的字符。

如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。

题解思路:

与卡片类似,我们通过数组去存储每一个字符出现的次数,最终选取次数最多的字符,有多个就依次输出

因为A-Z总共有26个字符,所以数组长度至少需要26

通过 charAt(i)-‘A’去对字符转换成0---25,分别对应A---Z,在输出的时候记得转换回来

参考代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int []arr=new int[27];String ss=scan.nextLine();//输入字符串int sum=0;//记录最多出现的次数for(int i=0;i<ss.length();i++) {arr[ss.charAt(i)-'A'+1]++;//对应字符+1(个人采取1---26,也可以用0---25,看习惯)sum=Math.max(sum,arr[ss.charAt(i)-'A'+1]);//更改出现最多次数}      for(int i=0;i<27;i++){if(arr[i]==sum)System.out.print((char)(i+'A'-1));//次数==最多次数即输出}}}

D:费用报销

题目描述:

小明在出差结束后返回了公司所在的城市, 在填写差旅报销申请时, 粗心 的小明发现自己弄丢了出差过程中的票据。

为了弥补小明的损失, 公司同意小明用别的票据进行报销, 但是公司财务 要求小明提交的票据中任意两张的日期差不小于 K 天, 且总金额不得超过实际 差旅费用 M 。

比如财务要求 K=7 时, 若小明提交了一张 1 月 8 日的票据, 小明就不能 提交 1 月 2 日至 1 月 14 日之间的其他票据, 1 月 1 日及之前和 1 月 15 日及之 后的票据则可以提交。

公司的同事们一起给小明凑了 N 张票据, 小明现在想要请你帮他整理一 下, 从中选取出符合财务要求的票据, 并使总金额尽可能接近 M 。

需要注意, 由于这些票据都是同一年的, 因此 12 月底的票据不会影响到 1 月初票据的提交。这一年不是闰年。

输入格式:

第 1 行: 3 个整数, N,M,K

第 2…N+1 行: 每行 3 个整数 mi,di,vi​, 第 i+1 行表示第 i 张票据时间 的月份 mi和日期 di,vi表示该票据的面值

题解思路:

PS:这题是01背包的变种问题,如果不会01背包的话建议先学01背包,不然看这篇会很头疼

我们可以吧日期统一起来,因为是在同一年内的,比如输入1  10  5,我们就看成10  5;输入是2  10  5,我们就看成(31+10) 5=41 5;这样子可以直接省去月份的干扰,同时方便后续的k值计算

我们通过排序,将日期在前的优先选择放入,后放入的和前面的进行对比差值是否小于k天,同时放入第i张票据时计算能满足的总金额数

最终在第n张票据放完以后,从右往左去找寻能满足的且小于M的最大金额,输出即可

参考代码:

import java.util.*;
import java.io.*;
public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st = new StreamTokenizer(br);static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));static int []sj ={0,31,28,31,30,31,30,31,31,30,31,30,31};//时间static int [][]arr = new int[1010][2];//存放输入static boolean [][]pd=new boolean[1010][5010];//判断前i个能组成的m值public static void main(String[] args) throws Exception {int n=nextInt();int m=nextInt();int k=nextInt();for(int i=1;i<=12;i++) sj[i]+=sj[i-1];for(int i=1;i<=n;i++){arr[i][0]=sj[nextInt()-1]+nextInt();//存放a月b日对应在一年中的第几天arr[i][1]=nextInt();}Arrays.sort(arr, 1, n + 1, Comparator.comparingInt(a -> a[0]));//排序,按照时间排序pd[0][0]=true;int l=0;for(int i=1;i<=n;i++){//n个商品,把第i个票据选择性放入while (arr[i][0] - arr[l + 1][0] >= k) l++;//当前票据和前面已经可以放入的票据有多少不起冲突for (int j = 0; j <= m; j++) {pd[i][j] = pd[i - 1][j];//前面已经可以存在的价值,放入新的以后同样可以存在if (j >= arr[i][1]&&pd[l][j - arr[i][1]]==true) pd[i][j]=true;//01模板样式}}for (int i = m; i >= 0; i--) {if (pd[n][i]) {pw.println(i);pw.flush();return;}}}public static int nextInt() throws Exception {//int型st.nextToken();return (int) st.nval;}public static long nextLong() throws Exception {//long型st.nextToken();return (long) st.nval;}
}

蓝桥冲刺31天之白色情人节相关推荐

  1. 蓝桥冲刺31天之第七天

    目录 A:三角回文数 B:数数 C:数组切分 D:倍数问题 一星陨落,黯淡不了星空灿烂: 一花凋零,荒芜不了整个春天. 如果命运是世界上最烂的编剧, 你就要争取做人生最好的演员. 即使生活在阴沟里,依 ...

  2. 蓝桥冲刺31天打卡—Day14

    目录 1.带分数 题目描述 思路 AC代码 2.走迷宫 题目描述 思路 AC代码 3.蓝桥幼儿园 题目描述 思路 并查集模板 AC代码 4.跳石头 题目描述 思路 AC代码 1.带分数 题目描述 题目 ...

  3. 蓝桥冲刺31天之316

    如果生活突然向你发难 躲不过那就迎面而战 所谓无坚不摧 是能享受最好的,也能承受最坏的 大不了逢山开路,遇水搭桥 若你决定灿烂,山无遮,海无拦 A:特殊日期 问题描述 对于一个日期,我们可以计算出年份 ...

  4. 蓝桥冲刺31天打卡—Day11

    1.天干地支 题目链接 输入样例 2020 输出样例 gengzi 思路 暴力模拟 题目中告诉我们2020年是庚子年,而庚是天干中的第七个(天干数组下标从0开始),所以要要对输入数加6后再模10,地枝 ...

  5. 蓝桥冲刺31天打卡—Day10

    1.

  6. 白色情人节 | 软萌小姐姐等你过节

    明天就是白色情人节啦,可惜许多小伙伴依然不能外出,不能和喜欢的 TA 见面. 但是没关系,Conflux 携手 TEEX 打造的小程序--画押已经上线啦,快来用区块链见证你的爱吧. 小伙伴们还可以邀请 ...

  7. OSChina 周二乱弹 ——白色情人节慢慢的把她抱到床上 结果……

    2019独角兽企业重金招聘Python工程师标准>>> @蓝一点 : 在那山的这边海的那边有一群程序员, 他们老实又胹腆, 他们聪明又有钱, 他们一天到晚坐在那里熬夜写软件, 饿了就 ...

  8. 蓝桥杯31天冲刺之十一 [java]

    文章目录 天干地支(模拟) 包子凑数(动态规划) 求值(暴力) 青蛙跳杯子(BFS) 天干地支(模拟) 题目链接:https://www.lanqiao.cn/problems/1029/learni ...

  9. 蓝桥杯31天冲刺之十 [java]

    文章目录 扫地机器人 全球变暖 机器人行走 数的幂次 扫地机器人 题目链接:https://www.lanqiao.cn/problems/199/learning/ 这个感觉有点难,放弃了 全球变暖 ...

最新文章

  1. 差分优化算法(DE)matlb源码中文注解
  2. Python查找-二分查找
  3. Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function
  4. 在Python中使用XGBoost
  5. JspWriter与PrintWriter的关系
  6. HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试
  7. Docker用Portainer将Solr集群添加入Repository
  8. 逐步回归 图像降维matlab,使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构...
  9. GreyBox和ThickBox
  10. textfield获取其中内容_用户认知视角下的产品信息获取体验度量体系研究
  11. chromium禁用ajax,页面加载时,jQuery AJAX不会在Chrome / Chromium中启动
  12. Java文件编码格式转换
  13. Python 标准库 —— os 路径(os.path)
  14. 计算机普通话培训开班简报,普通话培训第四期简报.doc
  15. 关于前几周项目进行的一些感受
  16. 重启windows资源管理器命令
  17. 网管员的最爱!解密六款低成本RADIUS
  18. PowerDesigner16.5下载和安装教程
  19. 吃货在东京 -- 记那段吃不饱的日子 之一 牛头自助烤肉店
  20. Python 爬虫 爬取 煎蛋网 图片

热门文章

  1. 实时汇率API接口,免费好用
  2. 【ASP.NET】第八课——GridView 控件的编辑功能优化,GridView控件中嵌套DropDownList控件
  3. linux 重新扫描硬件,Linux查看硬件信息以及驱动设备的命令
  4. C# 使用 OleDbConnection 连接读取Excel的方法
  5. 英语口语智能测试软件,高职高专英语口语智能对话测试系统应用研究
  6. 回归分析结果表格怎么填_回归分析表怎么看懂?
  7. easyhadoop完全配置实战
  8. optional的使用
  9. 改善高级定制时装状况探讨
  10. Ninja - chromium核心构建工具Jul 28, 2014