社区讨论

27分,玄学贪心

P1233[ICPC 2001 Taejon R] 木棍加工参与者 1已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhizi0kc
此快照首次捕获于
2025/11/03 18:15
4 个月前
此快照最后确认于
2025/11/03 18:15
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n;
struct node{
	int l,w,pos;
}a[N],x[N],y[N];
bool cmp1(node x,node y){
	return x.l<y.l;
}
bool cmp2(node x,node y){
	return x.w<y.w;
}
bool cmp3(int x,int y){
	return x>y;
}
int sum[N];
int main(){
/*
	freopen("strick.in","r",stdin);
	freopen("strick.in","w",stdout);
	致敬小木棒(strick)	
*/	
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>a[i].l>>a[i].w;
		a[i].pos=i;
		x[i]=a[i];
		y[i]=a[i];
	}
	sort(x+1,x+n+1,cmp1);
	sort(y+1,y+n+1,cmp2);
	int cnt1=0;
	for(int i=1;i<=n;i++){
		cnt1+=(x[i].l<x[i+1].l||x[i].w<x[i+1].w)?1:0;
	}
	int cnt2=0;
	for(int i=1;i<=n;i++){
		cnt2+=(y[i].l<y[i+1].l||y[i].w<y[i+1].w)?1:0;
	}
	if(ceil(min(cnt1,cnt2)/2)){
		cout<<ceil(min(cnt1,cnt2)/2);
	}else{
		cout<<1;
	}
	
		
	return 0;
}
我觉得黄不用写dp (其实懒得写),贪心玄学了一下,给的样例是一个l,w单调性就可以求得最优解,但是样例4好像卡了,不知道样例4该怎么贪
样例4
输入样例
3 1 3 2 2 3 1
输出样例
3
其实应该问题不大,希望有人回复qwq

回复

3 条回复,欢迎继续交流。

正在加载回复...