2014.08.12集训总结 NOI(P) 模拟赛Day1
来源:互联网 发布:淘宝5年老店标志没了 编辑:程序博客网 时间:2024/04/27 19:38
今天的题目还是相当有意思,有内涵,够暴力,我喜欢。
symbol说今天的题目比全国赛难,其实就是分数比较难看,题目还是相对靠近NOIP难度的。。
读题的时候只有第一题有思路,当时估计的难度是 1 2 3 ,最后看起来还是没有错的。
T1 :过河
题目大意:(不好说,上原题吧)
有(N+1)个平行于y轴的河岸排成一排,每两个河岸之间夹着一条河,所以一共有N条河。第i 条河的宽度为wi,在第i 条河中行进的速度为vi。河岸的宽度忽略不计。令X=sigma(wi)。
规定:
1、从(0,0)出发,终点是(X,Y)。Y是一个给定的整数。
2、在渡河时,必须从一个整点驶向另一个整点,花费的时间为这两个点的欧几里得距离除以速度。
3、可以在河岸上行走,但也是必须从一个整点走向另一个整点,速度为给定的u。
求花费时间的最小值。
数据范围:
对于30%的数据,N<=50,Y<=500;
对于60%的数据,N<=50;
对于100%的数据,N<=50000;
对于100%的数据,u<=10^5,wi<=10^5,vi<=10^5,Y<=10^5。
博主坚持发数据范围,是因为“水分”这种比赛策略。
对于NY^2的算法还是很容易想到的 F[I][Y] 表示走到第I个河岸,高度为Y的最小值 ,
F[I][J] = MIN(F[I-1][K] + DIS([I,J] , [I-1,K]) / V[I]) 1 <= K <= J
博主由于一直想不到T2 T3怎么做 ,于是就一头栽在第一题,看看能不能删去一维。
事实上,根本不用DP。
直接贪心就好了。
Y每升高1,证明某一条河的增量增加了1 (例如 :原本是(2,2) --> (5,3) 现在就是(2,2) --> (5,4) ) 这之间增加了一定的值(代价),我们要让这个值最小,就是最优的情况。
枚举Y,每次找出最小的增量,O(NY);
找增量可以用堆来解决,O(Y log N),解决。
T2 : 逃离迷宫
题目大意:给出一个N×M的迷宫(N×M<=1000),每个格子上下左右都连通,每个格子均有一个高度,从一个格子行走到另一个格子需要消耗一定的体力(高度差的平方),有K个格子中有回复一定体力的药水(K<=15),每瓶药水只能喝一次,求从起始格子走到终点格子所需要消耗的最小体力。
数据范围:
对于20%的数据,k=0。
对于60%的数据,n<=20,m<=20,k<=10
对于100%的数据,n*m<=1000,k<=15,s<=10^5,0<=h<10
对于K=0的情况,直接SPFA找出最短路就好了。
我们观察发现,K最多只有15,点阵也最多只有1000。由于SPFA的复杂度,我们可以求出15个点两两之间的最短路。
求出以后,这就是一个状压DP
F[I,S] 表示当前到第I个点,状态为S的最小代价(注:若S = (101)2代表目前已经走了第一个和第三个点【这两个点的药水已经被拿走了】)
枚举J,J为S中未出现的,F[J,S or (1 << (J - 1))] = MIN(F[I][S] + DIS[I][J] - YAO[J]);
一开始已经想到只有15个点,也求出了SPFA,可惜,比赛时没有想到用DP来决定顺序,而是一味的想如何搜索,思维不够灵活,对状压DP也没有足够深的理解。
T3 :幸运数
题目大意:
求1..N中幸运数的个数(N<=10^9),其中一个数为幸运数的要求是这个数的质因子都不超过M且每种质因子的个数为奇数(M<=10^6)。
数据范围:
对于20%的数据,n<=10^4,m<=10^4;
对于40%的数据,n<=10^7,m<=10^6;
对于80%的数据,n<=10^8,m<=10^6;
对于100%的数据,n<=10^9,m<=10^6。
一看数据范围,20分肯定是有的,暴力判断每一个数就好了。
比赛时想到一种思路:用质因数来有机组合,组合出我们想要的幸运数。由于时间关系,没有打出来。
比赛后:我的思路是对的。
如果不加剪枝,那么只有40分。
剪枝如下:
对于当前枚举到的质数PR[I] , 设前面枚举的质因数的积为S。
若S*PR[I]^2 > N ,对于后面的质因数(包括PR[I]),最多只会选一次。这样组合出来的数才会小于N。
若S * PR[K] >N , K后面的质因数(包括K),是选不上的。
当S*PR[I]^2 > N 时, 二分找出K , ans += K - I 就好了。
加了剪枝就能过非常暴力的题目。
题目难度不高,但是思路很巧,方法很暴力,还是要加强思维训练。
脑袋转不过弯来,很多东西没想到,一点一点慢慢来把。
- 2014.08.12集训总结 NOI(P) 模拟赛Day1
- 2014.8.12 Noi(p)模拟
- day1模拟赛总结
- 8.12NOI(P)模拟
- 集训总结day1
- [NOI(P?)2017模拟]围城
- [NOI(P?)2017模拟]字符串
- 2017.3.25NOI模拟赛总结
- 【NOI 2015模拟】总结
- 7.6 NOI模拟总结
- [UOJ NOI Round #1 Day1]总结
- NOIP2014 DAY1 模拟赛赛后总结
- 【NOI(P)2013模拟】秘密任务
- [暑假集训] jzoj 2016.7.12 noip模拟赛B 总结
- [暑假集训] jzoj 2016.8.12 noip模拟赛B 总结
- 2014.08.09 CH Round#48 - Streaming#3(NOIP模拟赛Day1) 总结
- CH Round #54 - Streaming #5 (NOIP模拟赛Day1) 总结
- CCF NOI 2010 Day1
- 仿函数
- SQL 月末 月初 写法
- 平衡二叉树旋转平衡(要看)!
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
- hdu 4941 Magical Forest--2014 Multi-University Training Contest 7
- 2014.08.12集训总结 NOI(P) 模拟赛Day1
- 马士兵struts2视频教程第二十七集
- 一道数组排序题
- 【140813】程序员面试宝典完整版 pdf
- 循环链表
- 浮点数的大小比较问题
- Render To Texture
- 1408122118-hd-Switch Game.cpp
- 为什么不能丢外外链