FisherKK

FisherKK : 轻功水上漂
3 年前

题面: 给定n个荷叶, 以及m个木桩, 和最远距离d, 使得每相邻两个木桩的最大值最小(将0和d也看做是一个桩) 水上漂是一道经典的 最大值最小化 和 最小值最大化 问题, 这样的问题和二分搜索的思想是一样的。 二分搜索本质上是查找某个值x, 使得命题$C(x)$为真 而在这道题当中可以定义$C(x)$为 相邻两个桩之间的最大距离不超过x , 那么我们只需要每次二分搜索距离就可以了, 其中很重要的一个部分在于如何判断$C(x)$为真, 可以这样认为, 对于莲叶$0, y_1, y_2, y_3, ...查看全文
FisherKK : 进制转换的模板(采用栈来实现)
3 年前

const char * Num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; typedef int Int ; void print ( Int num , int base ) { // 十进制输出为base进制 if ( num < 0 ) cout << '-' ; num = abs ( num ) if ( nu ...查看全文
FisherKK : 徒弟的下山之路(DP版)
3 年前

/* 想法是dp[i][j]存储的是i行j列为止最短的路径,那么由此可以进行递推,dp[i][j]肯定来自它的上,右上,右中的最小值(当然每行的第一个 和最后一个元素需要单独考虑),但是对每行仅作一次DP显然不够,因为这个最小值我们忽略了来自左边的值,因此做完之后我们需要再次DP,由此可以得出结果 */ #include <iostream> using namespace std ; typedef long long LL ; int arr [ ...查看全文
FisherKK : DFS模板
3 年前

n个数里面挑不同的k个数 void DFS ( int i , int count , LL s ) { if ( count == k ) { if ( isPrime ( s )) sum ++ ; return ; } for ( int h = i ; h < n ; h ++ ) DFS ( h ...查看全文
FisherKK : 分数精确值
3 年,1 月前

#include <iostream> #include <bits/stdc++.h> using namespace std ; int N , m , n ; set < int > Si ; vector < int > Vi ; vector < int > Vmod ; void solve (); int main () { cin >> N ; for ( int i ...查看全文
FisherKK : Quick power
3 年,1 月前

using namespace std ; using u64 = uint64_t ; template < typename UInt > UInt ipow ( UInt const kBase , UInt const kExp , UInt const kMod ) { UInt ret = 1 ; for ( UInt i = kExp , base = ...查看全文
FisherKK : BigInteger模板
3 年,1 月前

#include <iostream> #include <string> #include <cstdlib> #include <algorithm>//reverse函数所需添加的头文件 using namespace std ; /* 大整数类 */ class BigInt { private : inline int compare ( string s1 , string s2 ) ...查看全文