d 題意感覺說的不是很清楚,一開始題意弄錯了,以為是最優的方案,結果是對於每個盒子這個"so clever"的人的做法是優先選擇盡可能大的物品裝完乙個盒子,我就不知道這個人**聰明了。。
思路:賽後知道題意後,5分鐘寫完,瞎暴力就一發過了,我自己都有點出乎意料真水了。
#includeusingview codenamespace
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++)}}
}
j 這個題也水的一比,我隊友還說用dp,可是思考一下明顯不需要嘛,不過一開始乙個變數賦值出錯,還有下標沒有從0開始忽略了等級為0的情況,瘋狂罰時,有點不爽。
#includeusingview codenamespace
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);}}
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...