tmp

POJ - 1664 放苹果(递归)

一曲冷凌霜 提交于 2020-03-26 19:51:08
题意:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 分析:枚举每个盘子可以放的苹果数都是0~M,最后去重就可以了。 #pragma comment(linker, "/STACK:102400000, 102400000") #include<cstdio> #include<cstring> #include<cstdlib> #include<cctype> #include<cmath> #include<iostream> #include<sstream> #include<iterator> #include<algorithm> #include<string> #include<vector> #include<set> #include<map> #include<stack> #include<deque> #include<queue> #include<list> #define Min(a, b) ((a < b) ? a : b) #define Max(a, b) ((a < b) ? b : a) typedef long long ll; typedef unsigned long long llu; const int INT_INF =

滑动窗口的最大值

落花浮王杯 提交于 2020-03-25 21:29:38
原文地址: https://www.jianshu.com/p/e9af38e066bf 时间限制:1秒 空间限制:32768K 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1},{2,3,[4,2,6],2,5,1},{2,3,4,[2,6,2],5,1},{2,3,4,2,[6,2,5],1},{2,3,4,2,6,[2,5,1]}。 我的代码 class Solution { public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { vector<int> res; int siz=num.size(); if(siz<1 || size<1 || siz<size) return res; if(size==1) return num; deque<int> tmp; for(int i=0;i<size;i++){ while((!tmp.empty())&&(tmp

hdu1495

寵の児 提交于 2020-03-25 13:26:18
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不能输出"NO"。 三个杯子来回倒,最终达到两个杯子里各一半的结果,很显然是宽搜,但是具体些搜索的时候就会发现来回倒的时候特别麻烦,if一大堆,直接导致了我写题时放弃了这道,后来百度到一位大佬的做法,发现自己说到底还是代码能力太差。大佬博客: https://blog.csdn.net/qq_34374664/article/details/51646060 三个杯子来回倒我们可以用循环结构来减少重复的代码量,这样一写,就好看多了。因为s<=100,我们开一个三维数组来记录每一个状态是不是被搜到过,我写题的时候傻了,以为开3个100的数组就可以了,后来发现不可以,竟然觉得不可做。 代码: #include<iostream> #include<cstring> #include<cstdio>

lc0324

一曲冷凌霜 提交于 2020-03-24 21:44:14
目录 ✅ 119. 杨辉三角 II 描述 解答 c/Java py ✅ 119. 杨辉三角 II https://leetcode-cn.com/problems/pascals-triangle-ii/ 描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 解答 他人: c/Java /** * 获取杨辉三角的指定行 * 直接使用组合公式C(n,i) = n!/(i!*(n-i)!) * 则第(i+1)项是第i项的倍数=(n-i)/(i+1); */ public List<Integer> getRow(int rowIndex) { List<Integer> res = new ArrayList<>(rowIndex + 1); long cur = 1; for (int i = 0; i <= rowIndex; i++) { res.add((int) cur); cur = cur * (rowIndex-i)/(i+1); } return res; } --- int* getRow(int rowIndex, int* returnSize) { *returnSize = rowIndex + 1; int* num = (int*) malloc ((rowIndex + 1) * sizeof(int)); for(int i =

ES6学习笔记-let和const命令

隐身守侯 提交于 2020-03-24 21:43:03
3 月,跳不动了?>>> ES6简介 ECMAScript 6.0(简称 ES6)的第一个版本在 2015 年 6 月发布,正式名称就是《ECMAScript 2015 标准》(简称 ES2015),标准在每年的 6 月份都会发布一次,命名规则为:ES+年份,ES6涵盖了ES2015-ES2019的所有标准,因此ES6是一个历史名词,含义是 5.1 版(2011 年,ECMAScript 5.1 版发布)以后的 JavaScript 的下一代标准。 重要案例 此页面案例参考于: ECMAScript 6 入门 ES6 规定let、const语句不出现变量提升,防止在变量声明前就使用这个变量,从而导致意料之外的行为。 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。(如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域) ES6的块级作用域 ES5 只有全局作用域和函数作用域,let实际上为 JavaScript 新增了块级作用域。 // IIFE 写法 (function () { var tmp =

执行命令行

