遵义做百度网站一年多少钱,中国企业建设网站,网站改版上线,邮件网站怎么做的题目#xff1a; 翻译#xff1a; 思路#xff1a; 1、在一个集合中有多组线段#xff0c;如果有不相交的两组线段#xff0c;则输出YES#xff0c;否则输出NO。 2、每次操纵可以选择增加一组线段或者删除一组线段后#xff0c;输出YES或者NO。 3、用flag标记该线段是否… 题目 翻译 思路 1、在一个集合中有多组线段如果有不相交的两组线段则输出YES否则输出NO。 2、每次操纵可以选择增加一组线段或者删除一组线段后输出YES或者NO。 3、用flag标记该线段是否还在集合中flag1表示在flag0表示不在。 4、找到最大起始点和最小的结束点当最大的起始点减去最小的结束点大于0则说明存在两组不相交的线段输出YES小于等于则说明不存在输出NO。 代码
#includeiostream
#includealgorithm
using namespace std;
typedef struct node
{long long begin 0, end 0;int flag 1;
}node;
bool cmp1(node a, node b)
{return a.begin b.begin;
}
bool cmp2(node a, node b)
{return a.end b.end;
}
int main()
{int n,k0;char a;node b[12];long long minend 1e9, maxbegin 0;cin n;for (int i 0; i n; i){cin a;long long c, d;cin c d;if (a )b[k].begin c, b[k].end d;if (a -){for (int j 0; j i; j){if (b[j].begin c b[j].end d b[j].flag1){b[j].flag 0;break;}}}long long minend 1e9, maxbegin 0;int v0;sort(b, b k, cmp1);//求maxbegin从大到小排序for (int j 0; j k; j){if (b[j].begin maxbegin b[j].flag 1){maxbegin b[j].begin;break;}}sort(b, b k, cmp2);//求minend从小到大排序for (int j 0; j k; j){if (b[j].end minend b[j].flag 1){minend b[j].end;break;}}if (i 0){cout NO endl;continue;}if (maxbegin - minend 0)cout YES endl;elsecout NO endl;}
}
结果