2011 noip 提高组
首先吐槽:刚刚写着写着突然蓝屏了,,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 提高组的更多相关文章
- NOIP提高组2004 合并果子题解
NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 1043 方格取数 2000 noip 提高组
1043 方格取数 2000 noip 提高组 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样 ...
- [NOIP提高组2018]货币系统
[TOC] 题目名称:货币系统 来源:2018年NOIP提高组 链接 博客链接 CSDN 洛谷博客 洛谷题解 题目链接 LibreOJ(2951) 洛谷(P5020) 大视野在线评测(1425) 题目 ...
- NOIP提高组初赛难题总结
NOIP提高组初赛难题总结 注:笔者开始写本文章时noip初赛新题型还未公布,故会含有一些比较老的内容,敬请谅解. 约定: 若无特殊说明,本文中未知数均为整数 [表达式] 表示:在表达式成立时它的值为 ...
- 津津的储蓄计划 NOIp提高组2004
这个题目当年困扰了我许久,现在来反思一下 本文为博客园ShyButHandsome的原创作品,转载请注明出处 右边有目录,方便快速浏览 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津\ ...
- 2018.12.30【NOIP提高组】模拟赛C组总结
2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- 2013 Noip提高组 Day2
3288积木大赛 正文 题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前 ...
随机推荐
- Java并发编程(十一)线程池的使用
1.new Thread的弊端如下: a. 每次new Thread新建对象性能差. b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom. c. 缺乏更多 ...
- persist与checkpoint
1.当反复使用某些RDD时建议使用persist(缓存级别)(采用默认缓存级别时为cache())来对数据进行缓存. 2.如果某个步骤的RDD计算特别耗时或经历很多步骤的计算,当重新计算时代价特别大, ...
- MySQL GTID复制错误处理之跳过错误
某Slave报错信息: mysql> show slave status\G; mysql> show slave status\G; ************************** ...
- REPLACE函数的使用方法
Replace函数的含义~ 用新字符串替换旧字符串,而且替换的位置和数量都是指定的. replace函数的语法格式 =Replace(old_text,start_num,num_chars,new_ ...
- EntityFramework Code-First 简易教程(九)-------一对多
一对多(One-to-Many)关系: 下面,我们来介绍Code-First的一对多关系,比如,在一个Standard(年级)类中包含多个Student类. 如果想了解更多关于one-to-one,o ...
- pyenv离线安装python各版本
1.问题描述: 可能是国内的网络原因,在线用pyenv安装python老是定住没反应 [root@zabbix ~]# pyenv install Downloading Python-.tar.xz ...
- Django框架的使用教程--mysql数据库[三]
Django的数据库 1.在Django_test下的view.py里面model定义模型 from django.db import models # Create your models here ...
- vSphere ESXi 重新安装后的虚拟机恢复(转载)
安装的 ESXi 的物理主机密码忘记,登录 不上了,需要重新安装 ESXi,安装后恢复原先物理主机上的 虚拟机的方法如下(VMFS分区完好): 关于 VMFS 分区: ESXi 的安装时会划分一个分区 ...
- 如何快速搭建&配置本地服务器-前端技能
废话不多说,上图: 首先登录http://www.phpstudy.net/download.html 下载安装phpstudy,特别简单不详解: 创建一个本机项目并且与本机域名进行绑定主要分为两步; ...
- Linux - CentOS7上的时间同步
1. 时区的概念 1.1 时区简介 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便.所以为了克服时间上 ...