出题人好评。

评测机差评。

A 救救喵咪

二位偏序。如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了。

#include <bits/stdc++.h>
struct Node {
int x, y;
}a[1010]; int main() {
int n;
std::cin >> n;
for(int i = 1; i <= n; ++i) {
std::cin >> a[i].x >> a[i].y;
}
for(int i = 1; i <= n; ++i) {
int ans = 0;
for(int j = 1; j <= n; ++j) {
if(a[j].x > a[i].x && a[j].y > a[i].y) ++ans;
}
printf("%d\n", ans);
}
}

B 救救兔子

二分经典题。注意初始化即可。

#include <bits/stdc++.h>

#define N 100010
#define ll long long
#define int long long
ll a[N];
int m, n; ll find_max(ll x) {
int l = 1, r = n, ans = n;
while(l <= r) {
int mid = (l + r) >> 1;
if(a[mid] >= x) ans = mid, r = mid - 1;
else l = mid + 1;
}
return a[ans];
} ll find_min(ll x) {
int l = 1, r = n, ans = 1;
while(l <= r) {
int mid = (l + r) >> 1;
if(a[mid] <= x) l = mid + 1, ans = mid;
else r = mid - 1;
}
return a[ans];
} signed main() {
#ifdef WIN64
freopen("1.in", "r", stdin);
#endif
std::cin >> n;
for(int i = 1; i <= n; ++i) std::cin >> a[i];
std::sort(a + 1, a + n + 1);
std::cin >> m;
while(m--) {
ll x; std::cin >> x;
ll t = find_min(x), t1 = find_max(x);
if(abs(t - x) > abs(t1 - x)) std::swap(t, t1);
printf("%lld\n", t);
}
}

C 救救企鹅

和gdoi2017d1t1很像,显然直接跑一遍kmp就行了,就是把输出改为标记,注意因为不能重复覆盖,所以要跳过一整段,注意这个时候中间这段也要更新next值。

#include <bits/stdc++.h>
using namespace std; #define N 1000010
char s[N], a[N], b[N];
int nxt[N], vis[N]; int main() {
scanf("%s%s%s", s + 1, a + 1, b + 1);
int n = strlen(s + 1);
int m = strlen(a + 1), k = strlen(b + 1);
for(int i = 2, j = 0; i <= m; ++i) {
while(j && a[j + 1] != a[i]) j = nxt[j];
if(a[j + 1] == a[i]) ++j;
nxt[i] = j;
}
for(int i = 1, j = 0; i <= n; ++i) {
while(j && a[j + 1] != s[i]) j = nxt[j];
if(a[j + 1] == s[i]) ++j;
if(j == m) {
vis[i - m + 1] = 1;
int lim = i + m - 2;
j = 0;
for(; i <= lim; ++i) {
while(j && a[j + 1] != s[i]) j = nxt[j];
if(a[j + 1] == s[i]) ++j;
}
--i;
}
}
for(int i = 1; i <= n; ++i) {
if(vis[i] == 1) {
i += m - 1;
for(int l = 1; l <= k; ++l) putchar(b[l]);
continue;
}
putchar(s[i]);
}
}

D 数糖纸

尺取法经典题。

瓶颈在离散(换成map,set也行)

map会被卡。

牛客评测机差评..一样的代码交一次70交第二次90...

因为被卡了所以就没ak了qaq。

map代码(大概在5070浮动,加了读优的话在7090浮动)

#include <bits/stdc++.h>
using namespace std; #define N 1000010
#define ll long long
int n, last[N];
ll a[N];
map<ll, int>v; int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%lld", &a[i]);
if(v[a[i]]) {
last[i] = v[a[i]];
}
v[a[i]] = i;
}
int l = 1, ans = 1;
for(int r = 1; r <= n; ++r) {
while(l < r && last[r] >= l) ++l;
ans = max(r - l + 1, ans);
}
printf("%d\n", ans);
}

set代码

#include <bits/stdc++.h>
using namespace std; #define N 1000010
#define ll long long
int n;
int last[N], a[N];
set<int>s; int main() {
scanf("%d", &n);
int l = 1, ans = 0;
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
while(s.count(a[i]) && l < i) s.erase(a[l++]);
s.insert(a[i]);
ans = max(ans, (int)s.size());
}
printf("%d\n", ans);
}

牛客OI周赛7-普及组 解题报告的更多相关文章

  1. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  2. 牛客OI周赛8-提高组A-用水填坑

    牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...

  3. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  4. 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)

    链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

  5. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

  6. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  7. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  8. 补比赛——牛客OI周赛9-普及组

    比赛地址 A 小Q想撸串 题目分析 普及T1水题惯例.字符串中找子串. Code #include<algorithm> #include<iostream> #include ...

  9. 牛客OI周赛8-普及组

    https://ac.nowcoder.com/acm/contest/543#question A. 代码: #include <bits/stdc++.h> using namespa ...

随机推荐

  1. C++的类型转换

    一.类型转换名称和语法 1.C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a    2.C++风格的类型转换提供了4种类型转换操作符来应对 ...

  2. mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  3. EasyUI表格DataGrid前端分页和后端分页的总结

    Demo简介 Demo使用Java.Servlet为后台代码(数据库已添加数据),前端使用EasyUI框架,后台直接返回JSON数据给页面 1.配置Web.xml文件 <?xml version ...

  4. 【2017-2-19】C#数据类型,数据转换,变量,常量,转义符

    数据类型 一.基本数据类型 1.值类型(不可以为null) ⑴整型(可以为负数) byle,int,short,long(从小到大排列) 常用整型 int a=值(小于10位数) long b=值(1 ...

  5. python 序列化,反序列化

    附: pickle 有大量的配置选项和一些棘手的问题.对于最常见的使用场景,你不需要去担心这个,是如果你要在一个重要的程序中使用pickle 去做序列化的话,最好去查阅一下官方文档. https:// ...

  6. 转:wcf大文件传输解决之道(2)

    此篇文章主要是基于http协议应用于大文件传输中的应用,现在我们先解析下wcf中编码器的定义,编码器实现了类的编码,并负责将Message内存中消息转变为网络发送的字节流或者字节缓冲区(对于发送方而言 ...

  7. Google自动广告,将广告代码放置在 HTML 中的什么位置?

    Google自动广告,将广告代码放置在 HTML 中的什么位置? 为自动广告生成广告代码后,您需要将此代码放置在要展示广告的每个网页中.您应将广告代码放置在网页的 <head> 标记(或正 ...

  8. 三角形垂点坐标js算法(三点定圆求圆心)

    已知平面三点坐标A(x1, y1).B(x2, y2).C(x3, y3),三点定圆也就是三角形的中垂线交点, //平面三点定位算法 function locate(x1, y1, x2, y2, x ...

  9. SQLServer将服务器A表写到服务器B表

       不同服务器数据库之间的数据操作    --创建链接服务器  exec sp_addlinkedserver  'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '  ...

  10. P1258 小车问题

    P1258 小车问题 蒟蒻精神自强不息蒟蒻精神永不言败加油加油ヾ(◍°∇°◍)ノ゙yeah yeah yeah 据说这是道小学奥数题抱歉蒟蒻的我没学过奥数,算了大概三大张演草纸,不得不说这题对于蒟蒻本 ...