2016.9.24初中部上午NOIP普及组比赛总结
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普及组比赛总结的更多相关文章
- 2016.9.15初中部上午NOIP普及组比赛总结
2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...
- 2016.9.10初中部上午NOIP普及组比赛总结
2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...
- 2016.9.3初中部上午NOIP普及组比赛总结
2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...
- 2016.10.7初中部上午NOIP普及组比赛总结
2016.10.7初中部上午NOIP普及组比赛总结 这次的题还可以,重新入了比赛的前十. 进度: 比赛:90+10+70+30=200 改题:AC+AC+AC+AC=AK 找试场 这题很简单,但是被欺 ...
- 2016.10.6初中部上午NOIP普及组比赛总结
2016.10.6初中部上午NOIP普及组比赛总结 中了病毒--病毒--病毒-- 进度: 比赛:AC+0+0+20=120 改题:AC+0+AC+20=220 Stairs 好--简--单!递推就过了 ...
- 2016.10.5初中部上午NOIP普及组比赛总结
2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...
- 2016.11.5初中部上午NOIP普及组比赛总结
2016.10.29初中部上午NOIP普及组 这次比赛算是考的最差的一次之一了,当中有四分之三是DP. 进度: 比赛:没分+0+没分+40=40 改题:AC+0+没分+40=140 TurnOffLi ...
- 2016.10.29初中部上午NOIP普及组比赛总结
2016.10.29[初中部 NOIP普及组 ]模拟赛 做得好爽! 进度: 比赛:35+45+AC+0=180 改题:AC+AC+AC+0=300 幸运的数 有点无语--之前怕超限,还特意利用程序打了 ...
- 2016.10.4初中部下午NOIP普及组比赛总结
2016.10.4初中部下午NOIP普及组比赛总结 这次的题有些水,只是第四题有点坑. 题目: 比赛:AC+0+AC+50=250 改题:AC+AC+AC+50=350 一.Bill 满地都是水 题目 ...
随机推荐
- java发送http的get/post请求(一)
HTTP请求类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ...
- sklearn参数优化
学习器模型中一般有两个参数:一类参数可以从数据中学习估计得到,还有一类参数无法从数据中估计,只能靠人的经验进行指定,后一类参数就叫超参数 比如,支持向量机里的C,Kernel,gama,朴素贝叶斯里的 ...
- haproxy Mycat集2---KeepAlived
KA 配两台 MASTER,BACKUP节点 安装Keepalived 1.下载安装依赖包 yum install -y wget make gcc openssl-devel popt-devel ...
- 【2018ACM/ICPC网络赛】沈阳赛区
这次网络赛没有打.生病了去医院了..尴尬.晚上回来才看了题补简单题. K Supreme Number 题目链接:https://nanti.jisuanke.com/t/31452 题意:输入一个 ...
- STM32 Keil仿真调试
引用:http://blog.sina.com.cn/s/blog_3c63d2bd0102vt9a.html 问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方 ...
- IOS配置cocos2d-x
cd /Users/wyc/Desktop/cocos2d-x-3.16/tools/cocos2d-console/bin python cocos.py new HelloWorldDemo -p ...
- GetOpenFilename的基本用法
GetOpenFilename '一.概述基本语法 Application.GetOpenFilename 方法 显示标准的“打开”对话框,并获取用户文件名,而不必真正打开任何文件,只是把打开文件名称 ...
- input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题
监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 但是在很多情况下,只需要输入到输入框的中文字符. 解决办法: 通过查阅资料得知在 ...
- 线性dp——cf1012C好题
比较套路的dp题 /* dp[i][j][0|1]:前i座山盖了j座房子,第i座不盖|盖 dp[i][j][0]=min( dp[i-1][j][0] , dp[i-1][j][1]+max(0,a[ ...
- BCB编写DLL终极手册
一. 编写 DLL File/New/Dll 生成 Dll 的向导,然后能够添加导出函数和导出类 导出函数:extern "C" __declspec(dllexport) Exp ...