cf 158div2 D. Black and White Tree

简介:

题意很简单,给出一个树中每个点相连的边的权值和,和点的颜色,一条边上颜色不同,求出原图……

因为条件很少,所以必然是个spj,所以可以直接贪心,然后把最后剩余的0边挂到任意一点上即可

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#define INF 1E9
using namespace std;
#define mp make_pair
#define f first
#define s second
vector<pair<int,int> >v[2];
int main()
{
    int n,i,j,k,t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&t,&k);
        v[t].push_back(mp(k,i+1));
    }
    sort(v[0].begin(),v[0].end());
    sort(v[1].begin(),v[1].end());
    for(i=j=0;i<v[0].size()&&j<v[1].size();)
    {
        k=min(v[0][i].f,v[1][j].f);
        printf("%d %d %d\n",v[0][i].s,v[1][j].s,k);
        v[0][i].f-=k;v[1][j].f-=k;
        if(v[0][i].f)j++;
        else if(v[1][j].f)i++;
        else if(i<v[0].size()-1)i++;
        else j++;
    }
    return 0;
}


 

目录
相关文章
红黑树(Red-Black Tree
红黑树(Red-Black Tree)是一种自平衡二叉搜索树,它的插入、删除和查找操作的平均时间复杂度都是 O(log n)。红黑树的高度始终保持在 O(log n) 级别,因此它是一种高效的数据结构。 红黑树的基本原理是,它的每个节点都有一个平衡因子,表示该节点的左子树和右子树的高度差。插入和删除操作会改变节点的平衡因子,因此需要通过旋转操作来重新平衡树。
73 5
|
8月前
|
前端开发
前景色[color]
前景色[color]。
53 0
|
前端开发
opacity和background的rgba区别
opacity和background的rgba区别
|
存储 缓存 NoSQL
红黑树(Red-Black Tree)
红黑树(Red-Black Tree)
200 0
COLOR
COLOR
130 0
|
前端开发
【BUG日记】【CSS】top和bottom、left和right同时存在的时候,left、top优先级最高(无论class、style、!import)
【BUG日记】【CSS】top和bottom、left和right同时存在的时候,left、top优先级最高(无论class、style、!import)
292 0
【BUG日记】【CSS】top和bottom、left和right同时存在的时候,left、top优先级最高(无论class、style、!import)
|
前端开发 JavaScript 容器
有趣的 box-decoration-break
有趣的 box-decoration-break
175 0
|
存储
1135. Is It A Red-Black Tree (30)
There is a kind of balanced binary search tree named red-black tree in the data structure.
1445 0
|
算法 Windows
1054. The Dominant Color (20)
Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of information for each pixel.
1068 0

热门文章

最新文章