【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 列表.元组.字典.集合.字符串 序列: 一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值 索引(编号): 索引可以是负数 从左到 ...
最新文章
- Linux下,各种解压缩命令集合
- 【Android 逆向】修改 Android 系统文件 ( Android 逆向中需要经常修改的文件和目录 | 在 root 后的设备中获取 / 目录的 rw 权限后注意事项 )
- 跳一跳python源码_使用Python实现跳一跳自动跳跃功能
- [转]java Socket InputStream 阻塞 问题
- 项目经济规模的估算方法_估算英国退欧的经济影响
- 机器学习中qa测试_如何对机器学习做单元测试
- 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
- XNA实现不停循环的路的效果
- javascript 生成 UUID GUID 浏览器环境 NodeJS环境 纯JavaScript函数
- 轻松搞懂Java中的自旋锁
- ubuntu18.4解决问题: Installation failed. See log at /var/log/cuda-installer.log for details.
- 学习笔记三:衍生兄弟——过冲和振铃
- linux shell 宏定义_一篇教会你写90%的shell脚本
- 【Excel】乱序不同行数的两列数据对比匹配
- mac 版本navicate 如何安装破解版
- 如何解决“Component ‘MSCOMCTLOCX‘ or one of its dependencies .....“
- java拼音字符串的顺序,Java字符串按照汉语拼音排序
- “买家秀“与“卖家秀”
- ROS综合学习记录(一)---cmd_vel转换为阿克曼模型的速度变换
- 淘宝无线端店铺权重提升方法技巧步骤