又是一道神仙題
太神仙了
第一步:考慮這是有向無環圖,故思考topsort????我真是想不到
由於這是有向無環圖
定義f(i)為到達i的最長路徑
g(i)為從i出發的最長路徑
故:f(u)+g(v)+1為最長鏈
用乙個可刪除堆優化一下就好了
#includeusing namespace std;
const int n=2e6+100;
inline void read(int &x)
ch=getchar();
} while(ch>='0'&&ch<='9')
x*=f;
}struct front_stare[n*3*2];
int cnt=0;
int firsts[n]={};
int firstt[n]={};
void add(int u,int v,int *first)
int f[n]={};
int g[n]={};
int d[n]={};
int q[n]={};
int head=0;
int tail=0;
int n,m;
struct priority_queue
void delete(int x)
int top()
return ins.top();
}}que;
int main()
for(int i=1;i<=n;i++)
while(head!=tail)
} for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
} for(int i=n;i>=1;i--)
} int ans=1e9,pos;
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
que.delete(g[x]);
// cout
for(int j=firsts[x];j;j=e[j].nxt)
que.insert(f[x]);
} cout<
}
省選專練POI2015Kinoman
小目標 高考假以內,做完poi2015 和poi2014的一半 怎麼搞?實際套路也挺簡單的。你看 l,r。這是n n的演算法 一般來說1e6 怎麼搞是on 但是onlogn 卻必須得跑過 原因是一般來說解決是列舉乙個l 或者是中位數。但是必須得log 那麼毒瘤卡常數 你用乙個後向星記錄乙個 pre即...
省選專練SCOI2005掃雷
這是乙個智商檢測題 狀壓dp。如果你玩過掃雷,並且內心有一棵平衡樹 bb數 你就會發現答案只有0,1,2共計三種。於是法一 模擬。答案對不對只會取決於第乙個是什麼。模擬兩邊就好了。includeusing namespace std int i,j,k,m,n,ans 2,a 10001 b 100...
省選專練ZJOI2005午餐
這是個好題 考察dp優化,dp,貪心,01揹包變種。好首先對吃飯時間從大到小排序,因為一隊人打飯時長總和一樣。dp i,j 表示前i個人,第一組用j的時間。放第乙個揹包 dp i j min max dp i 1 j a i w j a i v 放第二個揹包 dp i j min max dp i ...