当前位置: 首页 > news >正文

网站建设准备今天重大新闻头条新闻

网站建设准备,今天重大新闻头条新闻,网站建设有什么优势,建筑常用的模板下载网站有哪些(第一个填空太简单,就不写了,根本不用代码,直接excel计算) 目录 蓝桥杯第二个填空,类斐波那契循环数 蓝桥杯JAVA.b组第三题 -分布式队列(模拟) 食堂(蓝桥杯D题) ​编辑 星际旅行(Floyd佛洛依德) 其余的有点变态,感觉学了好像…

(第一个填空太简单,就不写了,根本不用代码,直接excel计算)

目录

蓝桥杯第二个填空,类斐波那契循环数

蓝桥杯JAVA.b组第三题 -分布式队列(模拟)

食堂(蓝桥杯D题)

 ​编辑

星际旅行(Floyd佛洛依德)

        其余的有点变态,感觉学了好像也没用,还是算了


蓝桥杯第二个填空,类斐波那契循环数

首先难点就是这个题目需要读懂,当初我就是没读明白,才没写出来,我一般都是写力扣的题,力扣的题更加偏向于方法,或者说是业务上的,而蓝桥杯更偏向那种数学的类型

这个难点是弄懂那个求和符号,我好久没学,都忘了

比如说9999999这个是7位数,然后假如我们写第10位,就是

 public static void main(String[]args) {for(int i=10000000;i>=0;i--){char[] a=(i+"").toCharArray();int sum=0;int[]b=new int[a.length];for(int j=0;j<a.length;j++){b[j]=Integer.valueOf(a[j]+"");sum+=b[j];}while(true) {if (sum == i) {System.out.println(sum);return;} else if (sum > i) {break;}int tmp=sum;sum = 2 * sum - b[0];for (int j = 0; j < a.length - 1; j++) {b[j] = b[j + 1];}//更新最后一个值b[a.length - 1] = tmp;//处理前一个值,进行迭代处理}}

蓝桥杯JAVA.b组第三题 -分布式队列(模拟)

这个代码是我觉得看的最清晰的一个,而且他的想法很简洁,适合我这种菜鸡

这个题难度就是你选择的问题,你假如选择不正好的策略,会麻烦好多。像是我开始想用数组,因为下标不好表示,(开始我也是寻思用集合,但是困在一些问题上,选择自己更擅长的,但是确没想到更麻烦,而且没解出来)

  public static void main(String[]args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();//使用一个类似二维数组List<List<Integer>> nums=new ArrayList<>();for(int i=0;i<n;i++){//这个数组有添加n个队列nums.add(new ArrayList<>());}while (sc.hasNext()) {//通过command判断输入的例子。String command = sc.next();if (command.equals("add")) {int num=sc.nextInt();//假如此时需要添加元素,则需要在第一个集合里面添加元素nums.get(0).add(num);} else if (command.equals("sync")) {//获取到我们需要添加到哪号队列int seq = sc.nextInt();//nums获取到这个队列,假如里面的个数小于一号队列个数if(nums.get(seq).size()<nums.get(0).size()) {//nums的seq队列添加队列0里面的获取的是队列2的长度,队列2的下标永远是没到这个位置,所以需要到2号这个下标nums.get(seq).add(nums.get(0).get(nums.get(seq).size()));}} else {//找到n个队列中到元素个数int min_count = Integer.MAX_VALUE;for (int i = 0; i < n; i++) {//获取到每个元素,然后min代表最后的元素,模拟(很牛逼的思路,第二个)if (nums.get(i).size() < min_count) min_count = nums.get(i).size();}System.out.println(min_count);}}}

食堂(蓝桥杯D题)

 

这个题看着就恶心的模拟,但是假如说暴力穷举肯定也是可以,但是缺点是什么呢?

缺点就是她这个你很容易有想不到的情况,而且这些情况加一起,的顺序性就很恶心

所以相比较之下,还是下面这个方法更好

这道题我相信大部分人的思路肯定是从食堂桌子出发,那么我们需要做的就是分解他条件的思考

首先4个桌子,6个桌子,我们肯定是第一时间,先凑出来6人桌子,2个三人桌肯定是最优先,然后我们考虑的是什么,2+4肯定6个,2+2+2肯定6个,但是假如换个思路,假如已经坐了两个人,我们是不是可以默认这个食堂多了一个四人桌子,如果这么考虑,我们很多情况都可以合并到一起,只需要考虑四人桌子就行,

四人桌子肯定还是优先4人和2个2人,假如这些都完事了,说明什么情况呢,

存在六人桌子,存在4人和3人,但是不存在2人

存在4人桌子,可能存在两个人,可能存在三个人,(有人可能问我们在开始就判断了是否可能出现2个人,结果是一定不会有两个人,但是假如没有六人桌子的情况下,是否有可能出现2个人呢,也是有可能的)

这些情况综合起来只有一句话,就是一个桌子只能坐一个寝室,你2人,3人,4人都好

我只要把最后的桌子都放到一起,然后4人就给一个桌子(不管它是4人还是6人,反正一定能装下)

(这里补充:可能你觉得不靠谱,去试试假如5个人咋整,(5个人的前提是有2个人,2个人要么我存在6人桌子被分开,要不存在六个人的桌子,那样坐不了五个人,所以还是一个桌子一个寝室)

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[]args) {Scanner scan = new Scanner(System.in);int q=scan.nextInt();int[][]a=new int[q][5];//选择的角度应该是从桌子入手,//a[0][0]:两人寝室,[1]三人寝室,[2]四人寝室 [3]四个人桌子[4]六人桌子//更优秀的思想,把六个人的桌子转化为四个人的桌子for(int i=0;i<q;i++){for(int j=0;j<5;j++){a[i][j]=scan.nextInt();}int count=0;//a[0][0]:两人寝室,[1]三人寝室,[2]四人寝室 [3]四个人桌子[4]六人桌子//假如有六人桌子优先分配2个三人while(a[i][4]>0&&a[i][1]>=2){a[i][1]-=2;a[i][4]--;count+=6;}//假如有六人桌子优先分配1个两人,这样,就相当于多了一个四个人的桌子while(a[i][4]>0&&a[i][0]>0){a[i][4]--;a[i][0]--;a[i][3]++;//相当于多了一个四人桌子count+=2;}//假如四人桌子优先分配四个人的while(a[i][3]>0&&a[i][2]>0){a[i][2]--;a[i][3]--;count+=4;}//四人寝室没了,四人桌子优先给2个2人寝室while(a[i][3]>0&&a[i][0]>=2){//2人寝室则剪去2个a[i][0]-=2;a[i][3]--;count+=4;}//到了最后其实就都不是凑整数的情况,换句话说,咋吗都坐不满,6人能转化的,都转化了,转化不了的,也同化成4个人//因为假如你想5个人是3+2,相当于四人寝室住了3个人,换句话,最后四人桌子还是六人桌子已经没有区别了int num=a[i][4]+a[i][3];//以下的情况都是满足不了的while(num>0&&a[i][2]>0){num--;a[i][2]--;count+=4;}while(num>0&&a[i][1]>0){num--;a[i][1]--;count+=3;}while(num>0&&a[i][0]>0){num--;a[i][0]--;count+=2;}System.out.println(count);}scan.close();}}

最优分组(数学题)

​​​​​​​

星际旅行(Floyd佛洛依德)

static int n,m,q;static int[][] con;public static void main(String[] args) {Scanner zh=new Scanner(System.in);n=zh.nextInt();m=zh.nextInt();q=zh.nextInt();con=new int[n+1][n+1];//我们选择从[1-n]闭区间,不考虑0
//处理边界值比如0x之类的for(int i=1;i<=n;i++)Arrays.fill(con[i], 3010);for(int i=1;i<=n;i++)con[i][i]=0;for(int i=0;i<m;i++) {int a=zh.nextInt();int b=zh.nextInt();con[a][b]=1;con[b][a]=1;}//算法核心,核心问题也在这里k在最外面和k在循环的最里面有什么区别for(int k=1;k<=n;k++) {for(int i=1;i<=n;i++) {for(int j=1;j<=n;j++) {
//这个的核心是类似于动态规划从con[i][j],con[i][k]+[k][j],从i到j,需要i通过k到j
//相当于算从i到j位置的最短路径,con[i][j]=Math.min(con[i][j], con[i][k]+con[k][j]);}}}int ans=0;for(int i=0;i<q;i++) {int x=zh.nextInt();int y=zh.nextInt();int count=0;
//我们从x点出发,到达j点花费步骤假如小于y就说明可以到达,count++;for(int j=1;j<=n;j++)if(con[x][j]<=y)count++;//System.out.println(count);ans+=count;}System.out.printf("%.2f", (double)ans/q);}

        其余的有点变态,感觉学了好像也没用,还是算了

http://www.shuangfujiaoyu.com/news/21177.html

相关文章:

  • 本地安装网站无法连接数据库手游推广平台
  • 长沙3合1网站建设电脑零基础培训学校
  • 江西工程建设信息网站引擎网站
  • 全案网络推广公司恩城seo的网站
  • wordpress 腾讯云cdn北京网络推广公司wyhseo
  • 台州网站推广排名武汉网络营销推广
  • 长沙网络营销 公司超级seo工具
  • 微服务网站郑州做网站推广电话
  • 可以做彩票广告的网站吗百度搜索广告收费标准
  • 网网站制作品牌网络seo方案外包
  • 合肥营销型网站建设公司2022今天刚刚发生地震了
  • 青岛有没有专门做淘宝网站一天赚2000加微信
  • 网址和网站的区别网站运营管理
  • 哪个网站可以接任务做兼职整合营销的特点有哪些
  • 学做甜品的网站上海推广seo
  • 手机分销网站公司搜索引擎推广是什么意思
  • 东莞 网站 建设百度站长平台快速收录
  • 17zwd一起做业网站搜搜
  • 潮州东莞网站建设网站的设计流程
  • 东莞网站推广渠道搜索引擎公司排名
  • 做动态效果的插件网站网上在哪里打广告最有效
  • 知名企业有哪些长沙网站seo排名
  • 网站开发个人简介范文太原百度seo排名
  • 做公务员考试哪个网站好设计公司取名字大全集
  • 做什网站好网络广告是什么
  • 摩托车专业网站高明搜索seo
  • 湖北省建设人力资源网站首页网络营销的含义是什么
  • 有服务器还需要买网站空间吗百度快照客服人工电话
  • 做旅游宣传网站的流程潍坊关键词优化软件
  • 怎么样推广一个网站长沙百度推广公司电话