469专题

leetcode解题思路分析(五十五)469 - 475 题

用 Rand7() 实现 Rand10() 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 说白了就是进制转换问题。使用两次rand7,可以生成1-49的数字,其中1-40直接拿来表示1-10,多的数字1-9再次rand7,则组成63个数字,再多的3个可以组成21个,接着组成1个,最后回到循环。 // Th

nyoj-469-擅长排列的小明II

#include<stdio.h> int a[56]={0,1,1,2,4}; int main() { int n,i; for(i=5;i<56;i++) a[i]=a[i-1]+a[i-3]+1; while(scanf("%d",&n)!=EOF) printf("%d\n",a[n]); return 0; }

ifstream::tellg() 返回-469

一个程序输出一个文件,另一个程序打开这个文件,读入内容。读入过程中,需要记录读取位置,使用tellg()获取读取位置, 以便后面用seekg重新定位读取。 使用过程中发现,tellg()返回的位置,有时有效,有时无效,第一次是返回0,后面文件有输入后,再次读取前,调用tellg(),有时返回-469,有时返回正的位置。 经过多次摸索,结合网上搜索,发现windows下,ifstream只有用二

Codeforces Round #469 (Div. 1) C. Data Center Maintenance(Tarjan)

题目链接:http://codeforces.com/contest/949/problem/C 开始看错了题目,根本不会啊? 后来发现保证初始情况下,原图一定是accessible的,然后我们所有的ci和cj,当u[ci]+1=u[cj]时,我们建立一条又ci到cj的有向边,然后我们发现,我们更改一个点的时候,一定要把他所有的后继节点都更改掉,所以我们将原图缩点之后,生成一个拓扑图,每个