公式模型
见过很多公式类的问题,基本上都是公式转化
a+b=c+d
根据题意转换
公式: Aa+Ba=Ab+Bb -> (Aa-Ab)+(Ba-Bb)=0
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+9;
struct we{
ll a,b; //cin>>a>>b;
}arr[N];
void moyuhualuo(){
ll n; cin>>n;
vector<int>ans(n);
for(int i=0;i<n;i++){
cin>>arr[i].a;
}
for(int i=0;i<n;i++){
cin>>arr[i].b;
ans[i]=arr[i].a-arr[i].b;
} sort(ans.begin(),ans.end());
for(int i=0,j=n-1;i<n/2+1;i++,j--){
if(ans[i]+ans[j]!=0){
cout<<"NO";
return;
}
}
cout<<"YES";
}
int main(){
moyuhualuo();
}
独立区间模型
给定若干个区间,求最多可以有几个独立区间个数
根据b大小排区间,fl 为 b,如果下一个a大于fl 答案加一,fl 变为b…
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+9;
struct we{
ll a,b; //cin>>a>>b;
}arr[N];
bool cmp(we a,we b){
return a.b<b.b;
}
void moyuhualuo(){
ll n; cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i].a>>arr[i].b;
} sort(arr,arr+n,cmp);
int ans=0,fl=0;
for(int i=0;i<n;i++){
if(arr[i].a>=fl){
fl=arr[i].b;
ans++;
}
} cout<<ans<<endl;
}
int main(){
moyuhualuo();
}