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

这次的题目出得挺有质量的。但我觉得我更应该努力了。


进度

比赛:0+20+0+0=20

改题:AC+AC+AC+AC=AK


kk的作业

这题我错得……文件输入输出……别提了,听题!

题目简化

上一行的数之积/下一行的数之积

不能用小数,用分数(记得化简)。

接输出’0’+#13+’1’

暴力地把分子和分母分别乘起来。

然后除以它们的最大公因数(gcd)

也就是约分。

后来感觉会爆。

所以我后来又改了一种方法:

每次两边都分别给fz(分子)和fm(分母)乘一个,

然后就约分。

但我感觉需要高精度除法,所以没做高精度。

错因

文件输入输出。

变量超出范围。

正解

我很快改好这题了。

其实可以把那些数存在数组里,然后两两约分。

最后才用高精度乘法把它们一个一个地乘出来。


zy的秘密

丢了40分。

题目简化

单源最短路径问题。

可答案要求dis数组里除maxlongint之外最大的。

比赛思路

我一开始不知道这是最短路径,

用了递归60分。

后来担心爆栈,

我就把它改成宽搜了。

却因为一些细节,我的宽搜20分。

40分没了。

错因

递归时超。

正解

可以用SPFA算法做。

也可以像我这样宽搜。


zy送画

打了好久的爆搜……事实证明打爆搜很复杂……

题目简化

两个人从左上角走到右下角。

中间不许重复。

问中间经过的数最大和。

比赛思路

一个矩阵变成两个矩阵,一个在左上,一个在右下。

求出对应点,bz时就两个一起标。

然后爆搜……

错因

时间不够,没编完。

正解

设f[i1,j1,i2,j2]为第一人到(i1,j1),第二人到(i2,j2)时的最大和。

方程不用说了,有几个方向能够过来。


wd的假日

一开始以为是什么背包。最后慌慌忙忙打了爆搜,结果……

文件输入输出,还漏了些细节。

题目简化

有一个人,有很多的工作,

至少做m个工作。每做一个工作,就会得到一些钱。

但打游戏也可以赚钱,有一些时间必须要打游戏。

比赛思路

想了很久背包,

最后慌忙地打上爆搜。

错因

漏了一些细节。

正解

递归就行了,

不需要加记忆化。


题外话

1. 这次的题虽然有难度,但也好消化。

2. 好开心!我猛地发现我通过第二题推出了SPFA!还是我自己推出的!别人讲时太复杂了,我听不懂。但因为这道题是单源的,我甚至不知道是最短路径问题,居然通过爆搜推出SPFA!当我检查时才发现!(也许是因为这题比较有针对性吧)。

SPFA:

Program SPFA;
const
max_data=100000;
var
n,m,i,j,x,y,ans,head,tail:longint;
a:array[1..1000,1..1000]of longint;
d:array[1..max_data]of longint;
dis:array[1..1000]of longint;
bz:array[1..1000]of boolean;
procedure read_;//读入
procedure init;//初始化
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=maxlongint;
for i:=1 to n do a[i,i]:=maxlongint;
for i:=1 to n do dis[i]:=maxlongint;
for i:=1 to max_data do d[i]:=0;
end;
begin
readln(n);
readln(m);
init;
for i:=1 to m do
begin
read(x,y);
readln(a[x,y]);
a[y,x]:=a[x,y];//如果是有向图就别加
end;
end;
procedure write_;//输出
begin
for i:=2 to n do
if dis[i]<maxlongint then write(dis[i],' ')else write('-1 ');
end;
procedure spfa;
begin
head:=0;
tail:=1;
d[1]:=1;
dis[1]:=0;
repeat
inc(head);
if head>max_data then head:=1;
for i:=1 to n do
begin
if not(a[d[head],i]<maxlongint)then continue;
inc(tail);
if tail>max_data then tail:=1;
d[tail]:=d[head];
d[tail]:=i;
if dis[d[head]]+a[d[head],d[tail]]>=dis[d[tail]] then
begin
dec(tail);
if tail=0 then tail:=max_data;
continue;
end else dis[d[tail]]:=dis[d[head]]+a[d[head],d[tail]];
if bz[d[tail]] then
begin
dec(tail);
if tail=0 then tail:=max_data;
continue;
end;
bz[d[tail]]:=true;
end;
bz[d[head]]:=false;
until head=tail;
end;
begin
read_;
spfa;
write_;
end.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2016.9.24初中部上午NOIP普及组比赛总结 2016.09.24[初中部 NOIP普及组 ]模拟赛 其实这次我没比赛,早上去参加亲子活动去了. 不过在下午我做完了所有的题,感觉还好. 进度 现 ...

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

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

随机推荐

  1. opencv-图像形态学之膨胀腐蚀

    转自:https://blog.csdn.net/poem_qianmo/article/details/23710721 一.原理 1.1 形态学概述 形态学(morphology)一词通常表示生物 ...

  2. nginx按日分割日志

    #!/bin/bash #按日切割nginx日志并压缩,加入crontab每天0:00切割 #作者:fafu_li #时间: source /etc/profile #加载系统环境变量 source ...

  3. iOS开发之3D Touch

    1.简介 3DTouch是在6s之后苹果的一项技术,只能在6s及其以上机型真机运行,Xcode的模拟器是不支持的. Quick Actions(点击icon的快捷方式) Peek&Pop(应用 ...

  4. VMware Workstation 添加磁盘 挂载目录(centos)

    参考文档: Linux命令大全 需求:测试环境虚拟机某个目录下空间不足,准备通过添加一块磁盘,并将该目录挂载到该磁盘 前面几步在测试服务器上操作的,截图困难,所以网上找了几张设置图 关闭虚拟机(没测试 ...

  5. i++ 和 ++i 的区别

    先说运算规则吧. i++ 是先赋值后自增:++i 是先自增后赋值. 以下是代码示例: int a=0; int b=0; int i=0; a=i++; System.out.println(&quo ...

  6. 剑指offer——19删除链表的节点

    题目一: 在O(1)时间内删除链表节点.给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 书本讲得不明就里 class Solution { void DeleteNode ...

  7. Android 7.0 IMS框架详解

    本文主要讲解IP Multimedia Subsystem (IMS)在Android 7.0上由谷歌Android实现的部分内容.从APP侧一直到Telephony Framework,是不区分CS ...

  8. Spring Boot 文件下载

    1. 文件下载类 import javax.servlet.http.HttpServletResponse; import java.io.*; public class DownloadUtil ...

  9. Python全栈开发:django网络框架(一)

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  10. css悬浮在页面顶端

    .header{ position:fixed; margin-top:; width:%; z-index:; } .body{ position:relative; padding-top:119 ...