Day2 公式模型+区间独立个数

文章包含两个部分,首先是一个关于公式模型的C++程序,该程序处理基于公式的数学问题,通过转化和排序找到满足条件的答案。其次,展示了独立区间模型的解决方案,通过对区间按结束点排序,动态规划计算最大独立区间数量。
摘要由CSDN通过智能技术生成

公式模型

见过很多公式类的问题,基本上都是公式转化
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(); 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值