zoukankan      html  css  js  c++  java
  • UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset

    UVALive 8513

    有2种人,每个人有自己的权值$A_i$ $B_i$ 当$A_i + B_i >=K$时 两个人可以配对

    问最多多少人可以配对

    解法 :

      把$/{ A_i /}$ 排序 $/{ B_i /}$ 扔进多重集合里

      每次在集合中找大于等于 $K - A_i$ 的第一个$B_i$ 然后删除元素

      可以有小优化

      但是实际上我不知道我是否正确......

      因为上面挂的数据是假数据,任何输出都能过....

      本来想把17年uvalive真题切一切的,结果一上来就被打脸了...

    #include <bits/stdc++.h>
    #define ll long long
    #define rep(ii,a,b) for(int ii=a;ii<=b;ii++)
    using namespace std;
    const int maxn=2e5+10;
    const int maxm=1e6+10;
    const int INF=0x3f3f3f3f;
    int casn,n,m;
    ll k;
    ll a[maxn];
    multiset<ll>b;
    int vis[maxn];
    int main(){
    	scanf("%d",&casn);
    	while(casn--){
    		b.clear();
    		memset(vis,0,sizeof vis);
    		scanf("%lld%lld",&n,&k);
    		rep(i,1,n){
    			scanf("%lld",a+i);
    		}
    		rep(i,1,n){
    			int x;
    			scanf("%lld",&x);
    			b.insert(x);
    		}
    		b.insert(INF);
    		int ans=0;
    		sort(a+1,a+1+n);
    		rep(i,1,n){
    			if(a[i]>=k){
    				ans+=n-i+1;
    				break;
    			}
    			int pos=*b.lower_bound(k-a[i]);
    			if(pos==INF)break;
    			b.erase(pos);
    			ans++;
    		}
    		printf("%d
    ",ans+1);
    	}
      return 0;
    }

        

  • 相关阅读:
    JDK自动安装脚本
    lamp script
    spring MVC multipart处理文件上传
    在Java中定义常量
    常用服务搭建(nfs/ftp/samba)
    源码编译安装mysql5.6
    Spring MVC
    Linux crontab 命令格式与详细例子
    Linux : IPTABLES
    linux monitor and maintanence
  • 原文地址:https://www.cnblogs.com/nervendnig/p/9187555.html
Copyright © 2011-2022 走看看