题意: 最多能选几条不重叠的线段 思路: 按R从小到大排序,维护一个最大的右端点 右端点最小的那个线段是必选的,可以贪心地证明 代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<stack> #include<queue> #include<deque>…
1133 不重叠的线段   X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠).   例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠. Input 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E <= 10^9) Output 输出最多可以选择的线段数量. #include <bi…
1133 不重叠的线段 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠).   例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠. Input 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E &…
1133 不重叠的线段  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠). 例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠. Input 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 - N + 1行:每行2个数,线段的起点和终点(-10^9 <= S,E &l…
Input示例 3 1 5 2 3 3 6 Output示例 2 题意:给出n条一维线段,求不重合的最多线段数. 解析:这个是典型的贪心算法的区间问题. 贪心策略:每次取尽可能短的区间,而且保证相互之间不重合.那么我们将区间的右边界进行升序排序(左边界要从右往左考虑),然后开循环扫描,维护一个右边界,进行判断.以下是我的代码   #include "bits/stdc++.h" using namespace std; #define rep(i, s, n) for(int i=s;…
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1133 题目分析:感觉这到第不应该被分到二级算法题,比 1091 要水的多.拿到题后就发现是一道区间贪心题,首先将线段按起始点递减排列,如果起始点相同则按结束点递增排列.然后循环判断线段的结束点是否小于或等上一个线段的起始点,如果成立进行标记,然后标记的个数就是最多互不重叠的线段数. 代码如下: #include <iostream> #include &l…
1364 最大字典序排列基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出一个1至N的排列,允许你做不超过K次操作,每次操作可以将相邻的两个数交换,问能够得到的字典序最大的排列是什么? 例如:N = 5, {1 2 3 4 5},k = 6,在6次交换后,能够得到的字典序最大的排列为{5 3 1 2 4}. Input 第1行:2个数N, K中间用空格分隔(1 <= N <= 100000, 0 <= K <= 10^9). 第2至N + 1行…
[题意]给定序列,支持区间加和区间乘,查询区间和取模.n<=10^5. [算法]线段树 [题解]线段树多重标记要考虑标记与标记之间的相互影响. 对于sum*b+a,+c直接加上即可. *c后就是(sum*b+a)*c=sum*b*b+a*c,也就是加法的部分也要乘. 所以,每次在乘法的时候要把加法标记也乘上.下传时先传乘法. 注意乘法初始值为1,但是取模后可能为0. #include<cstdio> #include<cstring> #include<cctype&g…
没有换根操作 考虑如果没有换根操作,我们该怎么做. 我们可以求出原树的\(dfs\)序列,然后开线段树维护. 对于修改操作,我们可以倍增求\(LCA\),然后在线段树上修改子树内的值. 对于询问操作,我们直接查询子树内的值. 但有了换根操作,\(LCA\)就可能不再是原来的\(LCA\),子树也就可能不再是原来的子树了. 换根操作后的\(LCA\) 通过一波画图+找规律,我们可以发现,在根为\(rt\)时,换根操作后的\(LCA(x,y)\)大致有如下几种情况:(以下讨论中\(x,y\)互换同理…
区间上的dp状态设计最基本的形式: \(F[i]\)表示以i结尾的最优值或方案数. \(F[i][k]\)表示以i结尾附加信息为k的最优值或方案数. 当然可以有多维附加信息. 转移的话往往是枚举上一个断点. \(F[i]=max \{ F[j]+ w(j+1,i) | j是一个满足转移条件的断点\}\). 另一个很常见的是:$ f[i][j]$前i个位置分成j段/选出j个的最优值. 这是最简单的一类序列上的dp bzoj1003 有m个码头和e条航线,每天航线有成本.有连续n天需要从1号码头到m…