oj.1677矩形嵌套,动态规划 ,贪心
2024-10-07 01:54:43
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
int h,w;
}rec[];
bool cmp(node a,node b){
if(a.h!=b.h) return a.h<b.h;
else return a.w>b.w;
}
int vis[]={};
int n,count1;
//void find(int k){
// if(k==n){return ;}
// int ok=1;
// for(int i=k+1;i<n;i++){
// if(!vis[i]&&rec[i].w>rec[k].w){
// vis[i]=1;
// find(i);
// ok=0;
// break;
// }
// else find(i);
// }
// if(ok){
// count1++;
// find(k+1);
// }
//}
void find(int m){
int k;
for( k=m+;k<n;k++){
if(!vis[k]&&rec[k].w>rec[m].w&&rec[k].h>rec[m].h){
// cout<<"!!"<<endl;
vis[k]=;
find(k);
break;
}
}
if(k>=n) {
// cout<<m<<endl;
count1++;}
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=;i<n;i++){
int h,w;
scanf("%d%d",&h,&w);
rec[i].h=h;
rec[i].w=w;
}
count1=;
memset(vis,,sizeof(vis));
sort(rec,rec+n,cmp);
for(int i=;i<n;i++){
if(vis[i]) continue;
find(i);}
cout<<count1<<endl;
}
}
矩形嵌套问题;
目前理解 贪心如此题,应该是h和w最为接近的两点想嵌套为局部最优解,而动态规划应为dijk类型f(x+1)=f(x) 这个f(x)包含了仅限于x以下的全局最优解 当然 也就是逆推可以求解
最新文章
- ionic2+angular2中踩的那些坑
- 在SQLSERVER里,怎么让别人只能输入一个字母的约束该怎么写?就是26个字母中的任意一个?
- Catalyst揭秘 Day3 sqlParser解析
- WPF之Behavior
- HttpClient 发送 HTTP、HTTPS 请求的简单封装
- LoadRunner脚本增强
- Android 推断SD卡是否存在及容量查询
- 创意HTML5文字特效 类似翻页的效果
- HDU 1043 八数码(八境界)
- Python小代码_10_判断是否为素数
- Openstack: MP-BIOS bug: 8254 timer not connected to IO-APIC
- Vue(小案例_vue+axios仿手机app)_上拉加载
- 自定义函数hello,并注册到hive源码中并重新编译
- Codeforces.468C.Hack it!(构造)
- 【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】
- JQuery Mobile - input 属性为 number,maxlength不起作用如何解决?
- php urlencode函数 (中文字符转换为十六进制)
- pyqt5.8.2没有qt Designer和assistant exe
- Tomcat端口的改变和编码的设置
- IntelliJ IDEA 显示行号