早上一起,扑面是瓢泼的大雨。跨过千山万水,来到纪中门前,毅然以一种大无畏的英雄气概跨进了考场。

面对四道神题。然后,我成功过五关斩六将,A掉了2道题!!!

收获:优先队列(大、小根堆)


T1:APPLE

Wexley最近发现了一个古老的屏幕游戏。游戏的屏幕被划分成n列。在屏幕的底端,有一个宽为m列的篮子(m<n)。在游戏过程中,Wexley能左右移动这个篮子,            Wexley的操作很犀利,移动是瞬间完成的,但是篮子必须始终都在屏幕中。 苹果从屏幕的顶端落下,每个苹果从n列中的某一列顶端掉落,垂直掉落到屏幕的底端。每个苹果总是在上一个苹果掉落到底端的时候开始掉落。Wexley想要通过移动篮子来接住所有的苹果。起先,篮子在屏幕的最左端。
        求出Wexley要接住所有的苹果所需移动的最短距离。

思路:此题略简单,设置左端与右端,然后判断,移动,储蓄即可。

见代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,k,a[],l=,r,ans;
int main()
{
//freopen("apple.in","r",stdin);
//freopen("apple.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
r=m;
for(int i=;i<=k;i++)
{
scanf("%d",&a[i]);
if(a[i]>r)
{
while(a[i]>r)
{
ans++;
l++;
r++;
}
}
while(a[i]<l)
{
ans++;
l--;
r--;
}
}
printf("%d",ans);
return ;
}

好题哉!!!


T2:BRICK

Leo是一个快乐的火星人,总是能和地球上的OIers玩得很high。
         2012到了,Leo又被召回火星了,在火星上没人陪他玩了,但是他有好多好多积木,于是他开始搭积木玩。
       火星人能制造n种积木,积木能无限供应。每种积木都是长方体,第i种积木的长、宽、高分别为li、wi、hi。积木可以旋转,使得长宽高任意变换。Leo想要用这些积木搭一个最高的塔。问题是,如果要把一个积木放在另一个积木上面,必须保证上面积木的长和宽都严格小于下面积木的长和宽。这意味着,即使两块长宽相同的积木也不能堆起来。
       火星上没有电脑,好心的你决定帮助Leo求出最高的塔的高度。

对于30%的数据 n<=8
        对于100%的数据 n<=3000,最后答案不会超过32位整型

题意:相对清楚,下面看思路。

思路:因为是要严格小于,所以每种积木都只能用一次,我们把六种情况搞下来,然后因为长大于宽,所以可以排除掉一半。接着在以长宽各自排序,会出现一个序列。接着就是我们最熟悉的,最简单的DP模板:最长         单调下降序列。只不过最长变成了高之和最大,下降是长宽都小,仅此而已。然后考虑了下nlogn的情况,发现替换会很奇怪,可能出问题。也就只打了n2的算法。那也就这样了。因为3*n=9000,所以不会有问题。

见代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,h1,l1,w1,k,le=,b[],ans=-0x3f3f3f;
struct brick{
int h,l,w;
};
brick a[];
bool cmp(brick x,brick y)
{
return x.l>y.l;
}
bool cmp1(brick x,brick y)
{
return x.w>y.w;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&h1,&l1,&w1);
a[*i-].w=min(h1,l1);a[*i-].l=max(h1,l1);a[*i-].h=w1;
a[*i-].w=min(w1,h1);a[*i-].l=max(w1,h1);a[*i-].h=l1;
a[*i].w=min(w1,l1);a[*i].l=max(w1,l1);a[*i].h=h1; }
sort(a+,a+*n+-+,cmp);
while(k<=)
{
k++;
if(a[k].l!=a[k-].l)
{
sort(a+le,a+k-+,cmp1);
le=k;
}
}
for(int i=;i<=*n;i++)
{
b[i]=a[i].h;
}
for(int i=;i<=*n;i++)
{
for(int j=i-;j>=;j--)
{
if(b[j]+a[i].h>=b[i]&&a[j].l>a[i].l&&a[j].w>a[i].w)
b[i]=b[j]+a[i].h;
}
}
for(int i=;i<=*n;i++)
{
if(b[i]>=ans)
ans=b[i];
}
printf("%d",ans);
return ;
}

好题哉!!!


T3:TREELAND

Treeland是一个有n个城市组成的国家,其中一些城市之间有单向边连通。在这个国家中一共有n-1条路。我们知道,如果我们不考虑路的方向,那么我可以从任意城市到达任意城市。
      最近,Treeland的总理Candy为了发展经济,想要从这n个城市中选择一个作为Treeland的首都,首都必须要能到达其他任意城市,这使得有些道路必须反向,付出的代价即需要反向的道路条数。
      Candy想要选择一个城市作为首都,使得付出的代价最小。可能有多个城市满足条件,按编号从小到大输出。

思路:根据题解,先从1号节点遍历整棵树,让1号节点满足要求,可知需要的答案。然后顺便在遍历的过程中求出对节点u,需要几次反转让u能到达以u为子树的每个节点。完成之后,让u点可以走到1号点,这样的反转条数就是从1点到u点反转的次数。然后加上之前记录下的东西就可以了。


T4:STUDY

