第一题:(水题)

题目大意:就是给出扫雷的图,然后统计每个九宫格的雷的个数。

解题过程:

1.好久没做这样的水题了。直接模拟水过。。

第二题:

题目大意:给出一个长度小于1000的数k,要求一个尽可能小的数x,这个数的各个位的乘积为k;

解题过程:

1.想不到什么高级的算法,感觉就是考高精度除法,于是果断dfs爆搜,既然要求尽可能小的数,那么每次就从9到2一个一个试除,第一个找到的答案就是最后答案。这样20个点能过17个。

2.对比了标程,发现有2个剪枝:

首先如果上一次除的是 x,那么这一次 不必从9开始试除,因为比x大的因此 在之前肯定已经除掉了。

其次,如果当先枚举到能被x除尽,那么不必枚举比x小的那些数来除,因为这样也必定不比除x优。证明:假设 x能除尽当前的数,且存在y<x 能除尽当前的数,且之后能找到答案, 那么 除掉y之后,再去除的必定是x。 但是这样还不如 先除x在除y。而如果先除x找不到答案,那么先除y也一样找不到答案。

3.还是一道非常不错的题目,结合了贪心,搜索剪枝和高精度。从这题可以感受到,有的时候真的一个小小的优化可以让你的程序跑得快许多。

第三题:

题目大意:给出N个点M条边的无向图,要求一条从s到t的路径,使得 路径上 权值最大边的权值 除以 权值最小边的权值 的商最小, 结果输出这个商,如果是分数,用X/Y的形式表示,X和Y互质; N<=500,M<=5000

解题过程:

1.一开始想到的自然是 给边按权值排序,枚举最小值,二分最大值,用并查集判断联通,但是目测会超时。

2.然后就改成spfa:做两次spfa,分别从s,t出发 求出到每一个点的路径权值最大边的最小值,权值最小边的最大值,最后枚举中间点。结果 发现样例过不去,仔细想了想 其实这样的贪心是不对的。因为没法保证最大边最小和最小边最大 在同一条路径上。

3.看时间不够了,还是老老实实按1的方法来写,2个点超时。 看了下标程,发现有一个剪枝:就是如果枚举最小值的时候,上一个最小值和当前的相等,那么直接跳过。 加上这个减枝竟然神奇的0ms过了。。 而且标程的最大边没有二分,也是枚举的。时间复杂度O(M*(M+N*α(N))),按理说应该超时的。常数小,反而0ms。 我一开始的程序复杂度是大致 O(M*logM*M),确实慢了。 二分完全没有必要。

一模 (1) day2的更多相关文章

  1. 二模 (8) day2

    第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...

  2. 一模 (4) day2

    第一题: 题目大意:二进制数 n mod m 的结果是多少?  n 的长度(二进制数的位数)<=200 000:  m 的长度(二进制数的位数)<=20. 解题过程: 1.我的算法是直接高 ...

  3. 二模 (16) day1&day2

    第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007.  n<=1000000 解题过程: 1.递推式还 ...

  4. 二模 (15)day2

    第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...

  5. 二模 (13)day2

    第一题: 题目大意: 给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小. N,M<=1000 矩阵内点的权值小于1000. 解题 ...

  6. 又是一个二模02,不过day2

    话说比较简单.除了第三题不会写平衡树啊你妹!!边做边写吧. 机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链 ...

  7. 二模Day2题解

    小明搬家 题目描述 小明要搬家了,大家都来帮忙. 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼. 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了.最后大家发现这样混乱地搬运过程效率太 ...

  8. 二模 (12)day2

    第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...

  9. 二模 (11) day2

    第一题: 题目大意: 有一本n个单词的字典,其中每个单词的长度不超过4且大于0.现在给你一篇文章,文章中没有分隔符,只有小写字母.现在需要你修改最少的字母,使文章(长度为m 是由字典中的单词构成. n ...

随机推荐

  1. Java编程思想笔记

    打好java基础 后续会增加相应基础笔试题 目录如下 1 对象导论2 一切都是对象3 操作符4 控制执行流程5 初始化与清理6 访问控制权限7 复用类8 多态9 接口10 内部类11 持有对象12 通 ...

  2. jQuery DOM

    请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1  jQuer ...

  3. order by 容易出现的bug记录

    写分页查询时遇到一个问题: 在order by create_time 的时候,假设所有数据的create_time 值相同,那么 使用:select * from ( selelct s.*,row ...

  4. 最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)

    堆有最大堆和最小堆之分,最大堆就是每个节点的值都>=其左右孩子(如果有的话)值的完全二叉树.最小堆便是每个节点的值都<=其左右孩子值的完全二叉树. 设有n个元素的序列{k1,k2,..., ...

  5. 【matlab】读写文件

    save('pqfile.mat','M'); ('E:\我的坚果云\pqfile.mat','M'); 其他: http://blog.csdn.net/iqizheng/article/detai ...

  6. x+y = ((x&y)<<1) + (x^y) 证明

    法一:我们考虑x,y在二进制表示时候,按位相加其中第i位xi+yi = ((xi&yi)<<1) + (xi^yi)其中(xi&yi)<<1表示当xi和yi都是 ...

  7. 在centos6.5中安装reids

    一.简介 Redis是一个key-value存储系统,是一个内存数据库,Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作 ...

  8. 如何让div中的内容垂直居中

    虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果, ...

  9. js 中 continue 与 break 熟练使用

    //break:在循环体中,遇到break,整个循环都结束了,后面的累加操作也不在执行了,并且循环体中,只要遇到break,那么循环体break后面的代码都不在执行了 //continue:在循环体中 ...

  10. Visual Studio原生开发的10个调试技巧(二)

    来源:oschina 发布时间:2013-08-10 阅读次数:397 51   我以前关于Visual Studio调试技巧的文章引起了大家很大的兴趣,以至于我决定分享更多调试的知识.以下的列表中你 ...