自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

神様いないの日々

まだまだ行けます

  • 博客(33)
  • 收藏
  • 关注

原创 ZJOI2010统计前n个数中各个数码出现的次数

题目链接:ZJOI2010 count 数字计数题意就是统计某个区间之内的各个数码出现的次数。明显的数位dp。这里的做法事实上可以进一步的通过空间换时间,比如在dp记录中增加num和lead状态,这样可以减少后续的递归次数。大概可以从18ms减少到11ms。#include <iostream>#include <limits.h>#include <vec...

2020-04-25 23:22:43 279

原创 为什么-1不能和vector.size()比较

为什么-1不能和vector.size()比较在使用vector.size()做比较的时候可能会出现如下情况:vector<int> nums={4,8,10,240};int len=-1;if(len<nums.size()) len=nums.size();cout<<len<<endl;此时程序的输出是-1而不是预想中...

2020-04-08 22:52:35 403

原创 HDU - 3974 Assign the task DFS括号引理+线段树

原题目链接题意是给你一棵树,然后有两类操作,一种是将某个节点以及它所有的子孙修改成某个数,另一种是查询该节点的值。所有节点的初始值为-1;思路说实话不好联想到线段树上来,如果用暴力修改每棵子树的话每次修改的复杂度都可以达到O(n),不过我当时想到可以另外建立一棵结构相同的懒惰标记的树。但是复杂度并没有变化。在学习图论的时候学DFS生成树的时候有一个叫做括号引理的结论。对于每个节点u,设d...

2020-03-20 13:22:13 337

原创 HDU 1203 01背包

I NEED AN OFFERTime Limit: 2000/1000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 37102&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 14891Pr...

2019-03-01 22:16:14 180

原创 关于邻接矩阵和邻接表

关于临界矩阵和邻接表的使用情况在很多图论的题目中,如果题目本身没有明确指出两个顶点只有最多只有一条直达的边的话那么最好使用邻接表来存储所有的边,因为邻接矩阵会用某一条边来覆盖之前的边,这条边可以是最后输入的边,也可以是你设定了相应条件的边,如果这下边的边权不一样,就会很容易出现错误。比如求最短路的时候用之后出现的边覆盖了最短的边,或者是求边的入度出度的时候只记录了一条边以至于出错。HDU 33...

2019-02-26 20:48:26 302

原创 上海交通大学复试题 最短路径

