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. 用python写的自动转发邮件信息模板

    # -*- coding:utf-8 -*- #加密东西 def decrypt(key, s): c = bytearray(str(s).encode("gbk")) n = ...

  2. 连接mysql并查询

    1.将mysql-connector-java-5.1.7-bin.jar放入Jmeter安装目录的bin文件夹中 2.在顶层目录<测试计划>中加载驱动 3.添加JDBC Connecti ...

  3. jenkins自动化部署jar包(2)

    1.自动化部署流程: svn代码-----jenkins------linux运行 环境: 我这里为了测试:svn,和linux放在阿里云上面.jenkins放在本地windos电脑上运行的 2.下载 ...

  4. js原型继承四步曲及原型继承图

    一:js原型继承四步曲 //js模拟类的创建以及继承 //动物(Animal),有头这个属性,eat方法 //名字这个属性 //猫有名字属性,继承Animal,抓老鼠方法 //第一步:创建父类 fun ...

  5. 同步图计算实现最短路径Dijkstra算法

    同上篇讲述pageRank一样,考虑一个顶点V. 根据顶点算法通常步骤1) 接收上个超步发出的入邻居的消息2) 计算当前顶点的值3) 向出邻居发消息 1.接收入邻居的消息 2.求入邻居的最小值,加上顶 ...

  6. BCZM : 1.4

    书店促销活动,某套书一共有五卷.假设每一卷单独销售均需8欧元,多买则有折扣,具体折扣如下:    2 5%    3 10%    4 20%    5 25%    设计算法,计算出读者购买一批书的 ...

  7. a^a^a^a^a^a^a^a^a

    a^a^a^a是从前向后算,也就是a^(a^3)

  8. python3文件方法

    Python3 File(文件) 方法 需要注意:打开文件的 mode 参数注意区别文件指针位置 rw/rw+ 文件指针是在文件的开头,w任何模式都是会删除之前原有的内容的, a是追加且,打开文件指针 ...

  9. 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?

    不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同.Java对于eqauls方法和hashCode方法是这样规定的: (1)如果两个对象相同 ...

  10. bsgs+求数列通项——bzoj3122(进阶指南模板该进)

    /* 已知递推数列 F[i]=a*F[i-1]+b (%c) 解方程F[x]=t an+1 = b*an + c an+1 + c/(b-1) = b(an + c/(b-1)) an+1 + c/( ...