与世无争的帅哥 提交于 2020-03-23 21:50:13
1、Linux下使用popen()执行shell命令( http://www.cnblogs.com/caosiyang/archive/2012/06/25/2560976.html ) 简单说一下popen()函数 函数定义 #include <stdio.h> FILE * popen(const char *command , const char *type ); int pclose(FILE *stream); 函数说明   popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这个管道必须由pclose()函数关闭,而不是fclose()函数。pclose()函数关闭标准I/O流,等待命令执行结束,然后返回shell的终止状态。如果shell不能被执行,则pclose()返回的终止状态与shell已执行exit一样。   type参数只能是读或者写中的一种,得到的返回值(标准I/O流)也具有和type相应的只读或只写类型。如果type是"r"则文件指针连接到command的标准输出;如果type是"w"则文件指针连接到command的标准输入。   command参数是一个指向以NULL结束的shell命令字符串的指针。这行命令将被传到bin/sh并使用-c标志,shell将执行这个命令。   popen(

快速求解两个时间之间的天数

淺唱寂寞╮ 提交于 2020-03-22 21:02:44
在此,给大家推荐一款使用频率非常高的时间类库--moment.js 详见官网: http://momentjs.com/ 已知一个起始时间一个结束时间,求这个时间段内的所有天数。 var a = moment([2016, 6, 12]); var b = moment([2016, 6, 22]); a.from(b); 当然啦,前提是需要引入moment.js的,可在官网下载。 方法二: var num = new Date("2016-06-22").getTime() - new Date("2016-06-12").getTime(); var days = num/1000/60/60/24; 如果想要获取这段时间内具体的日期,    var date = '2015-05-12--2016-06-12'.split('--'); function getDate(start,end){ start = new Date(start).getTime(); end = new Date(end).getTime(); var date = []; for(;start <= end;start += 86400000){ var tmp = new Date(start); date.push(tmp.getFullYear()+'-'+(tmp.getMonth()

945:使数组唯一的最小增量(C++)

自作多情 提交于 2020-03-22 10:57:05
题目地址: https://leetcode-cn.com/problems/minimum-increment-to-make-array-unique/ 题目描述 给定整数数组 A,每次 move 操作将会选择任意A[i],并将其递增 1 。返回使A中的每个值都是唯一的最少操作次数。 题目示例 示例 1: 输入:[1,2,2] 输出:1 解释:经过一次 move 操作,数组将变为 [1, 2, 3]。 示例 2: 输入:[3,2,1,2,1,7] 输出:6 解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。 可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一的。 提示: 0 <= A.length <= 40000 0 <= A[i] < 40000 解题思路 思路1:第一种思路是用数组统计出每个数出现的次数,然后对于每个重复出现的数,暴力地将它递增,直到它增加到一个没有重复出现的数为止。但这样的方法的时间复杂度较大,可以达到O(n^2) 思路2:另一种思路是首先对拿到的数组排序,然后用变量tmp初始化A[0],用于储存较大值,接下来,从后一个数开始遍历,如果发现后一个数比tmp大,则更新tmp,否则,将当前数A[i]调整为tmp+1所需次数,即tmp+1-A[i] 程序源码 class Solution {

1.Linux中安装LNMP过程

天大地大妈咪最大 提交于 2020-03-22 04:42:45
第一步安装mysql过程 安装包mysql-5.0.22.tar.gz,解压tar -zxvf mysql-5.0.22.tar.gz cd mysql-5.0.22 进行源码安装./configure --prefix=/usr/local/mysql 提示如下错误: configure: error: no acceptable C compiler found in $PATH See `config.log' for more details. 缺少gcc包,安装gcc:yum -y install gcc 再次源码安装mysql:./configure --prefix=/usr/local/mysql 提示: checking for termcap functions library... configure: error: No curses/termcap library found 缺少curses包:进行安装 yum -y install ncurses-devel 再次源码安装mysql:./configure --prefix=/usr/local/mysql 提示:Thank you for choosing MySQL! 进行编译:make && make install 提示: ../depcomp: line 512: exec: g++: not

HDU-6532 Chessboard 2019广东省省赛B题(费用流)

懵懂的女人 提交于 2020-03-21 15:35:29
比赛场上很容易想到是费用流,但是没有想到建图方法qwq,太弱了。 这里直接贴官方题解: 费用流。 离散化坐标,每行用一个点表示,每列也用一个点表示。表示第i-1行的点向表示第i行的点连边,容量为第i行及以后能拿的棋子数的上限,费用为0,同理表示相邻列的点两两连边。若第i行第j列上有棋子,则表示第i行的点向表示第j列的点连边,容量为1,费用为该棋子的价值。可以定义源点表示第0行,汇点表示第0列,源点到汇点的最大费用流即为答案。 就是按照题解的建图方法,还有一些小细节:先要排序排除无用限制来减少限制边数,不然会超时。我用的办法是,按限制从小到大排序, 大限制当且仅当它的行数小于小限制行数时才有用 。列同理。这里想不明白的建议画图细细想。然后就是连边来表示限制条件: 行的话就是(i-1)->i行连边,列的话就是i->(i-1)列连边 ,这是因为0行是源点0列是汇点所致的,行点要靠它的入边来限制流量,列点要靠出边来限制流量。 细节详见代码及注释: #include<bits/stdc++.h> using namespace std; const int N=5000+10; const int M=100000+10; const int INF=0x3f3f3f3f; int n,m,r,c,s,t,maxflow,mincost; int nx,ny,x[N],y[N],xx[N]