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

html免费素材合肥seo网站管理

html免费素材,合肥seo网站管理,o2o与网站建设论文,哪一个军事网站做的比较好前言 前些天一直没有发每日一题,是因为我最近在系统学习一些常考算法,时不时自己练一下,这样效率更高。其实之前都是看别人的思路,然后写的题解。虽然在一定程度上可以提升对题目的理解,但这样的效率太低了&#xff0…

前言

前些天一直没有发每日一题,是因为我最近在系统学习一些常考算法,时不时自己练一下,这样效率更高。其实之前都是看别人的思路,然后写的题解。虽然在一定程度上可以提升对题目的理解,但这样的效率太低了,为了写一道题的题解,花费大量的时间,到最后对于题目涉及到的算法也只是一知半解。

二分

这里就不过多解释定义,按照我的理解就是,定义左右指针,计算中间值是否符合题意,如果符合的话,就把左指针移动到mid上。否则就将右指针移动到mid-1处。我们来看一道真题:分巧克力。

题目描述

儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。
 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。

  为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:

    1. 形状是正方形,边长是整数  
    2. 大小相同  

例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。

当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?

输入

第一行包含两个整数N和K。(1 <= N, K <= 100000)  
以下N行每行包含两个整数Hi和Wi。(1 <= Hi, Wi <= 100000) 
输入保证每位小朋友至少能获得一块1x1的巧克力。   

输出

输出切出的正方形巧克力最大可能的边长。
 

解题思路

题目还是很好理解的,这道题也是典型的二分,和我之前讲的冶炼金属很类似。我们将

 所有的边长放在数轴上。如果mid指向的边长切出来的巧克力块数大于等于k的话,那这个位置有可能是答案,就将left移动到此处。反之,如果切出来的巧克力块数小于k,那说明不够分,那就将right移动到mid-1处。

代码实现

import java.util.Scanner;public class Main {private static int nums[][];private static int k;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();nums = new int[n][2];k = scan.nextInt();for (int i = 0; i < n; i++) {nums[i][0] = scan.nextInt();nums[i][1] = scan.nextInt();}
//        for (int i = 0; i < n; i++) {
//            System.out.println(Arrays.toString(nums[i]));
//        }//处理数据int left = 1;int right = 200050;while (left < right) {int mid = left + right + 1 >> 1;//规定:为true时,移动左指针if (check(mid))left = mid;else right = mid - 1;}System.out.println(left);}private static boolean check(int mid) {//切割巧克力int length = nums.length;int total = 0;for (int i = 0; i < length; i++) {total += (nums[i][0] / mid) * (nums[i][1] / mid);if (total >= k)return true;}return false;}
}

前缀和

对于一维的来说就简单了,类似数列求和。s[i]就表示从第一个数到第i个数的和。由于是类似数列的,所以就不多解释了。二维前缀和的话,后面遇到题目了再来细讲。

那么我们来看一道基础题。

题目描述

输入一个长度为n的整数序列。
接下来再输入m个询问,每个询问输入一对l,r。
对于每个询问,输出原序列中从第l个数到第r个数的和。

输入格式 

第一行包含两个整数n和m。
第二行包含n个整数,表示整数数列。
接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。

输出格式 

共m行,每行输出一个询问的结果。

数据范围 


1<l<r<n,
1<n,m<100000,
—1000<数列中元素的值<1000

代码实现

上代码

 

import java.io.IOException;
import java.io.*;public class Main {public static void main(String[] args) throws IOException {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int m = scan.nextInt();int[] nums = new int[n + 100];int[] s = new int[n + 100];for (int i = 1; i <= n; i++) {nums[i] = scan.nextInt();}//计算前缀和for (int i = 1; i <= n; i++) {s[i] = s[i - 1] + nums[i];}int l;int r;while(m-->0){l= scan.nextInt();r= scan.nextInt();System.out.println(s[r]-s[l-1]);}}
}//这里我自定义了一个输入类,用于快读的。class Scanner {private BufferedReader bf;private StreamTokenizer st;public Scanner(InputStream inputStream) {bf = new BufferedReader(new InputStreamReader(inputStream));st = new StreamTokenizer(bf);}public int nextInt() throws IOException {st.nextToken();return (int) st.nval;}public String nextLine() throws IOException {return bf.readLine();}
}

http://www.dtcms.com/wzjs/189218.html

相关文章:

  • 将网站加入小程序产品宣传方式有哪些
  • 厦门SEO_厦门网站建设百度一下百度主页
  • 线上教学网站软文营销的五大注意事项
  • 二级域名做网站好不好杭州网站推广公司
  • 做好产品策划的重要性seo关键词排名报价
  • 品牌网站建设解决方案营销的方法手段有哪些
  • 帮客户做ppt什么的在哪个网站百度seo收录
  • 做网站会什么软件网店推广方式有哪些
  • 政府网站维护方案十大免费无代码开发软件
  • 做设计必知网站永久免费linux服务器
  • 郑州做网站报价站域名多少钱百度搜首页
  • 做游戏模型参考的网站yw77731域名查询
  • wordpress文章列表模板seo和sem的区别是什么?
  • 做网站需要关注哪些青岛seo建站
  • 杭州网站制作关键词优化的作用
  • 网站建设 ui设计舆情分析系统
  • 做网站都用什么技术网站收录软件
  • 淘宝网站开发的意义今天的新闻
  • 建设一个网站平台的费用合肥关键词优化平台
  • 南通通州建设工程质量监督网站seo搜索引擎优化的内容
  • 昆明云南微网站搭建外贸谷歌推广怎么样
  • 高端网站建设北京如何优化推广中的关键词
  • 揭阳网站制作企业2023最近的新闻大事10条
  • 道真县住房和城乡建设局网站定制网站建设电话
  • 深圳燃气公司客服网站优化的方法与技巧
  • 个体工商户是否能够做网站搜索引擎网站优化和推广方案
  • 珠海建网站公司新平台怎么推广
  • 学习网页设计中遇到的心得体会seo求职
  • 静态网站开发 内容哪个公司的网站制作
  • 做网站得每年续费吗天津疫情最新消息