Sticks bzoj-2529 Poi-2011

题目大意:给你n根木棒,每种木棒有长度和颜色,颜色共有k种,求满足条件的3根木棒使得这3根木棒颜色互不相同且可以围成三角形。

注释:$1\le n \le 10^6$,$1\le k\le 50$。

想法:我们这么想:假设当前木棍是满足题意的三根木棍中的最大者,那么剩下两根木棍一定是越大越好。所以,将所有木棍按长度排序,每次记录一下连续的三个长度不同的三根木棍,然后比较。知道有答案位置。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 1000010
#define MAXM 1010
struct Node
{
int l;
int c;
friend bool operator <(const Node &x,const Node &y)
{
return x.l<y.l;
}
};
int k;
int n,m;
Node a[MAXN];
int x,y,z,lx,ly,lz;
Node ans[10];
int main()
{
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&m);
for(int j=1;j<=m;j++)
{
a[++n].c=i;
scanf("%d",&a[n].l);
}
}
sort(a+1,a+n+1);
for(int j=1;j<=3;j++)
{
ans[j].l=ans[j].c=0;
}
for(int i=1;i<=n;i++)
{
bool flag=0;
for(int j=1;j<=3;j++)
{
if(ans[j].c==a[i].c)
{
ans[j].l=a[i].l;
flag=1;
}
}
if(!flag)
{
ans[1]=a[i];
}
sort(ans+1,ans+4);
if(ans[1].l+ans[2].l>ans[3].l&&ans[1].l!=0)
{
for(int j=1;j<=3;j++)
{
printf("%d %d ",ans[j].c,ans[j].l);
}
printf("\n");
return 0;
}
}
printf("NIE\n");
return 0;
}

小结:贪心思想有时是容易的,但是能不能想到贪心就看造化了... ...

[bzoj2529][Poi2011]Sticks_贪心的更多相关文章

  1. BZOJ_2529_[Poi2011]Sticks_贪心

    BZOJ_2529_[Poi2011]Sticks_贪心 Description Little Johnny was given a birthday present by his grandpare ...

  2. BZOJ2529 [Poi2011]Sticks 【贪心】

    题目链接 BZOJ2529 题解 要组成三角形,当且仅当最长边长度小于另两条边之和 我们就枚举最长边,另两条边当然是越大越好 我们将所有边排序,从小枚举并记录各个颜色的最长边 当枚举到当前边时,找到除 ...

  3. 【bzoj2529】[Poi2011]Sticks 贪心

    题目描述 给出若干木棍,每根木棍有特定的颜色和长度.问能否找到三条颜色不同的木棍构成一个三角形.(注意这里所说的三角形面积要严格大于0) 输入 第一行给出一个整数k(3<=k<=50),表 ...

  4. BZOJ2529: [Poi2011]Sticks

    2529: [Poi2011]Sticks Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 257  Solved: ...

  5. poj 1065 Wooden Sticks_贪心

    题意:将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间. 思路:先按长度排序,相同在比较重量,然后按顺序比较得出结 ...

  6. POI2011题解

    POI2011题解 2214先咕一会... [BZOJ2212][POI2011]Tree Rotations 线段树合并模板题. #include<cstdio> #include< ...

  7. BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心

    题目大意:给定一棵树,有一些点是关键点,要求选择不超过mm个点.使得全部关键点到近期的选择的点距离最大值最小 二分答案,问题转化为: 给定一棵树,有一些点是关键点,要求选择最少的点使得每一个关键点到选 ...

  8. bzoj 2217 [Poi2011]Lollipop 乱搞 贪心

    2217: [Poi2011]Lollipop Time Limit: 15 Sec  Memory Limit: 64 MBSec  Special JudgeSubmit: 383  Solved ...

  9. BZOJ2525 [Poi2011]Dynamite 【二分 + 贪心】

    题目链接 BZOJ2525 题解 就是要求所有有炸弹的点到点燃点距离最大值最小 显然二分答案距离\(D\) 然后按深度排序,贪心点燃当前没覆盖的深度最深的点往上第\(D\)层的点 每覆盖一个点要标记其 ...

随机推荐

  1. SQL数据库问题 解释一下下面的代码 sql 存储过程学习

    SQL数据库问题 解释一下下面的代码 2008-08-13 11:30wssqyl2000 | 分类:数据库DB | 浏览1154次 use mastergocreate proc killspid( ...

  2. hibernate初步2

    Hibernate级联设计 数据库表之间的关系(主要关系有一对多.一对一.多对多)主要是从如下三个方面体现出来: 1.表体设计 2.实体类的设计 3.配置文件 以下是一些重要级联设计参数属性介绍: c ...

  3. https://www.threatminer.org/domain.php?q=blackschickens.xyz ——域名的信誉查询站点 还可以查IP

    https://www.threatminer.org/domain.php?q=blackschickens.xyz https://www.threatminer.org/host.php?q=6 ...

  4. ortp库使用入门

    我们知道, RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应用离不开RTP协议的实现及使用,为了更加快速地在项 ...

  5. js定义类和方法

    js中定义一个类 //定义一个user类 var user = function(){ //类中的属性 var age; //设置age的值 var setAge = function(age){ t ...

  6. 判断ascii码是什么的函数

    function CharMode(iN){ if (iN>=48 && iN <=57) //数字 return 1; if (iN>=65 && ...

  7. Linux 安装配置JDK 、 MySQL 、nginx

    今天我来讲一下在Linux下各环境的搭建,主要就讲一下jdk.MySQL.和一个代理服务器nginx 1. jdk的安装配置 1)卸载自带openjdk 当我们拿到一个全新的ECS的时候上面有的会自带 ...

  8. Django之ORM的增删改查操作流程

    总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...

  9. 释放Win8.1 WinSxS冗余更新,微软Dism来解决

    命令提示符(管理员) dism /online /Cleanup-Image /StartComponentCleanup /ResetBase 有些文章不建议使用 /RestBase,可能会有风险.

  10. Metadata

    元数据是关于数据的组织.数据域及其关系的信息,简言之,元数据就是关于数据的数据. Metadata is "data [information] that provides informat ...