2016.9.24初中部上午NOIP普及组比赛总结

2016.09.24【初中部 NOIP普及组 】模拟赛

其实这次我没比赛,早上去参加亲子活动去了。

不过在下午我做完了所有的题,感觉还好。


进度

现在:AC+AC+AC+AC=AK


题目

一、采药

弄了大半天。。结果发现这是个简单的错误

题目简化:

给出每样物品的重量、体积、价值。

求不超过重量、体积的最大价值。

最初思路:

马上想到背包,只不过这多了一个体积。

设f[i,j,k]表示到第i个物品时重j体积k。

和之前一样的:

f[i,j,k]:=f[i-1,j,k];

f[i,j,k]:=max(f[i,j,k],f[i-1,j-zl[i],k-tj[i]]+jz[i]);

要判断是否能装得下,才能执行。

错因:

很冤啊!max函数用的是longint!应是int64

正解:

刚才的方法可以(数组尽量开大)。

也可以将数组降维(记得 总重or总体积downto物品的重量or体积)

降维就不需要判断是否能装了,

还能省空间(我会告诉你我一直都没降过维吗?)。

还有郑少怀同学的方法:

不要想,使劲递归

参数为l(到哪里),ans(不建议用ans做名称)(现在价值)

,现在质量,现在体积

不加记忆化,就过了

(数据水~~~~~~~~~~~)


二、DNA排序

挺考语文的,我看了半天才懂。。

题目简化:

如果a[j]>a[i]且i>j就称为一个逆序对。

(那什么碱基的没鬼用)

无序度为逆序对的个数。

然后以无序度为关键字从小到大排个序。

如果并列便让先读入的放前面。

最初思路:

暴力地求出无序度,

然后存起来(读入顺序也要)。

然后qsort

正解:

看上面↑

可以用数组用记录类型存放每个的串、无序度、读入顺序

以无序度为关键字,读入顺序为次关键字,

qsort一下。


三、取物品

这题做得特爽,用了我自创的方法。

题目简化:

n个数中取k个数的方案数,同样的算一个。

最初思路:

爆搜。。。

用两个参数:到哪里(l)和取多少个(m)。

go(1,0);

优化1:

可是数据特别坑,一下子就是九百几。

从一到九百很麻烦。。。。。

所以我发现,其实编号只是为了表明几个数同一组而已。

            read(x);
if bz[x]=0 then
begin
inc(a[0]);
bz[x]:=a[0];
inc(a[bz[x]]);
end else
begin
inc(a[bz[x]]);
end;

a[0]为编号总共的种类数,

bz[x]如果为0,则之前没出现过。如果不为零,表示x编号在a的位置

然后就很好转化成一个很小的东西。

加了这个优化80分。

错因:

时超。

正解:

优化二:

把它改作递归的形式,记忆化会方便很多。

优化一不需要改。

边界:

当l=a[0]+1,看看m是否凑够k个,

凑够了就exit(1),否则exit(0)。

递归式:go:=sum(go(l+1,m+i)); 0<=i<=a[l],k-m{其中最小的,k-m是剩下要刷的}

接着是记忆化部分:

bz[i,j]表示到i时刷了j个数之后的方案数。(可以理解为go(i,j)的值)

bz2[i,j]表示到bz[i,j]之前有没有走过。

如果走过了,就exit(bz[l,m]);

否则到其他的exit之前(你可以假设子程序末尾有一个exit(go)),

bz[l,m]:=go;bz2:=true;

以上便是优化二,能省去一些之前算过的、多余的步骤。

就可以AC了。

然后我再说说递推的方法:

优化一可以不变。(变了应该会慢一些,随便你)

设f[i,j]表示到第i个种类取了j个时的方案数(与bz[i,j]差不多是相反的)

初始化:a[i,0]:=1; (0<=i<=a[0])

递推式:f[i,j]:=sum(f[i-1,j-l]);

(1<=i<=a[0]{一共的种类数,如果不加优化一就是序号最大的种类})

(1<=j<=n)(0<=l<=min(a[i],j))

输出f[a[0],k]。


四、Note

This problem is really veryvery water.But it is veryvery keng,too.

题目简化:

从左上角到右下角,只能下或右,要求经过的数最小。

最初思路:

没用留意到只能向下或右,觉得这是有后效性的,

假装机智地用了爆搜加记忆化。

方向上下左右

如果超界退出

如果到这个点没之前的少或和之前的相等,便退出,

否则更新。

错因:

如果我蠢一点,也没看到那句话,就一下子对了。

当没有看见那句话时

傻子:向下或右走最优!

自作聪明人:可能绕其他的路最优!

事实证明:只能向下或向右!(原来D也傻!)

分享一个极端数据(XZB送我的):

3 5

0 20 1 1 1

1 20 1 20 1

1 1 1 20 0

ans=24,not 9!

