codeforces / project Euler 泛做
发现这个题库,很有意思,趁着还没有学习微积分,看不了书,赶快从头开始刷,所以都是一些简单的题目,即时简单,有一些结论还是很有意思的。
网上资料很少,有的找不到答案,所以只有硬着头皮做了。
PE 15
一个网格图,只能向下,或者向右走,问从\((0,0)\)到\((n,m)\)到路径有多少条.
这里的结论是有\(C_{n+m}^n\).
证明:从0,0到n,m会往下走n步,往右走m步,把路径看成一个长度为n+m的序列,往下走为0,往右走为1
有n个0,m个1,转化为有多少个不同的序列。
我们考虑从序列中选择0的方案数.就是\(C_{n+m}^n\).
PE 76
这是一道很有意思的Partition Function P题目。
里面详细的讲解了如何使用数学的方法来解,不过全是英文,我没有看懂。
也可以使用\(f[i][j]\)表示以i结尾最后一段的和式j数的方案数.
然后发现可以使用前缀和优化,复杂度\(O(n^2)\)
由于是DP,所以放一下代码仅供参考.
int main() {
f[0][0] = sum[0][0] = 1;
for(int i = 1;i <= 100;++ i) sum[0][i] = sum[0][i - 1];
int n = 100;
for(int i = 1;i <= n;++ i) {
for(int j = 1;j <= i;++ j) {
f[i][j] = sum[i - j][j];
sum[i][j] = f[i][j];
}
for(int j = 2;j <= 100;++ j) sum[i][j] += sum[i][j - 1];
}
ll Ans = 0;
Ans = sum[100][99];
std::cout << Ans;
return 0;
}
从上面的链接中得知,有生成函数的解法。
PE 90
一个trick , 显然可以用对数函数来比较大小
\(log(a^b) = b*log(a)\)
PE 577
恩,调这道题做了一下午。
\(f(i)\)表示以i行为底的六边形造成的共线,然后就可以计算了
\[f(n) = f(n-1) + \sum_{s=1}^{\lfloor n/3\rfloor}s(n-3s+1)\]
PE 97
一个trick , mod,
乘法和加法满足
\((a*b) \% mod = ((a \% mod) * (b \% mod))\%mod\)
\((a+b)\%mod = ((a\% mod) + (b\% mod) )\%mod\)
PE 364(坑)
第三道计数题,感觉还是get不到计数的点。
只推了一个性质:
第一步结束之后,不存在长度>=3的空格子。
根据这个性质。
第一步结束之后,局面会变成每两个人间隔只有1与2.
有一特殊情况是两端有人或者没人。
存在特殊情况,我们先枚举左右端点。
然后枚举长度为2的空格子的个数。
枚举之后,我们发现可以计算出长度为1的空格子的个数.
考虑第二步,每个人必须加入长度为二的空格子,所以方案数是2.
之后就是难以忍受的细节问题了。
还没有完成代码的任务
待做
PE 601
PE 613
PE 493
PE 102
PE 618
codeforces / project Euler 泛做的更多相关文章
- Codeforces Training S03E01泛做
http://codeforces.com/gym/101078 和ysy.方老师一起打的virtual 打的不是很好...下面按过题顺序放一下过的题的题(dai)解(ma). A 给两个1~n的排列 ...
- [Project Euler] 来做欧拉项目练习题吧: 题目013
问题描述: Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. 371072 ...
- codeforces泛做..
前面说点什么.. 为了完成日常积累,傻逼呵呵的我决定来一发codeforces 挑水题 泛做.. 嗯对,就是泛做.. 主要就是把codeforces Div.1的ABCD都尝试一下吧0.0.. 挖坑0 ...
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Python练习题 046:Project Euler 019:每月1日是星期天
本题来自 Project Euler 第19题:https://projecteuler.net/problem=19 ''' How many Sundays fell on the first o ...
- Python练习题 045:Project Euler 017:数字英文表达的字符数累加
本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...
- Python练习题 039:Project Euler 011:网格中4个数字的最大乘积
本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...
- Python练习题 032:Project Euler 004:最大的回文积
本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...
随机推荐
- java动态代理源码解析
众所周知,java动态代理同反射原理一直是许多框架的底层实现,之前一直没有时间来分析动态代理的底层源码,现结合源码分析一下动态代理的底层实现 类和接口 java动态代理的主要类和接口有:java.la ...
- 转载:Linux命令之查看文件占用空间大小-du,df
转载自:<du命令>-linux命令五分钟系列之三 du(disk usage),顾名思义,查看目录/文件占用空间大小 #查看当前目录下的所有目录以及子目录的大小$ du -h $ du ...
- DB(1):SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!!
SQLAPI catch [Bind variable/parameter 'pay_acc_id' not found] !!! 出现这种报错,先检查命令类后面的参数是否混淆(SACommand s ...
- rocketmq 集群环境搭建配置
rocketmq环境搭建配置: 一. 搭建三主集群,环境:centos-64 7.4 + RocketMQ-4.3.2 Master01: 192.168.102.68 Master02: 192 ...
- Druid.jar包
首先了解一下,什么是Druid. Druid是Java语言中最好的数据库连接池,它能够提供强大的监控和扩展功能. Druid是一个JDBC组件,它包括三部分: 1)DruidDriver 代理Driv ...
- Apache Hadoop 2.9.2 的YARN High Available 模式部署
Apache Hadoop 2.9.2 的YARN High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.官方文档(htt ...
- 社区发现算法 - Fast Unfolding(Louvian)算法初探
1. 社团划分 0x1:社区是什么 在社交网络中,用户相当于每一个点,用户之间通过互相的关注关系构成了整个网络的结构. 在这样的网络中,有的用户之间的连接较为紧密,有的用户之间的连接关系较为稀疏.其中 ...
- Jenkins实践之入门体验
官网:https://jenkins.io/ 持续集成,快速发布是DevOps实践的最好方式. 目录 准备工作 下载/安装/启动 基础配置 插件配置 构建第一个Java项目 部署项目 准备工作 在使用 ...
- django --视图装饰器
- Arduino-函数库和程序架构介绍
(1)声明变量及接口的名称 (2)setup().在程序运行时首先要调用setup()函数[初始化函数],用于初始化变量.设置针脚的输出/输入类型.配置串口.引入类库文件等等.每次Arduino上电或 ...