![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题解
文章平均质量分 64
acm算法相关
int 我
尽量写的简单易懂
展开
-
51Nod - 3399 矩形的数量V7
题目小明有一个m*n的棋格,他想让你求出其中矩形的数量。但他不希望第u行第v列、第s行第t列的两个格子包含在矩形当中,请你帮帮他。 小明还希望你将得到的结果对1000000007取模。输入一行输入六个整数m,n,u,v,s,t。保证不选的两个格子不在同一位置。输出输出一个数,表示符合要求的矩形数量。结果对1000000007取模。数据范围对于100%的数据,1≤m,n≤10^9,0≤u,s≤m,0≤v,t≤n。输入样例4 3 3 3 2 2输出样例2原创 2022-04-05 00:37:34 · 413 阅读 · 2 评论 -
2021年区域赛ICPC沈阳站J-Luggage Lock(代码简洁)
题意:将给一个4位的锁转到另一个四位的锁,可以一次转动多个连续的锁+1或者-1,问多少次可以转成目标锁原创 2022-07-03 00:53:59 · 495 阅读 · 0 评论 -
20年秦皇岛D - Exam Results(二分+思维,附易错数据)
看别人都是尺取,差分什么,但是不能理解,还好自己的代码终于过了个人觉得这个思路还是比较好理解的。原创 2022-06-27 01:12:01 · 263 阅读 · 0 评论 -
POJ - 2826 An Easy Problem?(附带大概ac的数据)
链接:An Easy Problem?!代码模板风格一般都不一样,主要还是看思路和实现思路吧思路:这题首先就是有三种为0的情况1.线段不相交2.长的挡到下面短的(重要)3.还有很多不需要特殊处理的情况,比如有一个平行于x轴,伞状相交等怎么判断线段相交我是两次判断直线和线段相交,线段分别作为一次直线和线段,也可以用网上其他的代码基本思路找出两个线段y值最高的点,再从两个y值高的中找出最高的点,低的两个点就不用了怎么判断长的挡到下面短的高点中的低点在交点和高点中的原创 2022-03-28 12:27:12 · 197 阅读 · 0 评论 -
求两条直线的交点
if(par())是判断两条直线平行与否如果平行(重合),那么不再求交点左边反之,res接受结果原创 2022-03-18 19:00:00 · 759 阅读 · 0 评论 -
Pick-up sticks POJ - 2653
题目链接:POJ - 2653首先这题数据n<100000可能没错,但只要边添加,边判断弹出的话,还是可以直接用双for来判断。1.边判断弹出怎么实现?链表似乎是很不错的,从前往后遍历,不行的O(1)弹出,但不管是手写指针链表,stl链表,还是数组链表都麻烦些(还是不太会QAQ)。可以用两个队列来实现,每次弹空一个,判断是否压入另一个,注意下最后输出答案是从小到大的2.判断线段相交呢?先判断是否平行重合的话返回YES,平行的话返回NO不平行的话,比如判断 线段a, b和线原创 2022-03-24 21:37:41 · 626 阅读 · 0 评论 -
POJ - 1696 Space Ant (代码短)
思路:答案数量一定会是输入点的数量,因为点的横纵坐标都是唯一的,大概就能知道都能选上主要就是极角排序,以当前点为准点,判断两个点哪个在左边或右边,直接利用叉积就可以bool cmp(P a,P b){ //比较函数,x[l]为准点,a在b的右边 return (a.x-x[l].x)*(b.y-x[l].y)-(b.x-x[l].x)*(a.y-x[l].y)>EXP;}每选一个数就进行一次极角排序,选择排序后的第一个点,继续排序即可。代码:#.原创 2022-03-27 00:56:14 · 193 阅读 · 0 评论 -
树形DP入门专题
目录一、简单树形DP 1、Anniversary party2、Godfather 3、树上子链特点二、子树计数 4、codeforces 767C Garland 5、洛谷1122最大子树和 6、距离和特点三、树形背包6、洛谷1272重建道路 7、洛谷1273有线电视网特点四、种类数 8、51Nod - 1588 幸运树 9、CodeForces - 161D五...............原创 2022-04-06 15:29:57 · 520 阅读 · 0 评论 -
20年ICPC澳门站L - Random Permutation
题意:长度为n的a数组中,每个数是1,2,3,4..n的概率都是1/n,对于全排列的p数组(如1,2,3。1,3,2。2,1,3。2,3,1。3,1,2。3,2,1),全部下标i都成立的pi原创 2022-06-24 02:35:13 · 738 阅读 · 0 评论 -
20年上海站D题Walker(二分,简洁)
这题还有一点很重要,就是精度问题,以至于有的题解有100次二分的for原创 2022-06-22 22:52:00 · 332 阅读 · 0 评论 -
A. Gaby And Addition(字典树)
链接:A. Gaby And Addition选拔比赛的时候没有写出来,下来看了下是字典树,就把字典树 学了,这应该算是我学的第三个字符串算法,他的题型也很有特点。KMP和哈希就是严格的两个字符串比较,而字典树就是一个字符串和对其他全部字符串同时进行处理,好像也只能把所有字符串映射到一张图上了。总之输入多了或影响大了可以往字典树考虑回归正题,思路:将所有的数分解为18位(建议字符串输入),从高位到低位依次建立字典树。可以全部数更新完毕后再查找(另一个不能找到自己,比较麻烦)。也可以先.原创 2022-03-24 18:07:43 · 413 阅读 · 0 评论 -
Daimayuan #224. 距离和——树形DP
第一次写csdn上没有题解的题,实际上知乎有题解的,但是大佬写的实在是太长了,能看懂的话可以试试换根树形动态规划问题 - 知乎首先要知道一个点的子树的结点数量(包括自己)dp[i],以及结点1的答案,通过结点1的答案和dp[i]来推出剩余点的答案原创 2022-04-04 23:30:30 · 790 阅读 · 0 评论 -
动态规划入门专题
DP:简单来说就是寻找最终状态与前面状态的关系式,将最初的状态叠加到最后状态,从而得出答案下面是一些经典DP题,建议先搞懂背包问题中的各种优化,可见我另一篇博客:背包问题题目目录斐波那契序列三角形数最小路径和将字符串翻转到单调递增最长匹配括号斐波那契序列题目:后一个数等于前两个数的和,1,1,2,3,5,8...原创 2022-04-05 00:03:30 · 736 阅读 · 0 评论 -
CodeForces - 767C Garland(附带易错数据)
题目链接:Garland题意:给一颗树,每个点有点权(可为负),删除两个边后的三个树的点权和相等原创 2022-03-29 21:20:45 · 487 阅读 · 0 评论 -
uva10739 String to Palindrome (代码短)
题目在这个问题中,您需要将字符串转换成具有最少操作数的回文。操作说明如下:在任何位置添加任何字符从任何位置删除任何字符用另一个字符替换任何位置的任何字符对字符串执行的每个操作都将计入单位成本。你得尽可能地降低这个数字。例如,要转换“abccda”,如果只允许添加字符,则至少需要两个操作。但是,当您可以选择替换任何字符时,您只能使用一个操作。我们希望你能利用这项功能为你带来好处。输入输入文件包含几个测试用例。输入的第一行给出了测试用例的数量T(1)≤T≤10). 然后T个测试用原创 2021-07-22 16:24:08 · 115 阅读 · 1 评论 -
背包问题(三基础加六个类背包)
说明:从最简单的三种背包:01背包,完全背包,多重背包开始,第四第五第六是其延伸,基本都又区分了01背包,完全背包,多重背包,最后的进阶则更高的延伸出几大背包难点本文目前只总结了这些类型,以及对应的核心代码模板,下面的问题直接优化为一维代码了全文代码说明:n是物体数量,m是背包最大体积,a[i]是每个物品的体积b[i]是每个物品的价值c[i]是每个物品的数量dp有一维dp[i]也有二维dp[i][j]v[]是多重背包转化01背包后的物品体积(即a[i])w[]原创 2021-07-20 10:40:29 · 244 阅读 · 0 评论 -
Feel Good(单调栈)
题目比尔正在为人类情感开发一种新的数学理论。他最近的研究致力于研究好日子或坏日子如何影响人们对某个时期的记忆。比尔最近开发的一个新想法为人类生活的每一天分配一个非负整数值。比尔将此价值称为当天的情感价值。情绪值越大,日子就越好。比尔认为,人类生命中某个时期的价值与给定时期内各天的情感价值之和乘以该时期内最小的情感价值成正比。这种模式反映了一个非常糟糕的一天可能会大大破坏平均周期。现在比尔正计划调查他自己的生活,找出他生命中最有价值的时期。帮助他这样做。输入输入的第一行包含 n - 他...原创 2021-07-15 16:40:34 · 303 阅读 · 3 评论 -
经典楼房问题(单调栈)
题目:两个橙色的高度一样,如果按最少的算,它们可能是同一个建筑物,但是前面的建筑物比它们高,所以遮住了2-3位置的橙色建筑物,而绿色的比红色的矮,如果绿色的在红色建筑物后面,就会被红色的遮住,从而看不见,所以绿色和红色一定是分开的两座建筑。(借的图,方便理解题意)输入:输入一串数组代表楼房的高度输出:最少楼房数;样本输入:43 2 1 131 2 1样本输出:32维护单调栈(注意相等时的情况)#include <iostream>.原创 2021-07-13 13:24:05 · 365 阅读 · 0 评论 -
Phillip and Trains (dfs做更简单)
题目有一天hzk大佬闲得蛋疼开发了一款手机游戏,名字叫“穿越隧道”。游戏的主角小菲菲位于隧道的一端,想要离开另一端.隧道是一个3行n列的矩阵.在游戏开始时,小菲菲位于最左侧列(即第一列)的某个单元格中,此时突然出现一些小火车驶向他,每个小火车由该区域的某一行中的两个或更多相邻的单元格组成.所有的小火车都以每秒两个单元格的速度从右向左移动,而小菲菲则以每秒一个单元格的速度从左向右移动.首先,小菲菲向右移动一个单元格,然后他要么向上或向下移动一个单元格,要么保持不动;此时所有小火车同时向左移动一个单原创 2021-07-06 21:45:26 · 93 阅读 · 0 评论 -
Monthly Expense(二分专题)
题目连接:https://vjudge.z180.cn/contest/413975#problem/B题目农民约翰是一个令人震惊的会计巫师,他已经意识到他可能没有钱来经营这个农场。他已经计算并记录了确切的金额(1≤)。钱i≤10,000)他需要在下一天每天N(1≤)N≤100,000)天。FJ想要为一个顺序的集合创建一个预算M(1≤)M≤N)被称为“fajomonths”的财政期。这些每个月都包含一组连续的1天或更多天。每一天都被限制在一个角落里。FJ的目标是安排每个月的费用,以便最大..原创 2021-06-26 12:51:10 · 1843 阅读 · 0 评论 -
求组合数常用的方法
二、利用快速幂3.快速幂+逆元n,m原创 2022-06-05 00:08:08 · 166 阅读 · 1 评论 -
M斐波那契数列
尽量简单易懂题目M斐波那契数列F[n]是一种整数数列,它的定义如下:F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 )现在给出a, b, n,你能求出F[n]的值吗?输入输入包含多组测试数据;每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )输出对每组测试数据请输出一个整数F[n],由于F[n]可能很大,你只需输出...原创 2021-08-02 11:52:55 · 174 阅读 · 0 评论 -
求斐波那契数列(全部求法)
功能 用函数实现求斐波那契数列方法一:递归(适合n<=130,不求余) 已优化为带有记忆性的递归,时间复杂度为n,n>130时f(n)会爆long longlong long f[1005]={0,1,1};long long dp(int n){ if(f[n]!=0) return f[n]; return f[n]=dp(n-1)+dp(n-2);} cout<<dp(n)<<endl;方法二:数组打表(适...原创 2021-08-02 15:37:59 · 499 阅读 · 0 评论 -
Fibonacci
题目In the Fibonacci integer sequence,F0= 0,F1= 1, andFn=Fn− 1+Fn− 2forn≥ 2. For example, the first ten terms of the Fibonacci sequence are:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …An alternative formula for the Fibonacci sequence is....原创 2021-08-02 15:53:44 · 171 阅读 · 0 评论 -
Tr A (矩阵快速幂)
矩阵快速幂1.学矩阵快速幂首先一定先知道矩阵和矩阵的乘法运算2.再学模板,自己记录下一个自己理解好用的模板,推荐博客:矩阵快速幂模板和例题3.矩阵快速幂就和一般快速幂目的是一样的,都是求一个数(矩阵)的n次方。先说快速幂,如果要求2^300000000000,先不考虑结果会很大,暴力要算300000000000次,而快速幂只要30次左右,而因为能达到很快,所以结果也大,才需要取余来实现,所以对于10^6(可能更小)次方以上的次方必须要用快速幂同样的,对于一个矩阵的10^6以上也要必须用.原创 2021-07-22 10:16:22 · 579 阅读 · 0 评论 -
The Balance(详细讲解)
题目Ms. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of medicine. For example, to measure 200mg of aspirin using 300mg weights and 700mg weights, she can put one 700mg weight on the side of the medicine and thr...原创 2021-08-01 13:55:03 · 1013 阅读 · 4 评论