首先吐槽:刚刚写着写着突然蓝屏了,,emmm,写到最后一题了蓝屏了、

当时我的内心是崩溃的。

然后,旁边的大佬默默来了一句:论保存草稿的重要性。

连着蓝了三次之后开了防火墙,然后,,我左边那位同学又开始蓝屏了。。

Day 1

T1  铺地毯

判断条件是

x >= a[i] &&x <= a[i] + g[i] && y >= b[i] && y <= b[i] + k[i]

#include <cstdio>
int n, a[], b[], g[], k[], t, x, y;
int main() {
scanf("%d", &n);
for(int i = ; i <= n; i++)
scanf("%d%d%d%d", &a[i], &b[i], &g[i], &k[i]);
scanf("%d%d", &x, &y);
for(int i = ; i <= n; i++)
if(x >= a[i] &&x <= a[i] + g[i] && y >= b[i] && y <= b[i] + k[i])
t = i;
t == 0 ? printf("-1") : printf("%d", t);
return ;
}

T2 选择客栈

把三重循环的暴力优化成一层。

#include <cstdio>
#include <iostream>
#define in inline
#define is isdigit
using namespace std;
in int read() {
int X = , w = ;
char ch = ;
while(!is(ch)) {
w |= ch == '-';
ch = getchar();
}
while(is(ch)) {
X = (X << ) + (X << ) + (ch ^ );
ch = getchar();
}
return w ? -X : X;
}
void print(int x) {
if(x < ) putchar('-'), x = -x;
if(x > ) print(x / );
putchar(x % + '');
}
int n, k, p, m, sum, num, ans, a[], b[], c[];
int main() {
n = read();
k = read();
p = read();
for(int i = ; i <= n; i++) {
num = read();
sum = read();
if(sum <= p) m = i;
if(m >= a[num]) c[num] = b[num];
a[num] = i;
ans += c[num];
b[num]++;
}
print(ans);
return ;
}

T3 Mayan游戏

大模拟搜索题,唔,,,我的代码会被hack,,虽然A了。

这里参照一位大佬的做法->https://www.luogu.org/blog/sumijie/solution-p1312

Day 2

T1 计算系数

大家都用杨辉三角但是我太弱了,,不会

于是,dp

#include <cstdio>
long long f[][] = {}, a, b, n, m, k;
int main() {
scanf("%lld%lld%lld%lld%lld", &a, &b, &k, &n, &m);
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++) {
if(i) f[i][j] = (f[i][j] + f[i - ][j] * a) % ;
if(j) f[i][j] = (f[i][j] + f[i][j - ] * b) % ;
}
printf("%lld", f[n][m]);
return ;
}

T2 聪明的质检员

非常经典的二分题目,出去学习老师们应该都会讲

#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int w[], v[], l[], r[], m, n, ll, rr = ;
long long sumw[], sumv[], s, ansn = 10000000000000000LL;
long long ok(int mid) {
long long ret = ;
for(int i = ; i <= n; ++i)
if(w[i] >= mid) sumw[i] = sumw[i - ] + , sumv[i] = sumv[i - ] + v[i];
else sumw[i] = sumw[i - ], sumv[i] = sumv[i - ];
for(int i = ; i <= m; ++i)
ret += (sumw[r[i]] - sumw[l[i] - ]) * (sumv[r[i]] - sumv[l[i] - ]);
return ret;
}
int main() {
scanf("%d%d%lld", &n, &m, &s);
for(int i = ; i <= n; ++i) scanf("%d%d", &w[i], &v[i]);
for(int i = ; i <= m; ++i) scanf("%d%d", &l[i], &r[i]);
while(ll < rr) {
int mid = (ll + rr) / + ;
long long tmp = ok(mid) - s;
ansn = min(ansn, abs(tmp));
if(tmp > ) ll = mid;
else if(tmp < ) rr = mid - ;
else {
ansn = ; break;
}
}
printf("%lld", ansn);
}

