摘要:
1 class Solution { 2 public: 3 map<vector<int>, int> memo; 4 5 int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs 阅读全文
2024年11月3日
2024年11月2日
摘要:
模拟题,但是要注意按位与操作和比较运算符的优先级,比较运算符优先级更高,所以t1,t2这样写,不然就得加括号。 1 class Solution { 2 public: 3 int minChanges(int n, int k) { 4 int res=0; 5 while(n&&k){ 6 in 阅读全文
2024年11月1日
摘要:
动态规划。 f[i][0/1]表示前i个且最后选A或B的方案的集合。 所以f[i][0]=max(f[i-1][0],f[i-2][1])+A[i]。f[i][1]同理。 1 typedef long long LL; 2 const int N = 1e5+10; 3 LL f[N][2]; 4 阅读全文
2024年10月30日
摘要:
因为字符串长度只有100,所以直接模拟就行了。字符串比较不想写的话,可以用C的strcmp 1 class Solution { 2 public: 3 string swap(string& s,int i,int j){ 4 string res=""; 5 for(int k=0;k<i;k+ 阅读全文
2024年10月29日
摘要:
直接dfs暴搜所有串,2^18=1024*256,时间上是允许的。然后判断串是否合法。 1 const int N = 19; 2 bool path[N]; 3 class Solution { 4 public: 5 bool check(int n){ 6 for(int i=0;i<n-1; 阅读全文
2024年10月28日
摘要:
分类讨论:两种情况,一是有节点有两个父节点,二是头尾相连 1 struct UnionFind { 2 vector <int> ancestor; 3 4 UnionFind(int n) { 5 ancestor.resize(n); 6 for (int i = 0; i < n; ++i) 阅读全文
2024年10月27日
摘要:
题目给定一个树添加一条边后的图,需要找出添加的边。思路为遍历所有边,用并查集维护集合,当一条边的两个端点已经在同一集合时,说明即为最后添加的边。 1 const int N=1010; 2 int p[N]; 3 class Solution { 4 public: 5 int find(int x 阅读全文
2024年10月26日
摘要:
1 class Solution { 2 public: 3 int maxTotalReward(vector<int>& rewardValues) { 4 int m = ranges::max(rewardValues); 5 unordered_set<int> s; 6 for (int 阅读全文
2024年10月25日
摘要:
f(i,j)表示从前i个中选,奖励为j是否有方案,有则为1。f(i,j) |= f(i-1,j),表示不选第i个。若是要选第i个,则需要j-rewardValues[i] < rewardValues[i],表示选第i个时手上的价值小于第i个的价值。 1 const int N = 2010; 2 阅读全文
2024年10月24日
摘要:
题意为给定一个数组,数组头两数比大小,大的放队首,小的放队尾,找到能够连续赢K次的数的编号。 思路:如果一轮比较完了,没有赢K次的,那答案就是数组最大值。利用双指针,模拟一轮比较,计算每个数的胜利次数,注意,若起点不是0的话,意味着他和之前的数比较是胜出的,所以初始为1,否则初始为0; 1 clas 阅读全文