题目链接:http://codeforces.com/contest/733/problem/D

用map<pair<int, int>int>标记(第一次用~)...

代码:

  1 #include <bits/stdc++.h>
  2 #define MAXN 100001
  3 using namespace std;
  4
  5 typedef pair<int, int> pair1;
  6 typedef map<pair1, int> map1;
  7
  8 struct gg{
  9     int x, y;
 10     int xx, yy;
 11     int xxx, yyy;
 12 }jj[MAXN*3];
 13
 14 int main(void){
 15     int n, k=1;
 16     map1 mp;
 17     for(int i=0; i<MAXN; i++){
 18         jj[i].x=jj[i].y=jj[i].xx=jj[i].yy=jj[i].xxx=jj[i].yyy=0;
 19     }
 20     scanf("%d", &n);
 21     for(int i=1; i<=n; i++){
 22         int a[3], ok1=0, ok2=0, ok3=0;
 23         scanf("%d%d%d", &a[0], &a[1], &a[2]);
 24         sort(a, a+3);
 25         if(a[0]==a[2]){
 26             ok1=1;
 27         }
 28         if(a[0]==a[1]){
 29             ok2=1;
 30         }
 31         if(a[1]==a[2]){
 32             ok3=1;
 33         }
 34         int flag1=mp[pair1(a[0], a[1])];
 35         if(flag1==0){
 36             jj[k].x=a[0];
 37             jj[k].y=a[1];
 38             jj[k].xx=a[2];
 39             jj[k].xxx=i;
 40             mp[pair1(a[0], a[1])]=k;
 41             k++;
 42         }else{
 43             if(jj[flag1].xx>jj[flag1].yy){
 44                 swap(jj[flag1].xx, jj[flag1].yy);
 45                 swap(jj[flag1].xxx, jj[flag1].yyy);
 46             }
 47             if(jj[flag1].xx<a[2]){
 48                 jj[flag1].xx=a[2];
 49                 jj[flag1].xxx=i;
 50             }
 51         }
 52         if(ok1){
 53             continue;
 54         }
 55         if(!ok3){
 56             int flag2=mp[pair1(a[0], a[2])];
 57             if(flag2==0){
 58                 jj[k].x=a[0];
 59                 jj[k].y=a[2];
 60                 jj[k].xx=a[1];
 61                 jj[k].xxx=i;
 62                 mp[pair1(a[0], a[2])]=k;
 63                 k++;
 64             }else{
 65                 if(jj[flag2].xx>jj[flag2].yy){
 66                     swap(jj[flag2].xx, jj[flag2].yy);
 67                     swap(jj[flag2].xxx, jj[flag2].yyy);
 68                 }
 69                 if(jj[flag2].xx<a[1]){
 70                     jj[flag2].xx=a[1];
 71                     jj[flag2].xxx=i;
 72                 }
 73             }
 74         }
 75         if(ok2){
 76             continue;
 77         }
 78         int flag3=mp[pair1(a[1], a[2])];
 79         if(flag3==0){
 80             jj[k].x=a[1];
 81             jj[k].y=a[2];
 82             jj[k].xx=a[0];
 83             jj[k].xxx=i;
 84             mp[pair1(a[1], a[2])]=k;
 85             k++;
 86         }else{
 87             if(jj[flag3].xx>jj[flag3].yy){
 88                 swap(jj[flag3].xx, jj[flag3].yy);
 89                 swap(jj[flag3].xxx, jj[flag3].yyy);
 90             }
 91             if(jj[flag3].xx<a[0]){
 92                 jj[flag3].xx=a[0];
 93                 jj[flag3].xxx=i;
 94             }
 95         }
 96      }
 97     int cc=0, dd=0, ee=0;
 98     for(int i=1; i<k; i++){
 99         int cnt=min(jj[i].x, jj[i].y);
100         cnt=min(cnt, jj[i].xx+jj[i].yy);
101         if(cc<cnt){
102             cc=cnt;
103             dd=jj[i].xxx;
104             ee=jj[i].yyy;
105         }
106     }
107     if(dd&&ee){
108         printf("2\n%d %d\n", dd, ee);
109     }else{
110         printf("1\n%d\n", dd+ee);
111     }
112     return 0;
113 }

转载于:https://www.cnblogs.com/geloutingyu/p/6024263.html

