名企笔试:腾讯2016秋招笔试编程题 2017-03-04 算法爱好者
来源:互联网 发布:foreach遍历多维数组 编辑:程序博客网 时间:2024/05/18 03:17
有一个由很多木棒构成的集合,每个木棒有对应的长度,请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上,简单多边形即不会自交的多边形。初始集合是空的,有两种操作,要么给集合添加一个长度为 L 的木棒,要么删去集合中已经有的某个木棒。每次操作结束后你都需要告知是否能用集合中的这些木棒构成一个简单多边形。输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n 表示操作的数量(1 ≤ n ≤ 50000) ,接下来有n行,每行第一个整数为操作类型 i (i ∈ {1,2}),第二个整数为一个长度 L(1 ≤ L ≤ 1,000,000,000)。如果 i=1 代表在集合内插入一个长度为 L 的木棒,如果 i=2 代表删去在集合内的一根长度为 L 的木棒。输入数据保证删除时集合中必定存在长度为 L 的木棒,且任意操作后集合都是非空的。输出描述:对于每一次操作结束有一次输出,如果集合内的木棒可以构成简单多边形,输出 “Yes” ,否则输出 “No”。输入例子:51 11 11 12 11 2输出例子:NoNoYesNoNo
C++源代码:
//Tencent problem 2017.03.04//2017.03.04 by wyj/*名企笔试:腾讯2016秋招笔试编程题 2017-03-04 算法爱好者有一个由很多木棒构成的集合,每个木棒有对应的长度,请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上,简单多边形即不会自交的多边形。 初始集合是空的,有两种操作,要么给集合添加一个长度为 L 的木棒,要么删去集合中已经有的某个木棒。每次操作结束后你都需要告知是否能用集合中的这些木棒构成一个简单多边形。输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n 表示操作的数量(1 ≤ n ≤ 50000) , 接下来有n行,每行第一个整数为操作类型 i (i ∈ {1,2}),第二个整数为一个长度 L(1 ≤ L ≤ 1,000,000,000)。如果 i=1 代表在集合内插入一个长度为 L 的木棒,如果 i=2 代表删去在集合内的一根长度为 L 的木棒。输入数据保证删除时集合中必定存在长度为 L 的木棒,且任意操作后集合都是非空的。输出描述:对于每一次操作结束有一次输出,如果集合内的木棒可以构成简单多边形,输出 “Yes” ,否则输出 “No”。输入例子:51 11 11 12 11 2输出例子:NoNoYesNoNo*///Pro20170304.cpp#include#include using namespace std;typedef list
INTLIST;//从前向后显示list队列的全部元素 void put_list(INTLIST list, char *name){INTLIST::iterator plist;cout << "The contents of " << name << " : ";for (plist = list.begin(); plist != list.end(); plist++)cout << *plist << " ";cout << endl;}int main(){int n;int num = 0;int i;int CurrentMax = 0;int SumExceptMax = 0;int a[50000][2] = { 0 };INTLIST list1;cin >> n;for (i = 0;i < n;i++)cin >> a[i][0] >> a[i][1];for (i = 0;i < n;i++){if (a[i][0] == 1){num++;list1.push_back(a[i][1]);if (a[i][1] >= CurrentMax){SumExceptMax += CurrentMax;CurrentMax = a[i][1];}elseSumExceptMax += a[i][1];}else if (a[i][0] == 2){num--;for (list ::iterator it = list1.begin(); it != list1.end(); ){if (*it == a[i][1]){it = list1.erase(it);break;}elseit++;}if (a[i][1] == CurrentMax){list1.sort();CurrentMax = list1.back();SumExceptMax -= CurrentMax;}else if (a[i][1] < CurrentMax)SumExceptMax -= a[i][1];}//put_list(list1, "list1");//cout << num << ',' << CurrentMax << ',' << SumExceptMax << endl;if (num >= 3 && CurrentMax < SumExceptMax)cout << "Yes" << endl;elsecout << "No" << endl;}return 0;}/*测试数据:输入:101 21 31 11 11 62 11 22 31 41 16*/
0 0
- 名企笔试:腾讯2016秋招笔试编程题 2017-03-04 算法爱好者
- 名企笔试:百度2017春招笔试真题编程题(买帽子)2017-05-17 算法爱好者
- 名企笔试:百度2017春招笔试真题编程题(度度熊回家)2017-05-18 算法爱好者
- 名企笔试:好未来2017秋招笔试:(倒置字符串)2017-03-07 算法爱好者
- 名企笔试:滴滴出行2017秋招笔试(餐馆消费问题)2017-03-06 算法爱好者
- 名企笔试:好未来2017秋招笔试(连续最长的数字串)2017-03-05 算法爱好者
- 名企笔试:蘑菇街2017校招笔试题(修理桌子问题)2017-03-09 算法爱好者
- 名企笔试:网易2017内推笔试编程题(合唱团)2017-03-11 算法爱好者
- 名企笔试:2017美团java工程师笔试编程题(特殊运算)2017-03-02 算法爱好者
- 腾讯2016秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招编程笔试题
- 腾讯2017秋招笔试编程题
- 腾讯2017秋招笔试编程题
- 名企笔试:360研发工程师笔试题(挑选镇长)2017-03-14 算法爱好者
- 名企笔试:2016网易笔试题(路灯)2017-05-16 算法爱好者
- 看完这个帖子让你彻底搞懂Websocket原理(转载)
- spark dataframe API 整理
- 使用阿里云PCDN降低内容分发成本
- 一些好的书籍
- mac下安装docker
- 名企笔试:腾讯2016秋招笔试编程题 2017-03-04 算法爱好者
- ubuntu下安装JDK和配置JDK环境变量
- 用类模板实现任何类型之间转换
- hdu4635 Strongly connected(tarjan计算强连通通分量+缩点+思想)
- [摘抄-Socket-学习中]TCP&UDP通信中socket端口的复用
- 利用python计算太阳天顶角、方位角、高度角
- Git------Commit和Push的区别
- 如何截取url后面的参数
- JAVA将String转换为json并用gson解析