这次套路深啊,怎么还有改错题!。

上来看题,每个题目的输入数据都很大,果断上scanf,printf, 千万不能用cin,cout

1. 右上角的点,我的思路是先对每一行去重(题目好像说没有重的点耶!),每一行只有最右边的点才是候选点,然后对这些候选点按照y坐标,从大到小访问,要求相应的x是严格递增的,最后打印输出。

 1 #include<bits/stdc++.h>
 2 #define pb push_back
 3 typedef long long ll;
 4 using namespace std;
 5 typedef pair<int, int> pii;
 6 const int maxn = 1e3 + 10;
 7 int n;
 8 void solve() {
 9     map<int, int> ma;
10     scanf("%d", &n);
11     int x, y;
12     for (int i = 0; i < n; i++) {
13         scanf("%d%d", &x, &y);
14         if(ma.count(y)) {
15             ma[y] = max(ma[y], x);
16         } else ma[y] = x;
17     }
18     vector<pii> res;
19     auto it = ma.rbegin();
20     x = it->second - 1;
21     //cout << it->first <<endl;
22     while(it != ma.rend()) {
23         if(it->second > x) {
24             res.pb({it->second, it->first});
25             x = it->second;
26         }
27         it++;
28     }
29     for (pii t : res) {
30      printf("%d %d\n", t.first, t.second);
31     }
32 }
33
34 int main() {
35     freopen("test.in", "r", stdin);
36     //freopen("test.out", "w", stdout);
37     solve();
38     return 0;
39 }

View Code

2. 我认为是分治, 首先考虑数组的最小值,哪些区间可以取到取小值,取到最小值,使得结果最大,当然是和最大,那就是全部的数,接下来这个最小值就可以不考虑了,分别对左半和右半重复上面处理。

#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 5e5 + 10;int n;
ll a[maxn];
ll s[maxn];
ll f(int x, int y) {return s[y] - s[x - 1];
}
ll res = 0;
void work(int x, int y) {if(x > y) return;if(x == y) {res = max(res, a[x] * a[x]);return;}int p = x;for (int i = x; i <= y; i++) {if(a[i] < a[p]) {p = i;}}res = max(res, a[p] * f(x, y));work(x, p - 1);work(p + 1, y);
}
void solve() {scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%lld", &a[i]);s[i] = s[i - 1] + a[i];}work(1, n);printf("%lld\n", res);
}int main() {freopen("test.in", "r", stdin);//freopen("test.out", "w", stdout);solve();return 0;
}

3. 题目描述的挺复杂,就是多个角度的优先队列,然后就试了试刚学习的函数类(仿函数,函数对象,函数指针),以及lambda表达式,写了一下。

最后过了80%, 我的是按时间模拟的,题目的范围是【1,3000】,我的for循环是1-3000,突然想到有些任务可能到3000的时候一直没有程序员空闲,所以for循环至少要到6000才行,这样才能ac吧。

感觉模拟到6000也不行。应该是任务队列判空为止才行。

 1 #include<bits/stdc++.h>
 2 #define pb push_back
 3 typedef long long ll;
 4 using namespace std;
 5 typedef pair<int, int> pii;
 6 const int maxn = 3e3 + 10;
 7 struct node {
 8     int id, p, s, pr, t;
 9 };
10 int n, m, p;
11 node a[maxn];
12 //这里扩大范围
13 int f[maxn * 2];
14 int res[maxn];
15 class cmp {
16 public:
17     bool operator()(const node&x, const node&y) {
18         if(x.pr == y.pr) {
19             if(x.t == y.t) {
20                 return x.s < y.s;
21             } else {
22                 return x.t < y.t;
23             }
24         } else {
25             return x.pr > y.pr;
26         }
27     }
28 };
29 set<node, cmp> data[maxn];
30 void solve() {
31     int x, y, x1, y1;
32     scanf("%d%d%d", &n, &m, &p);
33     for (int i = 1; i <= p; i++) {
34         scanf("%d%d%d%d", &x, &y, &x1, &y1);
35         a[i] = {i, x, y, x1, y1};
36     }
37     sort(a + 1, a + p + 1, [](const node&x, const node&y)->bool{return x.s < y.s;});
38     int cur = 0;
39     f[1] = m;
40     set<int> se;
41     x = 1;
42     int cnt = 0;
43     //这里应该模拟到6000, 保证所有的任务都有机会执行,或者更大。
44     for (int i = 1; i <= 3000; i++) {
45         cur += f[i];
46         while(x <= p) {
47             //cout << x << endl;
48             if(a[x].s == i) {
49                 data[a[x].p ].insert(a[x]);
50                 //cout << "asd " << a[x].id << endl;
51                 x++;
52                 cnt++;
53             } else break;
54         }
55         if(cur <= 0 || cnt == 0) continue;
56         int t = cur;
57
58         for (int j = 0; j < t; j++) {
59             int id = -1;
60             int ti = 0;
61             for (int k = 1; k <= n; k++) {
62                 if(data[k].size() == 0)
63                     continue;
64                 else {
65                    // cout << k << " asd " << (data[k].begin())->t << endl;
66                     if(id == -1 || (data[k].begin())->t < ti) {
67                     id = k;
68                     ti = (data[k].begin())->t;
69                 }}
70             }
71             //cout << id << " " << ti << endl;
72             cur--;
73             cnt--;
74             node nd = *data[id].begin();
75             data[id].erase(data[id].begin());
76             res[nd.id] = i + nd.t;
77             f[i + nd.t]++;
78
79             if(cnt <= 0 || cur <= 0) break;
80         }
81
82     }
83     for (int i = 1; i <= p; i++)
84         printf("%d\n", res[i]);
85 }
86
87 int main() {
88     freopen("test.in", "r", stdin);
89     //freopen("test.out", "w", stdout);
90     solve();
91     return 0;
92 }

