• BZOJ1034[ZJOI2008]泡泡堂


    一开始是不会的,不知道如何处理相等的情况,瞎贪心一直WA。
    于是就递归处理是让相等的平局还是输掉,如下,拿到了50分。

    int solve(int *a,int *b,int i,int l,int r)
    {
    	int ans=0;
    	for(;i<=n;++i)
    	{
    		if(a[i]>b[l])
    			ans+=2,++l;
    		else if(a[i]<b[l])
    			--r;
    		else
    		{
    			ans+=max(solve(a,b,i+1,l+1,r)+1,solve(a,b,i+1,l,r-1)+(a[i]==b[r]?1:0));
    			break;
    		}
    	}
    	return ans;
    }
    

    附正解,网上的讲解已经很完善了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int MAXN=100000+5;
    int a[MAXN],b[MAXN];
    int n;
    
    int solve(int *a,int *b)
    {
    	int ans=0,la=1,lb=1,ra=n,rb=n;
    	while(la<=ra)
    	{
    		if(a[la]>b[lb])
    		{
    			ans+=2;
    			++la,++lb;
    		}
    		else if(a[ra]>b[rb])
    		{
    			ans+=2;
    			--ra,--rb;
    		}
    		else
    		{
    			if(a[la]==b[rb])
    				++ans;
    			++la,--rb;
    		}
    	}
    	return ans;
    }
    
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i)
    		scanf("%d",&a[i]);
    	sort(a+1,a+n+1);
    	for(int i=1;i<=n;++i)
    		scanf("%d",&b[i]);
    	sort(b+1,b+n+1);
    	printf("%d %d",solve(a,b),(n<<1)-solve(b,a));
    	return 0;
    }
    
  • 相关阅读:
    整合规则引擎urule
    vue学习
    发送put请求,get请求
    jpa自定义字段
    spring的3种配置方式
    netty
    springsercurity和shiro
    git报错
    Scrapy全站数据爬取
    python操作Excel模块openpyxl
  • 原文地址:https://www.cnblogs.com/chwhc/p/7679783.html
Copyright © 2020-2023  润新知