num

A1003 Emergency (25分)

╄→尐↘猪︶ㄣ 提交于 2020-02-29 20:23:37
一、技术总结 这是一道考查Djiktra算法的题目,主要是求解最短路径的前提下,求每个城市点权的最大值,同时最短路径的条数。 只需要在Djikstra算法的基本架构下,添加一些条件即可,点权是添加一个数组weight存储每个点的权值,然后再创建数组w,用于存储。初始化是,除了起点s,w[s]=weight[s],其余都初始化为0,使用memset(w, 0, sizeof(w)),进行初始化。 而对于最短路径的条数,设置数组num,然后初始化,num[s] = 1,其余都是初始化为0,memset(num, 0, sizeof(num))。 还有就是书写的问题,注意关系。具体参考代码。 二、参考代码 #include<bits/stdc++.h> using namespace std; const int maxn = 510; const int INF = 100000000; int n, G[maxn][maxn]; bool vis[maxn] = {false}; int d[maxn];//用于记录最短路径 int num[maxn];//用于记录最短路径的条数 int weight[maxn];//记录城市中可以调动的人数 int w[maxn]; void Djikstra(int s){ fill(d, d+maxn, INF); memset(num, 0,

【力扣日记】258 各位相加

蹲街弑〆低调 提交于 2020-02-29 17:42:43
题目描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例:输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 算法 1、naive class Solution : def addDigits ( self , num : int ) - > int : while len ( str ( num ) ) > 1 : n = 0 for i in list ( map ( int , str ( num ) ) ) : n += i num = n return num 执行用时 :56 ms, 在所有 Python3 提交中击败了9.94%的用户 内存消耗 :13.4 MB, 在所有 Python3 提交中击败了27.81%的用户 A naive implementation of the above process is trivial. Could you come up with other methods? 2、ruler class Solution : def addDigits ( self , num : int ) - > int : if num > 9 : num = num % 9 if num == 0 : return 9 return

leetcode-四数相加II