T3 观光公交

贪心的经典题目

#include <cstdio>
#include <iostream>
using namespace std;
#define MAXN 10100
int p, temp, ans, n, m, k, d[MAXN], t[MAXN], a[MAXN], b[MAXN], num[MAXN], vis[MAXN], dis[MAXN], sum[MAXN];
int main() {
scanf("%d%d%d", &n, &m, &k);
for(int i = ; i < n; i++)
scanf("%d", &d[i]);
for(int i = ; i <= m; i++)
scanf("%d%d%d", &t[i], &a[i], &b[i]);
for(int i = ; i <= m; i++)
num[b[i]]++, vis[a[i]] = max(vis[a[i]], t[i]);
for(int i = ; i <= n; i++)
dis[i] = max(dis[i - ], vis[i - ]) + d[i - ];
for(int i = ; i <= m; i++)
ans += dis[b[i]] - t[i];
while(k--) {
p = temp = -;
for(int i = n - ; i; i--) {
dis[i + ] <= vis[i + ] ? sum[i] = num[i + ] : sum[i] = sum[i + ] + num[i + ];
if(sum[i] > temp && d[i]) temp = sum[i], p = i;
}
if(p == -) break;
ans -= temp, d[p]--;
for(int i = p + ; i <= n; i++)
dis[i] = max(dis[i - ], vis[i - ]) + d[i - ];
}
printf("%d", ans);
return ;
}

一世安宁

2011 noip 提高组的更多相关文章

  1. NOIP提高组2004 合并果子题解

    NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...

  2. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  3. 1043 方格取数 2000 noip 提高组

    1043 方格取数  2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...

  4. [NOIP提高组2018]货币系统

    [TOC] 题目名称:货币系统 来源:2018年NOIP提高组 链接 博客链接 CSDN 洛谷博客 洛谷题解 题目链接 LibreOJ(2951) 洛谷(P5020) 大视野在线评测(1425) 题目 ...

  5. NOIP提高组初赛难题总结

    NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...

  6. 津津的储蓄计划 NOIp提高组2004

    这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...

  7. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  8. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  9. 2013 Noip提高组 Day2

    3288积木大赛 正文 题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前 ...

随机推荐

  1. Android 获取网络类型

    获取网络类型 public class IntenetUtil { //没有网络连接 public static final int NETWORN_NONE = 0; //wifi连接 public ...

  2. Apktool(1)——Apktool的安装

    Apktool是google提供的apk的编译工具,有了它就可以做很多事情.比如获取apk的源码,apk汉化,对手机rom包做一些美化. 首先来看看apktool的安装(配置): 以下内容主要翻译字A ...

  3. python数据探索

    数据质量分析 脏数据包括:缺失值:异常值:不一致的值:重复数据及含有特殊符号的数据: 1.缺失值处理 统计缺失率,缺失数 2.异常值处理 (1)简单统计量分析 (2)3Q原则 正态分布情况下,小概率事 ...

  4. LCD显示异常分析——撕裂(tear effect)【转】

    转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...

  5. openSUSE搭建OpenVPN

    目录 openSUSE搭建OpenVPN 环境 安装openVPN服务端 安装easy-rsa工具 配置vars文件 创建服务端证书及key 创建客户端证书 疏理证书文件 服务端配置 启动openvp ...

  6. python之字符串的常用操作(转)

    1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + str2) >> ...

  7. 为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...

  8. python 播放mp3

    import os os.system('out1.mp3') 自动带开播放器

  9. Qt 编程指南 8 显示静态小图片和动态大图片

    显示控件概览 图片浏览示例 第一行是一个标签控件,objectName 为 labelShow,文本内容清空,因为是用来显示图片用的. 主界面第二行的控件是四个普通按钮 第一个按钮文本是 " ...

  10. 怎样使用CSS3媒体查询(Media Queries)制作响应式网站

    自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项. Media Queri ...