牛客多校第六場

2022-06-03 06:51:09 字數 1404 閱讀 7369

d 題意感覺說的不是很清楚,一開始題意弄錯了,以為是最優的方案,結果是對於每個盒子這個"so clever"的人的做法是優先選擇盡可能大的物品裝完乙個盒子,我就不知道這個人**聰明了。。

思路:賽後知道題意後,5分鐘寫完,瞎暴力就一發過了,我自己都有點出乎意料真水了。

#includeusing

namespace

std;

const

int maxn=1e3+10

;int

v[maxn];

intvis[maxn];

inttemp[maxn];

intn,m;

int cmp(int a,int

b)int check(int

x) }}}

if(cnt<=m) return1;

else

return0;

}int

main()

int l=sum/m;

for(int i=l;; i++)}}

}

view code

j 這個題也水的一比,我隊友還說用dp,可是思考一下明顯不需要嘛,不過一開始乙個變數賦值出錯,還有下標沒有從0開始忽略了等級為0的情況,瘋狂罰時,有點不爽。

#includeusing

namespace

std;

const

int maxn=1e3+10

;#define ll long longll sum[maxn][maxn];

ll per[maxn][maxn];

intval[maxn][maxn];

ll d[maxn];

intpos[maxn][maxn];

intmain()

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

for(int j=1; j<=m; j++)

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

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

sum[i][j]=minn;

pos[i][j]=p;}}

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

// ll ans=0

;

for(int j=0; j<=m; j++)

//printf("%d %d??\n",pmin,s);

if(pmin!=j)

//printf("%d %d")

s=d[j]-s;

//printf("%d %d\n",j,s);

ans=max(ans,s);

}printf(

"case #%d: %lld\n

",it,ans);}}

view code

2019牛客多校第六場C(PAM)

傳送門 不會pam,建議看一下該部落格pam 維護乙個陣列,表示節點對於答案的貢獻 那麼如何計算這個值呢,首先我們需要知道它是由誰轉移而來的,比如該節點表示的是aabbbbaa,他是由abbbba轉移而來的,我們在計算aabbbbaa時首先要加上abbbba,然後還有一些fail邊連向的點首先我們來...

2020牛客多校第六場 K

題意 判斷給的序列是不是 任意1 n的全排拼接成序列的連續子串行 每乙個數字應該屬於的地方它只能出現一次。從任意點i開始,如果某個點在往後查詢的時候出現了兩次,那麼i點最多能夠延伸到那個地方。然後我們可以把每個點求一下最多能延伸到哪個點,直接記錄len。操作看 處理 由於k很大,可以到1e9,但是n...

2020牛客多校聯賽第六場(CBEK)

輸出4.50000000 一列一列的去找,因為兩列合併時 即合併之後的值處於兩者之間不超過較大值,那麼就沒有合併的意義了,一列一列的更新最大值。因為分母是選取的子矩陣的最後一行,因此可以擴大分子,即從第一行開始加到子矩陣末尾。include using namespace std typedef l...