上海交通大学复试题 最短路径时间限制:1秒空间限制:65536K热度指数:3277算法知识视频讲解校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。题目描述N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离输入描述:第一行两个正整数N(2&lt;=N&lt...

2019-02-26 15:17:42 715

原创 HDU 2094 产生冠军 判断能否拓扑排序

产生冠军Time Limit: 1000/1000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 23900&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 10775Problem Descr...

2019-02-24 22:32:20 137

原创 牛客网 上海交通大学 整除问题

整除问题时间限制:1秒空间限制:65536K热度指数:2120算法知识视频讲解校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。题目描述给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。输入描述:两个整数n(2&lt;=n&lt;=1000),a(2&lt;=a&lt;=1000)输出描述:一...

2019-02-23 21:32:57 446

原创 哈夫曼树的WPL值的计算

在计算WPL值的时候一般是用叶子节点的权值乘上其路径长度,但是实际上在构建哈夫曼树的过程中我们其实已经计算过路径长度了,即WPL = 哈夫曼树中所有非叶子结点的权值之和举个例子:构造 1 2 2 5 9的哈夫曼树并计算其WPL值。上图即为构建出来的HuffmanTree,WPL= (1+2)* 4 + 3 * 2 + 5 * 2 + 9 =37这个是使用权值乘以路径长度,但是在计算...

2019-02-22 14:11:18 61453 2

原创 牛客网 校招题 使用栈进行表达式求值

牛客网 校招题 使用栈进行表达式求值简单计算器时间限制:1秒空间限制:65536K热度指数:2762校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。题目描述 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入描述: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过20...

2019-02-21 21:38:10 422

原创 最小邮票数

牛客网 计算机历年考研复试 最小邮票数题目描述&amp;nbsp; &amp;nbsp; 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。&amp;nbsp; &amp;nbsp; 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。输入描述:&amp;nbsp;&amp;nbsp;&amp;nbsp; 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M&amp;lt;

2019-02-19 15:46:41 114

原创 牛客网 计算机理念考研复试机试题 N的阶乘

牛客网 计算机理念考研复试机试题 N的阶乘题目求n的阶乘,n最大为1000,long long也存不下,考的是大整数的乘法和加法,即高精度。#include &lt;iostream&gt;#include &lt;queue&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#include &lt;map&gt;#incl...

2019-02-18 20:31:24 168

原创 warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

在C++11中有明确规定char* p = "abc"; // valid in C, invalid in C++如果你进行了这样的赋值,那么编译器就会跳出诸如标题的警告。但是如果你改成下面这样就会通过warningchar* p = (char*)"abc"; //OK或者这样:char const *p="abc";//OK 这到底是怎么一回事呢?事实上,我们在学习c或者c...

2019-01-29 23:00:52 31985 10

原创 WOJ 1006 Language of Animals

使用BFS求最短路 在进行图的学习的时候大家都有学过最短路问题,其中Dijkstra算法和Floyd算法是最经典的了。可是这两个算法在时间复杂度上有着一定的缺陷,单源最短路Dijkstra算法的时间复杂度是O(n2),任意两点最短路Floyd算法的时间复杂度是O(n3),在图比较小的时候这些算法是可以满足要求的。但是也会有其他的一些比较特殊的情况,比如说所有边权都是1的单源最短路应该如何求解呢?...

2019-01-26 10:36:09 636

原创 WOJ 1005

01背包前言 背包问题本身已经是老生常谈了,但是这依旧是一个十分经典的问题,初学动态规划的朋友们肯定都绕不过它。网上已经有了很多十分优秀的背包问题讲解,譬如经典的《背包九讲》,但是我自己学了背包之后发现一个问题就是理解不够透彻,见到一个问题学一次,学一次就能刷几道题。现在我自己重新做了一些算法题,遇到了简单的01背包依旧不知道怎么做,于是就凭借零散的记忆和自我理解,对这些问题进行了求解,在这里...

2019-01-24 23:36:25 229

原创 UVA-10635 LCS转化为LIS

题意:给定两个序列一个长度为p+1,一个为q+1,求两序列的LCS,序列中每个数字不重复,最大值为n*n,n不大于250。思路:每个数都不重复,所以可以将源数据和下标置换,对数列做一个哈希变换,另一个数列也做相同的变换就可以的到一个新的数列。可以转换为求新序列的LIS。时间复杂度就会降到O(nlogn)。原因可以这样思考,由于b中的数字是通过a的变换得到的,所以b的所有子集都是a的一个子集,但是顺序

2017-11-09 22:33:09 260

原创 UVA-12563 01背包

题意:去KTV唱歌,给定最大时间,求不超过这个时间能唱的最多歌曲,在有至少1秒的情况下还可以唱一首678秒的劲歌金曲。最大时间范围不超过1e9。歌曲数量不超过50首,每首歌长度不超过3分钟。思路:关于范围,不要给题目中的t的范围是1e9吓到了,这个范围看似很大,但是题目限制了每首歌的时间范围和歌曲的数目,总体算一下其实不到1e4。所以可以直接用时间作为背包,dp[v]表示时间为v的情况下能唱的最多歌

2017-10-29 23:13:26 210

原创 HDU-1864 01背包

题意:给定n张发票,每张发票有m中项目,其中只有A,B,C三种发票可以被报销,每张发票单种报销上限是600,单张发票最大报销额为1000,最终最大报销额为q。求能够报销的最大金额。思路:01背包,报销金额是浮点数,所以改用发票数作为背包,背包容量是满足报销条件的发票数cnt。物品价值是每张发票报销额,存在val中。转移方程dp[v]=max(dp[v],dp[v-cost]+weight)。另外注意

2017-10-24 20:06:40 228

原创 HDU-2955 01背包

题目链接:杭电oj高校二级域名一律不得访问,有机会再补上(flag)题意:题意读了很久才懂。一个强盗想要抢劫,他有一个被抓的最大概率,他抢劫每个银行都有一个相应的概率,希望可以尽可能多的抢劫,但是总的被抓概率不会低于给定的概率。思路:可以看出来是一个01背包,但是如果直接用最大概率作为背包由于精度和时间复杂度都不可能满足。所以应该用所有的银行总价值作为背包,被抓概率作为价值。但是这里的概率不能简单相

2017-10-23 23:41:13 161

原创 HDU-2050 折现分割平面 递推

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2050题意:用m个V字最多可以分割多少个平面。思路:直接推V字的公式有点难,我们可以尝试从常见的直线型来入手。直线型的思路当然是每次新增的第n条直线都切割了平面上的所有n-1直线,显而易见这个时候会新增n-1个点。然后就可以找一下规律了。手推一下序列为2,4,7,11……发现每次都加n,所以可

2017-10-07 22:28:30 327

原创 HDU-2084 基础dp

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2084题意:比较经典的一道题目,给一个数塔,从顶端走到底端,能走相邻位置,求路径最大权值。思路:从最后一层往前面考虑,因为最多可能有n个出口,并且都在最底层,所以从这里往前面推,每往上一格所得到的最优解都是这个出口的最优解。所以就可以很简单的写出状态转移方程:dp[i][j]=max(dp[i

2017-10-07 19:23:51 208

原创 HDU-1698 Just a Hook 线段树区间更新

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题意:一个长度为n的线段,q个操作,每个操作x,y,z是指把区间[x,y]内的值修改为z,最后求线段值的和。思路:增加懒惰标志,每次更新操作只更新到这个区间节点而不是这个区间的所有叶子结点。例如操作1,5,2。只更新到节点[1,5]而不是他的五个叶子结点。这个时候会把节点[1,5]节点标志为2,如果

2017-10-03 20:03:07 352

原创 POJ2886 Who Gets the Most Candies? 线段树+预处理

题目链接:http://poj.org/problem?id=2886题意:n个孩子围成一圈,顺时针编号,每个孩子有一个名字和一个非零数字,指定从第k个孩子开始,每次使被抽到的孩子的号码a上对应的孩子退出去,如果数字是正的,那么就从这个孩子的左手边第a个孩子退出去,负数就从右边开始数。计算他们的推出序号p,求使得p的因子个数最大的孩子的名字,以及这个p的因子个数。思路:也是人数题,单点更新,和之前的

2017-10-02 23:40:39 263

原创 AtCoder Tenka1 Programmer Beginner Contest D IntegerotS 数学

题目链接:http://tenka1-2017-beginner.contest.atcoder.jp/tasks/tenka1_2017_d题意:给定n个数,每个数有一个a值一个b值,一个k。从所有的a中取数,这些数的按位或不能大于k,并且使得他们的b的和最大。思路:有一点数位dp+贪心的思想,因为b都是大于零的,所以所有可以取得肯定都要取。另外考虑一个k的二进制为1001001100,如果可以形

2017-10-01 19:32:20 393

原创 POJ 2828 线段树

题目链接:http://poj.org/problem?id=2828题意:队列问题,每个人会插入一个位置,每个人有固定id,即val。输出最后队列。思路:这道题如果正着想会比较难,但是如果考虑从数据末往会考虑就可以发现这个时候序列就已经是固定了的。现在难得就是怎么构建线段树了。考虑每个叶子节点存储一个标志位标志这个位置有没有人,往上的节点存储它的两个儿子中可以放人的个数。查询的时候,如果当前节点p

2017-09-30 22:15:48 171

原创 HDU 1394 暴力 或 归并排序 或 线段树

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:给定n个数,一个合法操作是每次可以将数列的第一个元素放到数列的尾部,然后问你所有可能操作中的逆序对的个数最少是多少。一个逆序对(ai,aj)的定义是数列a中下标 i 小于 j 同时 ai 大于 aj。思路:看到数据范围只有5000,一开始就往暴力方面想了。然后模拟一下发现了一个比简单的规律。

2017-09-27 21:07:26 276

原创 HDU 1754 线段树

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754题意:给你n个数,m个操作,Q A B代表询问区间[A,B]的最大值,U A B代表更新A点的值为B。思路:也是个简单的单节点更新的线段树,没有啥难度,但是在输入的时候被坑了一下,记得要getchar()掉回车,否则EOF没有用。#include <iostream>#include <stdio

2017-09-27 19:22:50 206

原创 HDU1166 线段树 或 树状数组

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:给定一个区间长度,三种操作,ADD i, j是将id为i的位置的值增加j;SUB i,j是将id为i 的位置的值减j;QUERY i,j为查询闭区间i,j的和。很经典的线段树单点修改和区间和查询。#include <iostream>#include <stdio.h>#include <

2017-09-25 21:39:18 210

原创 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 B题 离散化+贪心

题目链接:https://nanti.jisuanke.com/t/17309题意:给定一组人的乘车区间,区间不重合的座位可以重复使用,求最少需要用多少个座位。思路:把区间离散化,设置一个标志表示是否是区间开始,然后排一个序,每次遇到一个区间起点就加进贡献里面,遇到区间终点总贡献减去对应人数,每次更新贡献值统计最大值,这个最大值就是答案。#include <iostream>#include <c

2017-09-24 22:51:55 247

原创 POJ 3126 Prime Path BFS

题目链接:http://poj.org/problem?id=3126题意:给定两个四位素数m,n,要求m每次只能变换一位,并且变换前后必须都是质数,同一个数字不能两次访问,求从m变到n的最少次数。题解:数据都是四位数,很小,可以考虑先打一个所有四位数的素数表,然后BFS。搜索的方法是每次只变换一位,这一位从0到9取。由于不存在前导零,所以千位从1到9变换。#include <iostream>#

2017-09-23 23:06:52 203

原创 HDU-2612 BFS

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612题意:给一个m*n的图,求Y和M到图上所有的@的和的最小值。数据200*200思路:一开始觉得可以每遇到一个@就bfs一次,更新其到Y和M的最小值,这样比较好些。后来考虑到极限情况下可能有很多@,复杂度会很高,所以转换到用两个dis二维数组存储Y和M到所有的@的距离,这样就可以只遍历两次就够了,另外

2017-09-21 22:23:37 216

原创 HDU 1495 BFS+模拟

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:一罐可乐容积s,两个杯子n,m。求最小的倒水次数使其平分。 思路:直接用BFS模拟,数据很小,不用担心会T,此处输出NO的情况为s是技术以及ans输出为0 的情况。#include <iostream>#include <cmath>#include <stdio.h>#inclu

2017-09-20 22:48:33 209

原创 HDU2846 简单字典树

由于模式串不一定是以前缀出现,所以普通的字典树插入是不行的。可以考虑将母串的每一个后缀串都插入一遍,就可以达到查询时遍历母串的所有位置为起点,而不是仅仅以前缀的遍历方式。此外还要考虑到诸如样例中的用d去匹配add,按上述方式会产生重复,所以可以考虑在Trie结构中加入id编号,只有在不是同一个id时再进行计数。详情看代码。#include #include #include #include

2017-09-14 22:10:11 313

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除