随笔分类 - ACM基础篇
摘要:题目链接: https://vjudge.net/problem/POJ-2002 题目大意: 有一堆平面散点集,任取四个点,求能组成正方形的不同组合方式有多少。 相同的四个点,不同顺序构成的正方形视为同一正方形。 解题思路: 直接四个点四个点地枚举肯定超时的,不可取。 普遍的做法是:先枚举两个点(
阅读全文
摘要:问题描述: 求点(x1, y1)关于点(x0, y0)逆时针旋转a度后的坐标 思路: 1、首先可以将问题简化,先算点(x1, y1)关于源点逆时针旋转a度后的坐标,求出之后加上x0,y0即可。 2、关于源点旋转,用极坐标表示 设x1 = Rcos(θ), y1 = Rsin(θ),绕源点逆时针旋转β
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-1840 题目大意: 给出一个5元3次方程,输入其5个系数,求它的解的个数 其中系数 ai∈[-50,50] 自变量xi∈[-50,0)∪(0,50] 注意:xi不为0 解题思路: 五重循环肯定TLE,所以选择三重循环+两重循
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-2155 题目大意: 给一个n*n的01矩阵,然后有两种操作(m次)C x1 y1 x2 y2是把这个小矩形内所有数字异或一遍,Q x y 是询问当前这个点的值是多少?n<=1000 m<=50000. 解题思路: 裸的二维树
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-2029 题目大意: 有N棵树在一个n*m的田里,给出每颗树的坐标 用一个s*t的矩形去围,最多能围几棵树 思路: 用二维树状数组求区域和,也可以直接用二维前缀和求解 1 #include<iostream> 2 #inclu
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-3067 题目大意: 日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数。 解题思路: 记每条告诉公路为(x,y), 即东岸的第x个城市与西岸的第y个城市修一条路。当两条路有交点时,满足(x1
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-3274 题目大意: 给定多头牛的属性,每头牛的属性由一个非负数表示,该数的二进制表示不会超过K位,它的二进制表示的每一位若为1则表示该牛有对应的第i种属性,若为0则表示没有该属性。 对于给定的牛的顺序,要求输出某一段子序列的
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-2481 题目大意: if Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj, we say that cow i is stronger than cow j. 此处的含义就是线段[Sj
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-1195 题目大意: 直接维护二维树状数组 注意横纵坐标全部需要加1,因为树状数组从(1,1)开始
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2609 题目大意: 有n个有01组成的字符串,每个字符串都代表一个项链,那么该字符串就是一个环状的结构,求可以经过循环旋转,最后不同的串有多少个。。 解题思路: 将所有字符串用最小表示法表示,然后存入s
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-1509 题目大意: 给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小。 解题思路: 最小表示法模板 注意模板返回的下标是从0开始,答案要求从1开始
阅读全文
摘要:有一个字符串,这个字符串的首尾是连在一起的,要求寻找一个位置,以该位置为起点的字符串的字典序在所有的字符串中中最小。 【暴力算法】: O(n)的时间枚举起始位置,O(n)的时间比对字符串的字典序,总的时间复杂度是O(n*n)。 【线性算法】: 初始时,让i=0,j=1,k=0,其中i,j,k表示的是
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-3349 题目大意: 每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。 比如输入的是1 2 3 4 5 6, 则2 3 4 5
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1541 题目大意 : 在坐标上有n个星星,如果某个星星坐标为(x, y), 它的左下位置为:(x0,y0),x0<=x 且y0<=y。如果左下位置有a个星星,就表示这个星星属于level x 按照y递增
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-3080 题目大意: 找最长的公共字串(长度>=3),长度相同就找字典序最小的 解题思路: 枚举第一个串的所以子串,处理出其他串的所有子串,然后set查找,更新ans
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1556 题目大意: Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意: 维护动态的区间和,单点更新,就是模板题
阅读全文
摘要:题目链接: https://vjudge.net/problem/SPOJ-MATSUM 题目大意: 二维数组,两种操作 SET 将某点设置成x SUM 求某个区域之和 解题思路: 这里用二维树状数组 SUM可以直接求出来 这里将某点设置成x,和树状数组不同,树状数组是讲某点加上一个值,但是可以另外
阅读全文
摘要:题目链接: https://vjudge.net/problem/POJ-2299 题目大意: 本题要求对于给定的无序数组,求出经过最少多少次相邻元素的交换之后,可以使数组从小到大有序。 两个数(a, b)的排列,若满足a > b,则称之为一个逆序对。 n < 500,000 0 ≤ a[i] ≤
阅读全文
摘要:二维的树状数组和一维的类似,分为单点更新区间查询和区间更新单点查询两种 1、单点更新,区间查询 add(int x, int y, int d):tree[x][y] += d; sum(int x, int y):返回(1,1)到(x, y)之和 注意: 修改某一点的值,num[x][y] +=
阅读全文

浙公网安备 33010602011771号