LeetCode 2409. 统计共同度过的日子数
class Solution {
public:
const int days[13]={0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int get(int x,string s)
{
int t=(s[0]-'0')*10+s[1]-'0';
for(int i=1;i<t;i++)x+=days[i];
x+=(s[3]-'0')*10+s[4]-'0';
return x;
}
int countDaysTogether(string arriveAlice, string leaveAlice, string arriveBob, string leaveBob) {
int a1=get(0,arriveAlice),a2=get(0,leaveAlice),b1=get(0,arriveBob),b2=get(0,leaveBob);
return max(0,min(b2,a2)-max(a1,b1)+1);
}
};
LeetCode 2410. 运动员和训练师的最大匹配数
class Solution {
public:
int matchPlayersAndTrainers(vector<int>& a, vector<int>& b) {
sort(a.begin(),a.end());
sort(b.begin(),b.end());
int i=0,j=0;
while(i<a.size()&&j<b.size())
{
if(a[i]<=b[j])i++,j++;
else j++;
}
return i;
}
};
LeetCode 2411. 按位或最大的最小子数组长度
class Solution {
public:
vector<int> smallestSubarrays(vector<int>& nums) {
int n=nums.size();
vector<int>v(31,n);
vector<int>res(n);
for(int i=n-1;i>=0;i--)
{
int t=i;
for(int j=0;j<31;j++)
{
if(nums[i]>>j&1)v[j]=i;
else if(v[j]<n)t=max(t,v[j]);
}
res[i]=t-i+1;
}
return res;
}
};
LeetCode 2412. 完成所有交易的初始最少钱数
typedef long long LL;
class Solution {
public:
long long minimumMoney(vector<vector<int>>& t) {
LL a=0,b=0;
for(auto x:t)a+=max(0,x[0]-x[1]);
for(auto x:t)
{
LL s=a;
if(x[0]>x[1])s-=x[0]-x[1];
b=max(b,(LL)s+x[0]);
}
return b;
}
};