E - Simultaneous Kagamimochi (二分答案+贪心)
1.D - Snaky Walk(BFS)2.E - Takahashi is Slime 2 (优先队列)3.D - Coming of Age Celebration (前缀+差分)
4.E - Simultaneous Kagamimochi (二分答案+贪心)
5.D - Squares in Circle题目链接:https://atcoder.jp/contests/abc388/tasks/abc388_e
题意:
给定一个数组,当数组中一个数的两倍不超过另一个数时,认为这两个数可以组成一对,(组合后这两个数无法再次进行组合),求最大组合数
思路:
如果能条件能满足k对,一定能满足k-1对。同时尽量让 小的 和 大的里面相对小 的组合
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
const int maxn=5e5+5;
ll arr[maxn];
ll ans;
bool check(int mid)
{
for(int i=1;i<=mid;i++)
{
if(2*arr[i]>arr[n-mid+i])return false;
}
return true;
}
signed main()
{
ios::sync_with_stdio(false),cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)cin>>arr[i];
int l=0;
int r=n/2;
while(l<=r)
{
int mid= l+r>>1;
if(check(mid))
{
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<< ans;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战