cf378D(stl模拟)相关推荐

  1. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

    目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...

  2. 1/22 测试一(STL 模拟 贪心)C.(贪心,给出气球,输出最好成绩)Contest Balloons

    1/22 测试一(STL 模拟 贪心) C.(贪心,给出气球,输出最好成绩)Contest Balloons One tradition of ACM-ICPC contests is that a ...

  3. STL模拟实现1.0 -- list和iterator模拟实现和简单分析

    引言 C ++ 标准模本库<STL>中有很多优秀的代码实现,不然怎么能叫做C++标准模板库呢,其中一个实现就是有一个容器,叫做list.所谓容器其实就是存储相同类型数据的一个存储集合,li ...

  4. UVA-11995(STL+模拟)附讲解

    题目传送门 题目大意 给一个"包"(某种数据结构)输入一些数据,然后又从中取出一部分,根据这些数据判断这个"包"是哪种数据结构,对应输入"stack& ...

  5. C++ STL : 模拟实现STL中的容器适配器stack和queue

    目录 什么是容器适配器 stack stack的文档介绍-(来自cplusplus) stack的实现 queue queue的文档介绍-(来自cplusplus) queue的实现 什么是容器适配器 ...

  6. C++ STL : 模拟实现STL中的list类

    文章目录 list list的介绍 list的优缺点 list的迭代器失效问题 实现的接口 节点部分 迭代器部分 list部分 代码实现 list list的介绍 list的文档介绍 list是可以在 ...

  7. C++ STL : 模拟实现STL中的vector类

    文章目录 vector vector的介绍 vector的优缺点 实现时需要注意的细节问题 1. Capacity增长问题 2. memset等函数来带的按字节拷贝问题 3. 深浅拷贝问题 4. 迭代 ...

  8. 【51nod - 1875】 丢手绢(约瑟夫问题,可打表,用STL模拟)

    题干: 六一儿童节到了,小朋友们在玩丢手绢的游戏.总共有C个小朋友,编号从1到C,他们站成一个圈,第i(1<i<=C)个人的左边是i-1,第1个人的左边是C.第i(1<=i<C ...

  9. hrbust 1313 火影忍者之~静音【优先队列STL+模拟】

    火影忍者之-静音 Time Limit: 1000 MS Memory Limit: 32767 K Total Submit: 246(58 users) Total Accepted: 76(54 ...

  10. AtCoder - ABC 170 - D(思维+数论)E(STL+模拟)

    D - Not Divisible 题意: 现有一个长度为 n 的序列 A,请你输出满足以下条件的所有整数  的数量: 对于每一个整数 j (1 ≤ j ≤ n且 i ≠ j) ,  ≠ 0 ( mo ...

最新文章

  1. Lotus Sametime 服务器的安装和配置
  2. Linux系统调用及其效率
  3. 正则表达式发明者_正则表达式 – 简介
  4. 56.ISE综合,在chipscope信号列表看不到
  5. 如何在画面中摆放大量图片
  6. CF496E-Distributing Parts【平衡树,贪心】
  7. 链表相加 2. 两数相加
  8. UNIX(多线程):17---异步任务提供者(Provider) 介绍
  9. 特殊乘法(字符串循环的结束标志)
  10. c++ 正则表达式_Java入门 - 语言基础 - 18.正则表达式
  11. c语言实现线程相关操作,如何用C语言实现多线程
  12. 学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
  13. Linux-----信号量
  14. CSDN 中 MarkDown编辑器自动生成目录
  15. uber_您需要了解的有关Uber驾驶的知识
  16. 韩乔生最牛的一次解说 (超级搞笑)
  17. 使用批处理进行简单U盘杀毒 - TEST
  18. WindowManager LayoutParams 上
  19. android点击按钮打开相册,打开相机的代码
  20. Arduino开发板esp32

热门文章

  1. 全网首发:以管理员身份运行bat,自动切换盘符、目录的正确做法
  2. 环形电流计算公式_圆环电流的电流密度
  3. bat批处理 变量名写入文本,中文写入文本,延迟写入文本
  4. html flash rtmp,Web直播之RTMP协议:vue-video-player + videojs-flash
  5. 本科计算机相关课程设计,计算机科学及技术专业本科生大学课程设计.doc
  6. 城市定位html,城市定位页.html
  7. dom运行java中文错误,java – org.w3c.dom.DOMException:WRONG_DOCUMENT_ERR:一个节点用于不同于创建它的文档中的文档...
  8. python 股票行情_十分钟学会用Python交易股票
  9. Python3优雅操作-时间处理与定时任务
  10. “九”答不可 | 量子计算会“带来革命性改变”吗?