【t081】序列长度(贪心做法)
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数,用区间
[ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai,bi]这个区间的整数至少有ci个。现在给出若干个这样的区间,
请你求出满足条件的最短序列长度是多少。如果不存在则输出 -1。
【输入格式】
第一行包括一个整数n(n<=1000),表示区间个数;
以下n行每行描述这些区间,第i+1行三个整数ai,bi,ci,由空格隔开,其中0<=ai<=bi<=1000 而且 1<=ci<=bi-ai+1。
【输出格式】
文件输出只有一个整数表示满足要求序列长度的最小值。
Sample Input
5
3 7 3
8 10 3
6 8 1
1 3 1
10 11 1
Sample Output
6
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t081
【题解】
先把n个ai,bi,ci按照ai第一关键字,bi第二关键字升序排;
然后逆序处理n个关系;
优先选ai..bi这个区间里面的前面部分(当然如果这个区间里面有些数字已经被选了就不用再选了),这样优先选前面的部分,就能让前面的关系更容易利用公共的部分;就是这样的贪心吧.
转换成编程语言就是升序枚举啦^_^
(想不出来什么情况会无解..)
【完整代码】
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 1000+100;struct abc
{int a,b,c;friend bool operator < (abc x,abc y){if (x.a==y.a){if (x.b==y.b)return true;elsereturn x.b<y.b;}elsereturn x.a < y.a;}
};int n;
bool bo[MAXN];
abc t[MAXN];int main()
{//freopen("F:\\rush.txt","r",stdin);scanf("%d",&n);for (int i = 1;i <= n;i++)scanf("%d%d%d",&t[i].a,&t[i].b,&t[i].c);sort(t+1,t+1+n);for (int i = n;i >= 1;i--){for (int j = t[i].a;j <= t[i].b;j++)if (bo[j]){t[i].c--;if (t[i].c==0)break;}if (t[i].c!=0){for (int j = t[i].a;j <= t[i].b;j++)if (!bo[j]){t[i].c--;bo[j] = true;if (t[i].c==0)break;}}}int si = 0;for (int i = 0;i <= 1000;i++)if (bo[i])si++;printf("%d\n",si);return 0;
}
转载于:https://www.cnblogs.com/AWCXV/p/7626662.html
【t081】序列长度(贪心做法)相关推荐
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
- LeetCode 376. 摆动序列(贪心 动态规划)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个 ...
- BZOJ 1046: [HAOI2007]上升序列【贪心+二分状态+dp+递归】
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4987 Solved: 1732 [Submit][St ...
- linux系统fasta程序,快速计算fasta序列长度的方法
最近看了一下进入PLoB的网页来路分析,看到有同学搜索计算fasta序列长度.其实自己在之前的数据分析中也遇到过相关的问题,这里给大家分享两种我常用的方法. 方法一:linux下用awk计算fasta ...
- 使用Python计算fasta文件的序列长度
使用Python计算fasta文件的序列长度 在这里插入代码片使用Python计算fasta文件的序列长度 #!/usr/bin/python #-- coding:utf-8 -- import s ...
- 仅用笔记本电脑解析90%蛋白质,单卡推理序列长度破万!Colossal-AI开源方案让AlphaFold推理提速5倍,显存降低75%
蛋白质是生命的物质基础,几乎支持着生命的所有功能.弄清楚蛋白质折叠成什么形状被称为 "蛋白质折叠问题",在过去的50年里一直是生物学的一个巨大挑战.AlphaFold将Transf ...
- LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n ,请你找到满足下面条件的一个序列: 整数 1 在序列中只出现一次. 2 到 n 之间每个整数都恰好出现两次. 对于每个 2 到 n 之间 ...
- 每天一道LeetCode-----计算最长的元素连续序列长度
Longest Consecutive Sequence 原题链接Longest Consecutive Sequence 给定一个序列,寻找最长的连续元素序列,对于示例而言,给定的序列中存在1,2, ...
- python查找序列元素的最大值和最小值_pthon基础知识(索引、切片、序列相加、乘法、检查元素是否是序列成员、计算序列长度、最大最小值)...
序列 数据存储方式 数据结构 python 列表.元组.字典.集合.字符串 序列: 一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值 索引(编号): 索引可以是负数 从左到 ...
最新文章
- 实时实例分割的Deep Snake:CVPR2020论文点评
- MaximumGap的思想
- 凸优化 [Convex Optimization] — [美] 鲍德(Stephen Boyd),Lieven Vandenberghe 著,王书宁,许鋆,黄晓霖 译
- 《中餐厅》弹幕数据分析,我不要你觉得,我只要我觉得!
- 8086汇编常用代码总结(个人向),包含换行函数(过程),执行输出,结束程序
- linux验证cuda安装成功_Linux环境CUDA 4.0入门:验证安装
- Java常见面试知识点:继承、接口、多态、代码块
- numpy将ndarray数据拼接合并
- pythonspark实践_基于Python的Spark Streaming Kafka编程实践
- 13.1.DataGrid的增、删、改、查前台页面
- 给2021的Java一些建议,赶紧收藏!
- c++求两点的距离利用友元_用c++定义两个坐标点,计算两点间距离;进而计算线段的面积...
- linux 下的emoji在MariaDB中的字符集修改
- 用SPFA判断是否存在负环
- spark-shell如何粘贴换行代码
- jquery修改带!important的css样式
- 用jQuery实现.net 2.0 treeview客户端无刷新操作的实例
- Open3D 欧式聚类
- 修复 海盗船 k70 lux 未检测到设备(k70 no device detected)
- 4399PK3366 拭目以待