摘要:
题目传送门 题意: 给你n*m个点,每个点有高度h [ i ][ j ] ,用[1,x][1,x]的数对该元素所处十字上的所有元素重新标号, 并保持它们的相对大小不变。n,m≤1000n,m≤1000 ,求其最小标号的最大值。 思路: 把行列离散化一下,然后答案是把十字上的所有数相对大小的最大值 代 阅读全文
摘要:
题目传送门 题意: 设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组。若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组。 定理:正整数x,y,z构成一个本原的毕达哥拉斯三元组且y为偶数,当且仅当存在互素的正整数m,n(m>n),其中m,n的奇 阅读全文
摘要:
/* * 求1/i的循环节长度的最大值,i<=n */ const int MAXN = 1005; int res[MAXN]; // 循环节长度 int main() { memset(res, 0, sizeof(res)); int i, temp, j, n; for (temp = 1; 阅读全文
摘要:
c语言中每一种数据类型都有自己的专属占位符,如整型的%d,浮点型的%f等,而*也是一个占位符,比较特殊而已。 比如输入一个n,输出0.5的n次方,就可以这么写 阅读全文
摘要:
题目传送门 题意: 一片草地,每次可以只可以让一种牛占领,问你怎样安排牛的次序 最后剩下的是1号牛,并且输出其数量 思路: 看到n到100 ,所以可以(n^3)暴力,第一重遍历次序,第二枚举是哪只牛 第三个for验证 然后在验证可否这里,我们的目标是让1号牛留到最后,所以我们要尽可能让 其他牛打架, 阅读全文
摘要:
题目传送门 题意: 一个魔法水晶可以分裂成m个水晶,求放满n个水晶的方案数(mol1e9+7) 思路: 线性dp,dp[i]=dp[i]+dp[i-m]; 由于n到1e18,所以要用到矩阵快速幂优化 注意初始化 代码: #include<bits/stdc++.h> using namespace 阅读全文
摘要:
题目传送门 题意: 在一个n个点,m条边的有向无环图中,求出所有从1到n 的路径的中位数的最大值 一条路径的中位数指的是:一条路径有 n 个点, 将这 n 个点的权值从小到大排序后,排在位置 ⌊n2⌋+1 上的权值。 思路: 看到权值为1~1e9,可以想到用二分答案,然后我们在验证的时候 可以将小于 阅读全文
摘要:
题目传送门 题意: 你可以询问一个三维坐标,机器会告诉你这个坐标在不在目标圆中, 并且(0,0,0)是一定在圆上的,叫你求出圆心坐标 思路: 因为(0,0,0)一定在圆上,所以我们可以把圆心分成3个坐标轴上 就是求x的时候,其他坐标都为0,而且可以确定一个在x的正半轴,一个 在负半轴,所以我们可以二 阅读全文
摘要:
题目传送门 题意: 给你0~9的字符串,问你翻转哪个区间后使得其最长不下降子序列长度最长 思路: 因为字符是0~9,所以我们可以定义一个b数组来枚举L,R, 去和原来的字符串去求最长公共子序列长度,不断更新求最大值 然后在其中记录路径,不断回缩去求此时的L,R 代码: #include<bits/s 阅读全文
摘要:
题目传送门 题意: 给你n和k,你每次能交换n的两个位,问最多k次后的最小和最大值 思路: 考虑到n到1e9,所以可以用全排列来暴力,但是我们不能全排列之前的数位, 因为n中的位数可能相等,那样很难计算交换次数,因此我们只能全排列下标 然后我们要怎样计算每次排列的交换次数,这里用到了循环节 比如:0 阅读全文