首先吐槽:刚刚写着写着突然蓝屏了,,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. 对word2vec的理解及资料整理

    对word2vec的理解及资料整理 无他,在网上看到好多对word2vec的介绍,当然也有写的比较认真的,但是自己学习过程中还是看了好多才明白,这里按照自己整理梳理一下资料,形成提纲以便学习. 介绍较 ...

  2. selenium+python自动化笔记之一

    一.webdriver的API与定位元素 元素定位核心部分 元素名称 webdriver API 说明 id find_element_by_id() id定位 name find_element_b ...

  3. centos7下安装指定版本mysql5.7.23

    现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应 ...

  4. @property括号内属性讲解

    一.前言      一个object的属性允许其他object监督和改变他的状态.但是在一个设计良好的面向对象程序中,直接访问一个object的内部状态是不可能的.相反,存取器(getter sett ...

  5. C++11多线程のfuture,promise,package_task

    一.c++11中可以在调用进程中获取被调进程中的结果,具体用法如下 // threadTest.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" ...

  6. js中return,return true,return false三者的用法及区别

    return其实就是return undefined; 1.语法及返回方式 ①返回控制与函数结果 语法为:return 表达式; 语句结果函数的执行,返回调用函数,而且把表达式的值作为函数结果返回出去 ...

  7. cenos下安装MySQL最新版(5.7.18)记录。附卸载老版本过程

    首先说明:老版本数据库没有数据,所以无数据备份过程.如果你在升级数据库过程里,需要备份数据,请另外自行处理. 1.下载最新版MySQL.解压待用 wget https://dev.mysql.com/ ...

  8. redis命令大全参考手册

    redis功能强大,支持数据类型丰富,以下是redis操作命令大全,基本上涵盖了redis所有的命令,并附有解释说明,大家可以收藏.参考,你一定要知道的是:redis的key名要区分大小写,在redi ...

  9. 1.4 Genymotion模拟器安装

    如果你符合下述三种情况的话,你可以考虑安装一个Genymotion Android模拟器: 没有真机调试,只能用模拟器 嫌SDK内置的AVD启动速度,运行速度慢 电脑配置还可以,最好4G内存以上 如果 ...

  10. go标准库的学习-reflect

    参考: https://studygolang.com/pkgdoc http://c.biancheng.net/golang/concurrent/ 导入方式: import "refl ...