T1 题目描述:

1999. Wexley接苹果(apple) 
(File IO): input:apple.in output:apple.out

时间限制: 1000 ms  空间限制: 128000 KB  具体限制  

Goto ProblemSet

题目描述

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

输入

第一行,两个整数n、m,如题所述
第二行,一个整数k,表示掉落的苹果总数
接下来k行,每行一个整数Ai,表示每个苹果掉落的位置

输出

一行一个整数,表示所需移动最短距离

样例输入

Sample Input1:5 13153

Sample Input2:5 23153

样例输出

Sample Output1:6

Sample Output2:4

数据范围限制

【数据范围】
对于30%的数据,m<n<=5,k<=10
对于100%的数据,1<=m<n<=10,1<=k<=20

思路:贪心模拟,使每次移动数尽量少即可.难度较容易。

附上AC代码:(考试完了重新码的,考试的时候的代码有点小问题)

#include <cstdio>
#include <iostream>
using namespace std;
int n,m,k,a[21];
int b[21],head,ans,tmp;
int main()
{freopen("apple.in","r",stdin);freopen("apple.out","w",stdout);scanf("%d %d",&n,&m);scanf("%d",&k);b[0]=1;for(int i=1;i<=k;i++){scanf("%d",&a[i]);}head=m;for(int i=1;i<=k;i++){if(head>=a[i] && (head-m+1)<=a[i])continue;if(head<a[i]){ans+=a[i]-head;head+=a[i]-head;continue;}if((head-m+1)>a[i]){int tmp=head;head=a[i]+m-1;ans+=tmp-head;continue;}}printf("%d",ans);
}

T2

2000. 【2015.8.6普及组模拟赛】Leo搭积木(brick) 
(File IO): input:brick.in output:brick.out

时间限制: 1000 ms  空间限制: 128000 KB  具体限制  

题目描述

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

【提示】
每种积木都可以拆分成高度分别为li、wi、hi的三种积木,另两边作为长和宽,保证长>=宽。

输入

第一行,一个整数n,表示积木的种数
接下来n行,每行3个整数li,wi,hi,表示积木的长宽高

输出

一行一个整数,表示塔高的最大值

样例输入

Sample Input1:110 20 30

Sample Input2:26 8 105 5 5

Sample Input3:531 41 5926 53 5897 93 2384 62 6433 83 27

样例输出

Sample Output1:40

Sample Output2:21

Sample Output3:342

数据范围限制

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

思路:标答:动态规划。

  骗分:暴力DFS.

附上DFS30分代码TLE