马上假期就要到了,THU的神犇Leopard假期里都不忘学霸,现在有好多门功课,每门功课都耗费他1单位时间来学习。
           他的假期从0时刻开始,有1000000000个单位时间(囧rz)。在任意时刻,他都可以任意一门功课(编号1~n)来学习。
           因为他在每个单位时间只能学习一门功课,而每门功课又都有一个截止日期,所以他很难完成所有n门功课。
           对于第i门功课,有一个截止时间Di,若他能学完这门功课,他能够获得知识Pi。
           在给定的功课和截止时间下,Leopard能够获得的知识最多为多少呢?

思路:必须得有一个反悔的过程,DP不大现实,贪心一次性贪完也不大现实。所以就出现了一个新的思路:将时间排序,有就放,如果没时间放,就和最小的比较,交换,再维护一个小根堆即可。

详见:YYCAKIOI


总体来说,今天200分,考了个第三出来,成绩还算可以,争取消化干净,继续努力!

中山纪中Day1--普及的更多相关文章

  1. 「中山纪中集训省选组D1T1」最大收益 贪心

    题目描述 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做 ...

  2. 中山纪中集训Day1测试(摸鱼)

    AT3 粉刷匠 Description 赫克托是一个魁梧的粉刷匠,而且非常喜欢思考= = 现在,神庙里有N根排列成一直线的石柱,从1到N标号,长老要求用油漆将这些石柱重新粉刷一遍.赫克托有K桶颜色各不 ...

  3. 「中山纪中集训省选组D4T1」折射伤害 高斯消元

    题目描述 在一个游戏中有n个英雄,初始时每个英雄受到数值为ai的伤害,每个英雄都有一个技能"折射",即减少自己受到的伤害,并将这部分伤害分摊给其他人.对于每个折射关系,我们用数对\ ...

  4. 「中山纪中集训省选组D2T1」书堆 欧拉常数

    题目描述 蚂蚁是勤劳的动物,他们喜欢挑战极限.现在他们迎来了一个难题!蚂蚁居住在图书馆里,图书馆里有大量的书籍.书是形状大小质量都一样的矩形.蚂蚁要把这些书摆在水平桌子的边缘.蚂蚁喜欢整洁的布置,所以 ...

  5. 中山纪中集训Day5叒是测试(划淼)

    A组T1 矩阵游戏(game) 九校联考24OI__D1T1 问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,…M,第二行的数字是M+1,M+2…2*M ...

  6. 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2

    A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...

  7. 中山纪中集训Day2又是测试(划水)

    A组T1 bzoj 2674 Attack Description chnlich 非常喜欢玩三国志这款游戏,并喜欢用一些策略出奇制胜.现在,他要开始征服世界的旅途了.他的敌人有N 座城市和N 个太守 ...

  8. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  9. 2016.8.18上午纪中初中部NOIP普及组比赛

    2016.8.18上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1336 翻!车!啦!好吧,那是因为大神归来. 进度: 比赛:AC ...

随机推荐

  1. [IOI2002] 任务安排

    题目链接 题意 一些不能改变顺序的任务被分成若干批,每批包含相邻的若干任务.第 $i$ 个任务单独完成所需的时间是 $T_i$.在每批任务开始前,机器需要启动时间 $S$,而完成这批任务所需的时间是各 ...

  2. 关于Javaweb的比较好用的jar包概述

    (连接数据库之前首先要导入这个数据库的驱动jar包 例如mysql 为mysql-connector-java-5.1.46.jar) 关于连接数据库的数据库连接池c3p0  jar包: c3p0-0 ...

  3. leetcode 64. 最小路径和 动态规划系列

    目录 1. leetcode 64. 最小路径和 1.1. 暴力 1.2. 二维动态规划 2. 完整代码及执行结果 2.1. 执行结果 1. leetcode 64. 最小路径和 给定一个包含非负整数 ...

  4. eclipse 添加主題

    在使用Eclipse过程中可能想更换下界面主题,此处介绍的是一款主题插件 Eclipse Color Theme 打开Eclipse,Help --> Eclipse Marketplace 在 ...

  5. 3.0 java学习网站

    1.http://www.rupeng.com/Courses/Index/51 2.https://www.zhihu.com/question/25255189

  6. python 第三方库安装

    1.首先安装pip 2.在cmd中找到pip的安装路径,(一般在python的scripts文件中) 3.pip install 第三方库名称

  7. Web前端性能优化总结——如何提高网页加载速度

    一.提高网页加载速度的必要性 国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网 ...

  8. 【PAT甲级】1106 Lowest Price in Supply Chain (25分)

    题意:输入一个正整数N(<=1e5),两个小数P和R,分别表示树的结点个数和商品原价以及每下探一层会涨幅的百分比.输出叶子结点深度最小的商品价格和深度最小的叶子结点个数. trick: 测试点1 ...

  9. Petr and a Combination Lock

    Petr has just bought a new car. He's just arrived at the most known Petersburg's petrol station to r ...

  10. java 并交集运算

    在面试的过程中,忘记了List中还可以进行交并集运算,这也是常见的数据问题啊,这也是常见的数据结构问题---集合,面试的过程中一直没有想到这种数据结构 java中API中已经集成了并交集的运算. 代码 ...