ABC 344
ABC用python写代码会比较快
A 题可以积累简洁的写法:
S = input()
a, b, c = S.split('|')
print(a+c)
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
int x = s.find("|"); // The first occurrence of `|` when scanning from the head
int y = s.rfind("|"); // The first occurrence of `|` when scanning from the tail
cout << s.substr(0,x) + s.substr(y+1) << endl;
}
一个是 find 一个是 substr
D 题是DP
状态:dp[i][j]
表示使用前 i 个背包,组成 T 的前 j 个字符所需要最少的组件数。
状态转移: d p [ i ] [ j ] = min ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − v k ] + 1 ) dp[i][j] = \min(dp[i-1][j], dp[i-1][j-v_k]+1) dp[i][j]=min(dp[i−1][j],dp[i−1][j−vk]+1),其中 i , j , v , k i,j,v,k i,j,v,k满足
- T [ : j ] = T [ : j − v ] + S i , k T[:j]= T[:j-v]+S_{i,k} T[:j]=T[:j−v]+Si,k
- v = S i , k . size() v = S_{i, k}.\texttt{size()} v=Si,k.size()
- k ∈ [ 1 , A i ] k\in [1, A_i] k∈[1,Ai]
E 题是基于哈希表的双向链表
出了个阴间的bug