洛谷八連測 R8

2021-08-10 12:03:53 字數 1819 閱讀 9709

題目鏈結

答案是求c1

x+1∗

ck−1

n−1/

ckn+

x 取得最大值時的x值。

數學題。

化簡,求單調性。

對每一門成績都建一棵樹。

每條邊都加一條反向邊。

能夠通過正向邊到達的點都是比自己成績低的,反向邊則是比自己高的。

最好成績是只有三門成績蒐比自己高時才比自己高。

最壞成績是只有三門都比自己低時才比自己低。

求交集即可。

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int m=1e6+77;

const

int n=5e4+77;

int n,k,m,ans1,ans2;

int head[n],nxt[m],to[m],color[m],tot;

int head2[n],nxt2[m],to2[m],color2[m],tot2;

bool vis[n][4][2];

void add(int x,int y,int z)

void add2(int x,int y,int z)

void dfs1(int x,int col)

}} void dfs2(int x,int col)

}}int main()

for(int i=1;i<=k;i++)

for(int i=2;i<=n;i++)

}if(!flag) ans1++;

flag=0;

for(int j=1;j<=k;j++)//三科都比他高

} if(!flag) ans2++;

}printf("%d %d\n",n-ans1,ans2+1);

return

0;}

將時間離散化。

設 dp i 表示:最後打老鼠發生在時間 i,可以得到的最大價

值。 則 dp i = max(dp j + f(cnt i,j )),0 ≤ j < i,其中 cnt i,j 表示:在

i 時間可以被打到,但是在 j 時間不會被打到的老鼠的數量。

總複雜度 o(n^2)。

#include

#include

#include

#include

#define ll long long

using namespace std;

const int n=1e3+77;

int n,a,b,c,maxr,ans;

struct hq[n];

ints[2

*n],cnt;

int num[2

*n][2

*n];//num[i][j]表示在j位置打不到但是在i上能夠打到的老鼠的數量

int dp[2

*n];

bool cmp(h x,h y)

int f(int

x)int main()

sort(s+1,s+cnt+1);

intm=unique(s+1,s+cnt+1)-s-1;

for(int i=1;i<=n;i++)

//離散化

for(int i=1;i<=n;i++)

for(int i=0;i<=maxr;i++)

洛谷八連測 R7

list 題目鏈結 t1 每次spfa 或者bfs 時間複雜度o spfa q 每次先把每乙個查詢的特殊點入隊,距離為0 spfa或者bfs即可。include include include include include include define ll long long using nam...

浴谷八連測R4

題解 第一題水題,直接模擬就行了。include include include using namespace std template inline void read t x char s 100100 int main else if flag printf s s return0 題解 要...

浴谷八連測R4題解

一開始出了點bug能看見排行榜,於是我看見我半個小時就a掉了前兩題,信心場qaq t1字串題就不說了qwq include include include include include define ll long long using namespace std const int maxn 5...