#include <cstdio>
#include <iostream>
using namespace std;
int n,a[3002][3],ans=0,mina;
const int inf=999999999;
void swap(int a,int b)
{int c=b;b=a;a=c;
}
void dfs(int l,int w,int high)
{if(high>ans)ans=high;if(w==mina){return;}for(int i=1;i<=n;i++){if(a[i][0]<l && a[i][1]<w)dfs(a[i][0],a[i][1],high+a[i][2]);if(a[i][0]<w && a[i][1]<l)dfs(a[i][1],a[i][0],high+a[i][2]);if(a[i][0]<l && a[i][2]<w)dfs(a[i][0],a[i][2],high+a[i][1]);if(a[i][0]<w && a[i][2]<l)dfs(a[i][2],a[i][0],high+a[i][1]);if(a[i][1]<l && a[i][2]<w)dfs(a[i][1],a[i][2],high+a[i][0]);if(a[i][1]<w && a[i][2]<l)dfs(a[i][2],a[i][1],high+a[i][0]);if(a[i][1]>l && a[i][2]>w)continue;}
}
int main(){freopen("brick.in","r",stdin);freopen("brick.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++){int a1,b1,c1;scanf("%d %d %d",&a1,&b1,&c1);if(c1>b1)swap(c1,b1);if(a1<b1)swap(a1,b1);if(c1>b1)swap(c1,b1);if(mina>c1)mina=c1;a[i][0]=a1;a[i][1]=b1;a[i][2]=c1;}dfs(inf,inf,0);printf("%d",ans);
}

100分代码:

#include <cstdio>
#include <algorithm>
#include <cstring>
struct Node{int w,l,h;
}a[10001];
int Max(int a,int b)
{if(a>b)return a;return b;
}
int Min(int a,int b)
{if(a>b)return b;return a;
}
bool bdx(Node c,Node d)
{return c.l<d.l;
}
int main()
{freopen("brick.in","r",stdin);freopen("brick.out","w",stdout);int n,f[10001],ans;scanf("%d",&n);int o,p,q;for(int i=1;i<=n;i++){scanf("%d %d %d",&o,&p,&q);a[i].l=Max(o,p);a[i].w=Min(o,p);a[i].h=q;a[i+n].l=Max(o,q);a[i+n].w=Min(o,q);a[i+n].h=p;a[i+2*n].l=Max(p,q);a[i+2*n].w=Min(p,q);a[i+2*n].h=o;}std::sort(a+1,a+3*n+1,bdx);for(int i=1;i<=3*n;i++)f[i]=a[i].h;for(register int i=3*n;i>=1;i--)for(register int j=i+1;j<=3*n;j++)if(a[i].w<a[j].w && a[i].l != a[j].l)f[i]=Max(f[j]+a[i].h,f[i]);for(int i=1;i<=3*n;i++)ans=Max(ans,f[i]);printf("%d",ans);
}

T4

2002. 【2015.8.6普及组模拟赛】Leopard学霸(study) 
(File IO): input:study.in output:study.out

时间限制: 1000 ms  空间限制: 128000 KB  具体限制  

题目描述

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

输入

第一行,一个整数n,表示功课的数目
接下来n行,每行两个整数,Di和Pi

输出

输出一行一个整数,表示最多学得的知识数

样例输入

32 101 51 7

样例输出

17

【样例说明】第一个单位时间学习第3个功课(1,7),然后在第二个单位时间学习第1个功课(2,10)

数据范围限制

10% n<=25
60% n<10000
100% 1<=n<=100000,Di、Pi<=1000000000
最后的答案可能超过32位整型
 

思路:标答:最小堆

  接近标答:贪心。

附上80分贪心代码(TLE+RE)

#include <cstdio>
#include <algorithm>
#define rr register
bool time[100001],bj;
struct Node{int di,pi;
}a[100001];
inline bool bdx(Node c,Node d)
{return c.pi>d.pi;
}
int main()
{freopen("study.in","r",stdin);freopen("study.out","w",stdout);rr long long ans=0LL;rr int n,mark=0;scanf("%d",&n);for(rr int i=1;i<=n;i++)scanf("%d %d",&a[i].di,&a[i].pi);std::sort(a+1,a+n+1,bdx);for(rr int i=1;i<=n;i++){if(!time[a[i].di]){time[a[i].di]=true;ans+=a[i].pi;}else{rr int j=a[i].di;while(time[j])j--;if(j<1)continue;ans+=a[i].pi;time[j]=true;}}printf("%lld",ans);
}

目前这道题还没AC...

转载于:https://www.cnblogs.com/XYYXP/p/2019-8-1_ZSJNZX_OJ_TEAM-C_PUJI_DAY1.html

2019中山纪念中学夏令营-Day1[JZOJ]相关推荐

  1. 2019中山纪念中学夏令营-Day21[JZOJ]

    2019中山纪念中学夏令营-Day21[JZOJ] 提高组(B组模拟赛)Team_B (由于本人太弱,并没有订正完题目) (题解大部分是从官方题解文件上摘来的) 日常膜拜大神:じやゆん蒟蒻 正文部分: ...

  2. 2019中山纪念中学夏令营-Day4[JZOJ]

    Begin (题目的排序方式:难易程度) 什么是对拍: 对拍是一种在写完程序后,验证自己程序是不是正解的比较方便的方法. 实现过程: 对同一道题,再打一个暴力程序,然后用一些大数据等跑暴力程序来进行验 ...

  3. 2019中山纪念中学夏令营-Day9[JZOJ](第六次模拟赛)

    Begin (题目的排序方式:Unkown其实是按心情排的) 异或:(摘自百度百科) 异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为&quo ...

  4. 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】

    Dijkstra是我学会的第一个最短路算法,为什么不先去学SPFA呢?因为我在luogu上翻到了一张比较神奇的图: 关于SPFA -它死了 以及网上还有各位大佬的经验告诉我:SPFA这玩意很容易被卡. ...

  5. 中山纪念中学培训DAY1

    哇啊啊啊啊啊啊$--$ 并不像说环境怎么样. $Day1$模拟赛 稳重一点选了提高$B$ 然后$5min$后: $t1$装压$DP$最短路 $t2$裸地贪心 $t3--$哇$t3$怎么做啊啊啊啊. $ ...

  6. 2019.1.23 中山纪念中学之北大教授讲座

    long long ago 早已经听闻了在我们去中山纪念中学训练的过程中,北京大学信息学冬令营会在纪中举行.我们还期望着观摩一下这些来自全国各个信息强省强校的大佬们呢. day-3 三天前的下午,一大 ...

  7. 【2012年中山纪念中学信息学竞赛初一选拔赛一】美丽的纪中(a)

    [2012年中山纪念中学信息学竞赛初一选拔赛一]美丽的纪中(a) (File IO): input:a.in output:a.out 时间限制: 1000 ms 空间限制: 262144 KB [题 ...

  8. 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中篮球联赛(b)

    [2012年中山纪念中学信息学竞赛初一选拔赛一]纪中篮球联赛(b) (File IO): input:b.in output:b.out 时间限制: 1000 ms 空间限制: 262144 KB [ ...

  9. 中山纪念中学集训日志

    7.31 下了一天的雨,坐了一天的车. 中山纪念中学,满目绿树朱瓦,历史感挺浓的. 想起了一年前,我兴致勃勃地看苏卿念的纪中培训日记,没想到一年后,我亲身来到了纪中. 在宿舍跟蚊帐搏斗了许久,真是剪不 ...

最新文章

  1. MySql修改 表名
  2. 只有14秒,假老黄才是假的!黄仁勋没有骗了全世界,英伟达「元宇宙」验明正身...
  3. 使用Git将最新提交移至新分支
  4. angular2初入眼帘之-多components协作
  5. Maven实战(二)——POM重构之增还是删
  6. Linux学习之系统编程篇:互斥锁(pthread_mutex_init / lock / trylock / unlock / destroy)
  7. CF1540B-Tree Array【数学期望,dp】
  8. DiskFileUpload上传与Spring的CommonsMultipartResolver上传对比
  9. 易简约个人产品中心网站源码html模板
  10. 计算机文本自定义,自定义文本编辑器
  11. 重装系统后git库不能使用_重装系统后git库初始化
  12. 电脑带不动虚幻引擎渲染卡顿怎么办?本文给你支招
  13. 用 ABAP 调用 OCR 接口实现出租车发票扫描
  14. python爬取站酷海洛图片_站酷海洛图片爬取
  15. 无限渗透实战(2)--绕过认证上校园网
  16. 【MapReduce】MapReduce读写MySQL数据
  17. 怎么找生物信息论文的数据,PubMed太有用了!
  18. linux qt 背景图片,《转》qt中添加背景图片(stylesheet)
  19. 在亚马逊能接到服装订单吗?亚马逊美国站突然没订单怎么办?
  20. c语言佛像答案,课程网上考试题库试题(带答案):茶文化赏析

热门文章

  1. 随书光盘下载器/工具
  2. Visual C++从入门到精通(第3版)光盘
  3. PowerBI 获奖作品展示
  4. c#文件名去掉后缀_C#文件后缀名的详细介绍
  5. 想拿高薪千万别错过!金三银四求职攻略来啦
  6. jd-gui或jad反编译工具气死人不偿命的bug
  7. AIGPT中文版(人人都能使用的GPT工具)生活工作的好帮手。
  8. 【第二篇:测试(开发)工程师的日常】
  9. 什么是FAQ以及怎么编写
  10. [转帖]老鸟运维的下场