[题解+总结]20150728
2015-07-28 21:18
190 查看
1、总结
今天考试才是真正的NOIP难度好不好。。。虽然第三题感觉很变态,但是比昨天正常多了。那么今天是选拔赛的第一场,成绩中规中矩,存在考虑不周全,骗分不彻底的情况。
2、题解
<1> resistance ( TAG:辗转相除(100) )
分析:首先根据电阻串联和并联的性质(不要考虑高中知识),可以得到电阻的转移方式,由此前30分BFS即可;分析后面70分的数据范围为10^18,很容易得到肯定不能递推,O(n)都是极为不现实的,其实我们人工计算一下5个电阻所得到的电阻值即会发现第i个电阻放入之后和第i+1个电阻放入之后得到的总电阻之间是可以通过辗转相除转换的,找到规律之后这道题就很好做了。而同时,因为数据比较水,用更相减损的也过了,虽然两者很明显在最坏情况下的时间复杂度不是一个级别的。
代码:
------------------------------------------------------------------------------------------------------
#include<cstdio>
#include<cstdlib>
typedef long long ll;
ll p,q,ans;
void work(ll p,ll q)
{
if (!q) { printf("%I64d",ans); exit(0); }
ans+=p/q; p=p%q; work(q,p);
}
int main()
{
freopen("resistance.in","r",stdin);
freopen("resistance.out","w",stdout);
scanf("%I64d %I64d",&p,&q);
if (p>q) work(p,q); else work(q,p);
return 0;
}
------------------------------------------------------------------------------------------------------
<2> clique ( TAG:优先队列(70) / DFS+状态压缩DP(100) / 暴力搜索(100) )
分析:题面很明确,数据也相对不大,方法有很多种。首先暴力的话,存在40分做法,对每个节点进行枚举是否选取然后判断。还可以利用优先队列+子集树维护是否选取(不详细介绍,比较麻烦),可得70分;还有比较暴力的做法,ZZD(@z123z123d)就是这么做的——根据每个节点的度数从大到小排序,然后依次进行判断,根据搜索次数进行卡时,也过了。
代码略。
<3> walk ( TAG:费马定理,物理相关,求导)
虽然这道题对于我们这些一没了解过相对论二没求过导的人来说基本不可做,但是大致分析一下,还是有40分可以骗到的。但是注意题目中一个很重要的细节:x可为负数,就这样我挂了10分。
代码略。
今天考试才是真正的NOIP难度好不好。。。虽然第三题感觉很变态,但是比昨天正常多了。那么今天是选拔赛的第一场,成绩中规中矩,存在考虑不周全,骗分不彻底的情况。
2、题解
<1> resistance ( TAG:辗转相除(100) )
分析:首先根据电阻串联和并联的性质(不要考虑高中知识),可以得到电阻的转移方式,由此前30分BFS即可;分析后面70分的数据范围为10^18,很容易得到肯定不能递推,O(n)都是极为不现实的,其实我们人工计算一下5个电阻所得到的电阻值即会发现第i个电阻放入之后和第i+1个电阻放入之后得到的总电阻之间是可以通过辗转相除转换的,找到规律之后这道题就很好做了。而同时,因为数据比较水,用更相减损的也过了,虽然两者很明显在最坏情况下的时间复杂度不是一个级别的。
代码:
------------------------------------------------------------------------------------------------------
#include<cstdio>
#include<cstdlib>
typedef long long ll;
ll p,q,ans;
void work(ll p,ll q)
{
if (!q) { printf("%I64d",ans); exit(0); }
ans+=p/q; p=p%q; work(q,p);
}
int main()
{
freopen("resistance.in","r",stdin);
freopen("resistance.out","w",stdout);
scanf("%I64d %I64d",&p,&q);
if (p>q) work(p,q); else work(q,p);
return 0;
}
------------------------------------------------------------------------------------------------------
<2> clique ( TAG:优先队列(70) / DFS+状态压缩DP(100) / 暴力搜索(100) )
分析:题面很明确,数据也相对不大,方法有很多种。首先暴力的话,存在40分做法,对每个节点进行枚举是否选取然后判断。还可以利用优先队列+子集树维护是否选取(不详细介绍,比较麻烦),可得70分;还有比较暴力的做法,ZZD(@z123z123d)就是这么做的——根据每个节点的度数从大到小排序,然后依次进行判断,根据搜索次数进行卡时,也过了。
代码略。
<3> walk ( TAG:费马定理,物理相关,求导)
虽然这道题对于我们这些一没了解过相对论二没求过导的人来说基本不可做,但是大致分析一下,还是有40分可以骗到的。但是注意题目中一个很重要的细节:x可为负数,就这样我挂了10分。
代码略。
相关文章推荐
- JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别
- Android 获取屏幕高度和宽度
- HDOJ Stones (优先队列)
- Shiny应用基础(2):HTML元素产生方法
- struts2的验证
- 剑指offer_面试题7_用两个栈实现队列(让我熟悉了类模板的使用)
- cocos2d-x 入门游戏:许特尔图_4 of 4
- 类String的构造函数,析构函数,赋值函数
- LeetCode#11 Container With Most Water
- 暑假集训第三周 STL 双队列
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- swift2 运算符函数
- 数字图像处理02(直方图及均衡化,规定化,局部对比度增强)
- hdu5317 素数筛预处理
- HDU 5316 Magician
- 支持向量回归(SVR)对函数的拟合近似
- 链表中的头指针和头节点
- Python笔记之不可不知
- Equivalent Strings
- JavaScript