(这题告诉我们:要审题)

正解:

爆搜绝对能对,把方向改为两个就好了。

(这题我分不清是递推还是动态规划,应该是动态规划):

像数字三角形(或者说一样)的解法,

因为这题并没有后效性,

f[i,j]表示到i行j列时的最小的和。

f[i,1]:=f[i-1,1]+a[i,1];

f[1,j]:=f[1,j-1]+a[1,j];

因为只能从上面或左边过来

f[i,j]:=min(f[i-1,j],f[i,j-1])+a[i,j];

(2<=i<=n)(2<=j<=m)

输出f[n,m]。


题外话:

1. 爆搜,是解题时的一盏明灯;记忆化,使解题时明灯的光更加明亮。

2. 要审题。

3. 题目中有很多东西是没啥用的,要简化。比如三题的优化一。

4. 语文要学好。

5. 要细心,不要犯第一题的低级错误。

6. 要懂得举一反三。


完

2016.9.24初中部上午NOIP普及组比赛总结的更多相关文章

  1. 2016.9.15初中部上午NOIP普及组比赛总结

    2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...

  2. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

  3. 2016.9.3初中部上午NOIP普及组比赛总结

    2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...

  4. 2016.10.7初中部上午NOIP普及组比赛总结

    2016.10.7初中部上午NOIP普及组比赛总结 这次的题还可以,重新入了比赛的前十. 进度: 比赛:90+10+70+30=200 改题:AC+AC+AC+AC=AK 找试场 这题很简单,但是被欺 ...

  5. 2016.10.6初中部上午NOIP普及组比赛总结

    2016.10.6初中部上午NOIP普及组比赛总结 中了病毒--病毒--病毒-- 进度: 比赛:AC+0+0+20=120 改题:AC+0+AC+20=220 Stairs 好--简--单!递推就过了 ...

  6. 2016.10.5初中部上午NOIP普及组比赛总结

    2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...

  7. 2016.11.5初中部上午NOIP普及组比赛总结

    2016.10.29初中部上午NOIP普及组 这次比赛算是考的最差的一次之一了,当中有四分之三是DP. 进度: 比赛:没分+0+没分+40=40 改题:AC+0+没分+40=140 TurnOffLi ...

  8. 2016.10.29初中部上午NOIP普及组比赛总结

    2016.10.29[初中部 NOIP普及组 ]模拟赛 做得好爽! 进度: 比赛:35+45+AC+0=180 改题:AC+AC+AC+0=300 幸运的数 有点无语--之前怕超限,还特意利用程序打了 ...

  9. 2016.10.4初中部下午NOIP普及组比赛总结

    2016.10.4初中部下午NOIP普及组比赛总结 这次的题有些水,只是第四题有点坑. 题目: 比赛:AC+0+AC+50=250 改题:AC+AC+AC+50=350 一.Bill 满地都是水 题目 ...

随机推荐

  1. 专题:“find -perm”

    Search for files which have read and write permission for their owner, and group, but which other us ...

  2. Zabbix监控RabbitMQ

    github下载开源脚本:https://github.com/jasonmcintosh/rabbitmq-zabbix 运行环境:python2.6.6 脚本分析: rabbitmq-zabbix ...

  3. Python flask构建微信小程序订餐系统✍✍✍

    Python flask构建微信小程序订餐系统  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题, ...

  4. 榨取kkksc03

    题目描述 洛谷的运营组决定,如果一名oier向他的教练推荐洛谷,并能够成功的使用(成功使用的定义是:该团队有20个或以上的成员,上传10道以上的私有题目,布置过一次作业并成功举办过一次公开比赛),那么 ...

  5. 【POJ】3259 Wormholes

    题目链接:http://poj.org/problem?id=3259 题意:n个农场,m条双向路径,w条单向路径(虫洞).单向虫洞路径是负值.农夫想知道自己能不能看到自己(X). 题解:其实刚开始没 ...

  6. 2018-10-8-Win10-使用-GHO-安装出现-UWP-软件打开闪退-应用商店无法安装软件

    title author date CreateTime categories Win10 使用 GHO 安装出现 UWP 软件打开闪退 应用商店无法安装软件 lindexi 2018-10-8 18 ...

  7. CSS——before和after伪元素

    之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面的某些元素来展现 ...

  8. 重装系统后配置原有的mysql

    1.重装系统后配置原有的mysql 2.修改 my.ini [修改 basedir:MySQL当前所在路径 datadir  数据存放路径] [mysqld] # 设置3306端口 port= # 设 ...

  9. Myeclipse从外部导入项目时,jsp和html页面中所有的onclick="return xx()"位置均出现cannot return from outside function() or method()错误

  10. NOIP2016 解题报告

    D1T1 玩具谜题 xjb模拟即可 #include<bits/stdc++.h> #define N (100000+5) using namespace std; inline int ...