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. 在搭建开始之前 ...
随机推荐
- Git服务器配置及本地克隆提交、服务器获取
1.服务器Git安装配置 相关链接 相关链接 注意ssh-keygen .修改权限 权限: 相关链接 2.本地获取 git clone name@ip:服务器项目位置 相关链接 3.创建 ...
- flume组件汇总 source、sink、channel
Flume Source Source类型 说明 Avro Source 支持Avro协议(实际上是Avro RPC),内置支持 Thrift Source 支持Thrift协议,内置支持 Exec ...
- (后端)sql server 按时间段查询
百度的资料,保存下来: 在写按时间段查询的sql语句的时候 一般我们会这么写查询条件: where date>='2010-01-01' and date<='2010-10-1'. 但是 ...
- [20171115]ZEROCONF ROUTE.txt
[20171115]ZEROCONF ROUTE.txt --//如果你检查linux服务器的网络配置,就可以发现如下一条路由: # route -n | egrep "169.254|D ...
- kvm企业级虚拟化环境部署
由于要做毕设了,不得不要搭建Linux环境,自己做的课题是ELK日志分析相关.因此要大干一场,一下子计划采用近10台机器来做试验,但由于我这里只有三台物理机,所以我就搞起了虚拟化kvm.在Linux里 ...
- 使用Jenkins+gitlab自动化构建时排除分支
我们的目的是gitlab上的代码有变动时会自动向Jenkins发送web钩子请求,触发指定的动作: 但默认情况下,所有分支(如测试环境和预生产)的代码有变动时都会触发,此时可以在Jenkins的项目设 ...
- Java设计模式之五 ----- 外观模式和装饰器模式
前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式.本篇则来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这 ...
- Eclipse字体最好
改变字体 windows->Preferences->General->Appearance->Colors and Fonts 右边选择Java ->Java Edit ...
- 转://Linux下区分物理CPU、逻辑CPU和CPU核数
㈠ 概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 p ...
- Linux操作系统中打开文件数量的查看方法
Linux操作系统中打开文件数量的查看方法ulimit -n 4096也就是限制用户的最大文件打开数为4096个 在网上查了关于怎么查看文件打开数的文章大致有两种说法/proc/sys/fs/file ...