穿精又带淫゛_ 提交于 2020-02-29 17:35:02
 题目来自LeetCode,链接: 四数相和II 。具体描述为:给定四个包含整数的数组列表A,B,C,D,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 − 2 28 -2^{28} − 2 2 8 到 2 28 − 1 2^{28} - 1 2 2 8 − 1 之间,最终结果不会超过 2 31 − 1 2^{31}-1 2 3 1 − 1 。  示例: 输入: A = [ 1, 2] B = [-2,-1] C = [-1, 2] D = [ 0, 2] 输出: 2 解释: 两个元组如下: 1. (0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0 2. (1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0  这个题目其实跟前面博客提到的 两数之和 很相似。如果我们把两个数组比如A和B中的数两两各自相加得到一个新的数组,对C和D也这么做,不就变成了对两个数组的操作。具体做的话就是用一个字典/Map保存{0-a-b->其出现次数},先遍历A和B

JavaScript 数据类型 及 转换

二次信任 提交于 2020-02-29 17:11:36
JavaScript 数据类型 及 转换 什么是数据类型   数据类型是数据在内存中的储存结构。   不同类型的数据,具有不同的特性,可执行不同的操作。       number 类型 - 数字类型   数字类型,专门保存所有数字的数据类型。   既可以表示整数,也可以表示浮点数,一个数字占8个字节。   数值的大小和存储空间无关。      - 注意:默认不加引号的类型全是数字类型。 常用方法   - number.toString(2/8/10/16...); // 以某种进制转换数字   - number.toFixed(2....); // 四舍五入到小数点后几位 案例代码 number.toString(2/8/10/16...); <script> var num1 = 7; console.log(num1.toString(2)); // 将num1转换为二进制,toString括号中写几就是几进制。 </script>       案例代码 number.toFixed(2....); <script> var price = 1.6; var money = 2; var back = money - price; console.log(back.toFixed(2)); //四舍五入到小数点后两位 </script>      string 类型 -

Python爬虫进阶 | 某音字体反爬分析

痴心易碎 提交于 2020-02-29 16:55:28
字体反爬案例 爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用 python 爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码。这种一般是网站设置了字体反爬。 1. 准备url 网址: https://www.iesdouyin.com/share/user/88445518961 2. 获取数据 分析字体加密方式 任务:爬取个人信息展示页中的关注、粉丝人数和点赞数据,页面内容如图 下 所示。 在编写代码之前,我们需要确定目标数据的元素定位。定位时,我们在 HTML 中发现了一些奇怪的符号,HTML 代码如下: 页面中重要的数据都是一些奇怪的字符,本应该显示数字的地方在 HTML 中显示的是""。 要注意的是,Chrome 开发者工具的元素面板中显示的内容不一定是相应正文的原文,要想知道 "" 符号是什么,还需要到网页源代码中确认。对应的网页源代码如下: </span><span class="follower block"> <span class="num"> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class=

volatile的原理分析

安稳与你 提交于 2020-02-29 16:16:49
前言:Volatile作为一个多线程开发中的强有力的轻量级的线程协助工具,在实际编程中随处可见,它比synchronized更加轻量和方便,消耗的资源更少,了解Volatile对后面了解多线程有很重要的意义,本篇博客我们就来探究如果在一个字段上加上Volatile,那么它实际上到底起了什么作用?以及是怎么工作的? 本篇博客的目录: 一:工作内存和主内存 二:volatile的两大作用 三:volatile一定是线程安全的吗? 四:Volatile的局限性和适用场景 五:总结 正文开始 一:工作内存和主内存 1.1:它们具有的特点 ①主内存是所有变量的存储地方,这包括所有你看到的变量包括实例变量、静态字段、数组对象的元素 ②工作内存是线程私有的,所有的线程在操作变量(读取或者赋值)的时候都必须在工作内存中完成,而不能在主内存中进行 ③不同的线程之间无法访问对方的工作内存中的变量,线程之间传递值需要在工作内存中进 行 1.2: 图示 该图主要模拟了5个线程的工作内存和主内存之间的交互,可以看出不同线程之间是不可以进行变量交换的,它们公用一个主内存,所有的变量传递都在主内存中进行完成 二:volatile的两大作用 2.1:线程可见性 这里的可见性是指若一个变量被Volatile修饰,那么假如A线程对其进行了修改操作,那么其他线程都会立刻拿到修改后的值

leetcode 162 寻找峰值

假装没事ソ 提交于 2020-02-29 15:54:53
这道题主要是题意的理解,题中“你可以假设 nums[-1] = nums[n] = -∞ 。”这句话暗示如果num[i] <num[i+1],那么峰值一定在i+1到数组末尾存在。 int findPeakElement(vector<int>& nums) { int l = 0,r = nums.size() - 1; while(l < r){ int mid = (l + r) >> 1; if(nums[mid] < nums[mid+1]) l = mid + 1; else r = mid; } return l; } 来源: CSDN 作者: 模式识别实验室主任 链接: https://blog.csdn.net/qq_35752161/article/details/104572916

JAVA实现简易计算器

和自甴很熟 提交于 2020-02-29 15:41:02
简易计算器,可实现任意长度带括号带优先级的 ‘加减乘除幂’ 运算 还未加入报错机制,需要求表达式书写正确,不能存在左右括号数目不等或右括号前没有数字或除数为0等情况 /* 科学计算器,可实现任意长度带括号带优先级的 '加减乘除幂' 运算 还未加入报错机制,需要求表达式书写正确,不能存在左右括号数目不等或右括号前没有数字或除数为0等情况 */ import java . util . Hashtable ; import java . util . Stack ; public class ScientificCalculator { public static double calc ( double a , double b , char operator ) { switch ( operator ) { case '+' : return a + b ; case '-' : return a - b ; case '*' : return a * b ; case '/' : return a / b ; case '^' : return Math . pow ( a , b ) ; } return 0.0d ; } //出栈两个操作数,一个操作符,运算结果入操作数 需重复运算,所以写成一个函数 public static void calcTwo ( Stack <

poj1118 Lining Up

一个人想着一个人 提交于 2020-02-29 12:21:16
Lining Up Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 16372 Accepted: 5145 Description "How am I ever going to solve this problem?" said the pilot. Indeed, the pilot was not facing an easy task. She had to drop packages at specific points scattered in a dangerous area. Furthermore, the pilot could only fly over the area once in a straight line, and she had to fly over as many points as possible. All points were given by means of integer coordinates in a two-dimensional space. The pilot wanted to know the largest number of points from the given set that all lie on one line. Can

P1314 聪明的质监员

限于喜欢 提交于 2020-02-29 11:16:26
原题连接 https://www.luogu.org/problemnew/show/P1314 首先题号好评QwQ~ 1314 乍一看此题,发现题目好像有点难理解,先带大家理解一下吧: 意思就是:我们要在第 i 个区间 [ L i , R i ] 里找到所有的 j,使得 w j >= W,求出这些 j 的价值总和及符合条件的 j 的个数,那么这个区间的贡献就是这个价值总和乘上 j 的个数,然后我们要算所有区间的贡献的总和 Y ,最后输出 Y - S 的绝对值的最小值,其中 W 可以自己定 。 既然 W 可以自己定,那么一个很显然的思路就是我们二分枚举 W,看看哪个 W 最合适不就好啦? 枚举的上下界 我们再回头看那个公式,显然若 W 变大,则 Y 变小(符合条件的 j 的数量少了); 若 W 变小,则 Y 变大; 那么如果 W 一直变小,直到所有矿石的 w i 都大于我们枚举的这个 W 的话,那么不就是所有的矿石都被我们给选上了?这时候就会产生最大的 Y; 同理,当 W 比所有矿石的 w i 都大时,所有的矿石我们都没选,这时候就会产生最小的 Y ; 所以我们便得出来上下界: 下界:最小的 w i - 1 ; 上界:最大的 w i + 2,这里为什么是 + 2 呢?因为 + 1就是所有矿石都不选的情况,我们枚举的时候也要考虑到这种情况。所以再 + 1 就囊括了所有的情况了;