題意:
有n個數,劃分成m塊,和最大的一塊最小是多少?
分析:
最大值最小問題,二分答案。
#include
using
namespace
std;
typedef
long
long ll;
const
int n=1e5+9;
int a[n],n,m;
bool ok(int x)
else
if(k<0)return
false;
}return k>0;
}int main()
printf("%d\n",l);
return
0;}
題意:
一條河l寬,河中間有n個落腳點,問移走m個落腳點後,過河時,跨越的最短距離最大是多少?
分析:
讀完這題,最小值最大問題,先想到二分答案,但是仔細想了想之後覺得不行,因為這是確定的移走m塊石頭,就拿樣例來講,如果二分答案是3,那麼只能移走一塊石頭(2),不行,如果二分答案是5,那麼要移走三塊石頭,也不行。左右都不行還怎麼二分啊?於是寫了個貪心,wa了。後來又仔細想了想,其實對於答案是3這種情況,我們可以認為這是可行的(雖然沒移夠m塊,但是繼續二分可以得到最優解)。所以這題二分就可以了。
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int n=1e5+9;
int a[n],n,m,l;
bool ok(int x)
return
true;
}int main()
printf("%d\n",l);
return
0;
題意:
固定的鋼管熱膨脹,會向上彎曲,求上公升的高度?
分析:
求一下邊角關係,然後二分答案即可。
#include
#include
using
namespace
std;
typedef
long
long ll;
int main()
printf("%.3f\n",l);
}return
0;}
題意:
有n個圓pie,每個半徑ri,有m+1個人,問每個人分相同面積的一片pie,最大的面積可能是多少?
分析:
二分答案,然後判斷即可。
#include
#include
#include
using
namespace
std;
const
double pi=acos(-1.0);
const
int n=1e4+9;
double s[n];
int n,m,r;
bool ok(double x)
return cnt>=m+1;
}int main()
double l=0,r=pi*10000*10000;
while(r-l>1e-6)
printf("%.4f\n",l);
}return
0;}
poj 幾道簡單的dp題
題意 求使數列程先遞增後遞減的形式需要去掉的數字個數。當然也可以直接遞減或者只遞減不遞增。分析 用最長遞增子串行的方法求,然後列舉兩個起點的位置即可。include include include using namespace std const int inf 1e8 const int n 1...
poj 幾道簡單的搜尋題 (一)
題目 poj 2488 a knight s journey 題意 給乙個m n的棋盤,馬走日,給出一條字典序最小的馬的路線來走完整個棋盤?分析 如果能走完棋盤,那麼從 1,1 點dfs即可,因為他能走完整個棋盤嘛,總有一步會經過 1,1 所以從 1,1 出發就能到其他所有點。為了保證字典序,在列舉...
二分查詢簡單題
leetcode 35.search insert position 最普通的binary search,若target存在,則返回所在下標 若target不存在,則返回target待插入的位置,本質上就是實現lower bound函式 無論mid left right left 2,還是mid l...