上学路线_NOI导刊2009普及(6) 题目详见:上学路线_NOI导刊2009普及(6) 这是一道基础的DFS(深搜)题,堪称模板,是新手练习搜索与回溯的好题选. 大致思路:从(1,1)开始搜索,每次只能往上走或往右走一个格(遇到题目给出的障碍物则直接不走),一直到(a,b),再回来找另一条路.每到一遍(a,b)就让计数器tot+1,最后输出tot,即为最终方案总数. AC代码: #include<iostream> #include<cstdio> #include<cst…
P1958 上学路线_NOI导刊2009普及(6) 题目描述 你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道.南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从南到北依次编号为l到b,南北方向的街道i和东西方向的街道j的交点记为(i,j). 你住在(1,1)处,而学校在(a,b)处,你骑自行车去上学,自行车只能沿着街道走,而且为了缩短时间只允许沿着向东和北的方向行驶. 现在有N个交叉路口在施工(X1,Yl).(X2,Y2)……,(Xn,Yn),这些路口是不…
题意:平面上n个点(坐标$0\le x,y\le 5000,n \le 3000$) 求以其中四个点为顶点的正方形的最大面积 $O(n^2)$枚举两个点作为当前正方形的对角线 那么如何求出另外两个点呢? 设一个点为$(ax,ay)$,另一个为$(bx,by)$ 所求点$(cx,cy),(dx,dy)$ 考虑正方形中点$(\frac{ax+bx}{2},\frac{ay+by}{2})$ 可以求出左边的向量为$(\frac{bx-ax}{2},\frac{by-ay}{2})$ 右边的向量等于左边…
题目描述--> P1959 遗址_NOI导刊2009普及(6) 普通方法分析: 因为题目要求是找最大正方形(如果是长方形更麻烦. 讲真,题目不难,耗时间! 根据题目要求,我们要找的是正方形. 我们可以根据已知两点去判断其他两点是否存在 然后就到了画图课讲解法的时候. 下面所有的dely代表纵坐标差值,delx代表横坐标差值. (记得在输入的时候,标记圆柱坐标. 当我们枚举的两个点所在直线平行于x轴或y轴的时候↓. 直线两侧均可能有正方形 (即横坐标差值为0或纵坐标差值为0的时候.) 纵坐标相同的…
P1952 火星上的加法运算_NOI导刊2009提高(3) 题目描述 最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限.她想向你求助,作为一位优秀的程序员,你当然不会拒绝. 输入输出格式 输入格式: 第一行先愉入一个运算的进制N(2<=N<=36),接下来两行为需要进行运算的字符,其中每个字符串的长度不超过200位,其为N进制的数.其中包括0-9及a-z(代表10-35). 输出格式: 在N进制下它们的和 输入输出样例 输入样例#1: 复制 20 1234567…
传送门 思路 首先定义\(h\)数组,\(h[i][j]\)表示第\(i\)行第\(j\)列最多可以向上延伸多长(直到一个被用过的格子) 然后使用单调栈算出 \(l_i\)和 \(r_i\) ,分别是 \(h[i]\) 中左边第一个(从 \(h[i][j]\) 开始)不大于\(h[i][j]\)的数和右边第一个(从\(h[i][j]\)开始)小于\(h[i][j]\)的数 最终答案为\(ans +=\ (j - l[j]) * (r[j] - j) * h[i][j]\) 即在当前行i中,左边在…
P1950 长方形_NOI导刊2009提高(2) 题目描述 小明今天突发奇想,想从一张用过的纸中剪出一个长方形. 为了简化问题,小明做出如下规定: (1)这张纸的长宽分别为n,m.小明讲这张纸看成是由n*m个格子组成,在剪的时候,只能沿着格子的边缘剪. (2)这张纸有些地方小明以前在上面画过,剪出来的长方形不能含有以前画过的地方. (3)剪出来的长方形的大小没有限制. 小明看着这张纸,想了好多种剪的方法,可是到底有几种呢?小明数不过来,你能帮帮他吗? 输入格式 第一行两个正整数n,m,表示这张纸…
P1944 最长括号匹配_NOI导刊2009提高 题解 宁愿相信世上有鬼,也不能随便相信某谷题目标签 我想了半天然后看了眼题解,发现用栈来模拟就好了 栈来模拟,还要用到一个bool数组,标记是否已经匹配 use[ i ] 一串括号,入栈,遇到匹配的就弹出去,标记已经匹配,然后最后挑连续匹配的最大的就好了,因为题目要求子串 注意两个点: 1.q[top]数组存的是括号的标号,而不是top是存的括号标号 2.res记录暂时一共有多少个连续的匹配括号数,所以每遇到一个新的括号,都要更新一遍 具体可以结…
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例: 输出样例: 说明 思路 AC代码 总结 题面 题目链接 P1951 收费站_NOI导刊2009提高(2) 其实还有一道双倍经验 P1462 通往奥格瑞玛的道路 题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,-,n. 这个国家的政府修建了m条双向的公路.每条公路连接着两个城市.沿着某条公路,开车从一个城市到另一个城市,需要花费一定的汽油. 开车每经过一个城市,都会被收取一定的费用(包括起点和终…
查看原题请戳这里 核心思路 题目让求最大费用的最小值,很显然这道题可以二分,于是我们可以二分花费的最大值. check函数 那么,我们该怎么写check函数呢? 我们可以删去费用大于mid的点以及与其相连的边,然后在剩余的点和边组成的图上跑一遍最短路求出从u到v需要消耗的最小的汽油,如果消耗汽油最小值不大于s,那么返回true,否则返回false. 注意事项 在二分时一定要判断到起点的花费是否大于mid r的初始值值应为$f_{max}+1$,因为如果$r_{start}=f_{max}$,那么…