转载于:https://www.cnblogs.com/y119777/p/7420563.html

8.22 今日头条笔试相关推荐

  1. 字节跳动今日头条笔试题目经历2018

    本人是 字节跳动2018年12月来学校宣讲会招实习生的时候参加笔试的.方向是后端开发.那时候还在学框架啊之类的还没开始刷算法,笔试的三道题目只做出了第一道的代码,其他两道都是只写出了分析过程.刚刚出结 ...

  2. 今日头条笔试之字母交换

    一.题目描述 [编码题]字符串S由小写字母构成,长度为n.定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换.询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同? 输入描述 ...

  3. 今日头条笔试第二题--文章病句标识

    为了提高文章质量,每一篇文章(假设全部都是英文)都会有m名编辑进行审核,每个编辑独立工作,会把觉得有问题的句子通过下标记录下来, 比例[1, 10],1表示病句的第一个字符,10表示病句的最后一个字符 ...

  4. 今日头条2018校园春季招聘研发岗位笔试(第一场)经验

    笔试公司:今日头条 笔试岗位:后端开发 笔试时间:2018年3月24日19:00-21:00 笔试形式:牛客网在线做题 笔试回忆: 笔试总共五道题.是的,只有五道编码题,没有选择or填空. 第一题,输 ...

  5. 今日头条2018.8.12笔试题总结

    今日头条笔试题1(经典的floodfill问题): 具体可以参考leetcode 200题:Number of Islands 1. 一个球场C的球迷看台可容纳M*N个球迷.官方想统计一共有多少球迷群 ...

  6. 总结一下刚刚参加了今日头条的线上前端笔试

    我参加的是今日头条的前端笔试,感觉凉凉了,看来还是要知彼知己,下次要事先预习一下对方的笔试题,先从最后一题开始回忆吧,我尽量回忆全一点,希望能够帮到广大网友,我自己也要加进补一下数据结构,算法方面的知 ...

  7. 2018今日头条秋招 笔试 (2017/09/10)

    20170910 头条笔试 算法岗 [改错题] 二分查找 http://blog.csdn.net/v_july_v/article/details/7093204 //首先要把握下面几个要点: // ...

  8. 今日头条2018春季校园招聘研发岗位笔试编程题 - 题解

    由于24号头条笔试我还在回学校的路上,因此没有在笔试中做题,这些题目都是后来同学给我的,我做了下,不保证100%通过,因为我自己没在笔试中提交过.如果题目抄写有误或者说我的解法有误,或者你有更好的解法 ...

  9. 今日头条后端面经总结(2018.12月)(转自牛客网)

    面经(后端): 一 操作系统中的进程和线程还有虚拟存储. 计算机网络TCP和UDP仔细看一下,也不要放过滑动窗口; 还有计算机网络体系结构各层都要熟悉. lambda表达式 spring 智力题,比如 ...

  10. AI一分钟|AI聊机器人“Shibuyu Mirai”获日本居住权,传今日头条3亿美元收购Faceu激萌

    一分钟AI 继Sophia获得公民权后,AI聊机器人"Shibuyu Mirai"获日本居住权 今日头条收购相机拍照工具Faceu激萌,据传交易总价约为3亿美元 "谷歌自 ...

最新文章

  1. 安装完DevExpress14.2.5,如何破解它呢?
  2. Swift2.0语言教程之闭包
  3. BZOJ3488 : [ONTAK2010]Highways
  4. 5.Hadoop的学习(Hadoop的配置(伪分布式的搭建)-1)
  5. Linux C 实现一个简单的线程池
  6. 自动部署war包脚本
  7. SQL Server定期自动备份
  8. xlswrite wps matlab,Matlab实例学习-----Matlab与Excel交互,Matlab作为自动化客户端调用Excel服务器...
  9. python机械臂写字_SCARA机器人 机械手臂 写字机 DIY 视觉识别
  10. matlab 空间解析几何,Matlab 数学软件包在向量代数—空间解析几何中的应用
  11. Ubuntu RTL8821ce网卡驱动
  12. 微信的“QQ邮箱提醒”接收发往网易163邮件
  13. visual studio进入时许可证已过期解决方案
  14. Windows PE 第四章 导入表
  15. 解决报错:soundfile.LibsndfileError: Error opening ‘.wav‘: File contains data in an unknown format.
  16. 哒哒哒~~今天说 事务的隔离级别和传播特性
  17. JBoss的AS版本 Wildfly 介绍和使用
  18. 《spss统计分析与行业应用案例详解》:实例十二 卡方检验
  19. 淘淘商城第一天—电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
  20. 软件磁盘阵列(software raid)

热门文章

  1. 【蓝桥杯】第八届java A组题详解
  2. 2021进销存管理软件最具影响力榜单排名
  3. 图像算法之3D人脸识别技术原理概述
  4. linux安装音乐软件教程,Ubuntu 下安装深度音乐播放器
  5. 数据库如何执行sql语句
  6. 天九共享全方位孵化增添活力 助力独角兽企业开辟更多新大陆
  7. 计算机网络习题——循环冗余校验
  8. steam显示不能连接网络连接服务器,steam请检查网络连接
  9. 高级终端termux下载不了Python_最新Termux安装MSF(metasploit)教程
  10. 人工智能杂记 人工智能简史