摘要: 题意:已知D(0<=D<2^31)、s1、s2,其中L为D转化为二进制数时1的个数,题目保证s1<=L<=s2,求一个数,满足以下条件: 1、比D大 2、转化为二进制时1的个数在[s1, s2]内 3、找出满足1、2条件的最小数字 分析: 1、首先将D加1,假设该数为x,求出x转化为二进制时1的个数 阅读全文
posted @ 2016-11-05 15:44 Somnuspoppy 阅读(200) 评论(0) 推荐(0)
摘要: 题意:已知,可得出 P(1) = 4, P(2) = 1, P(3) = 5,由此可得出 P(P(1)) = P(4) = 2. And P(P(3)) = P(5) = 3,因此。经过k次如上变换,最终可得,输入保证一定有解,求k。 分析: 1、能用数组表示映射就别用map,很耗时 2、序列中的每 阅读全文
posted @ 2016-11-05 13:33 Somnuspoppy 阅读(247) 评论(0) 推荐(0)
摘要: 题意:已知原串(长度为1~1000),它由多个单词组成,每个单词除了首尾字母,其余字母为乱序,且句子中无空格。给定n个互不相同的单词(1 <= n <= 10000),问是否能用这n个单词还原出这个句子。 eg: 分析: 1、将原串从头到尾遍历,分别以原串中的每个字母为基础,查找是否有以该字母为尾字 阅读全文
posted @ 2016-11-04 16:52 Somnuspoppy 阅读(222) 评论(0) 推荐(0)
摘要: 题意:已知n(n <= 150)个城市和m(m <= 5000)个航班,每个航班有出发地、到达地、乘坐人数、起飞时间和降落时间(时间用时和分表示),求从一个指定城市出发,去往另一个指定城市在规定的最晚时间前(包括最晚时间)可以到达的最大人数(换航班的间隔至少需要30分钟)。 分析: 1、首先最大流模 阅读全文
posted @ 2016-11-04 16:25 Somnuspoppy 阅读(259) 评论(0) 推荐(0)
摘要: const int MAXN = 1000000 + 10; bool pr[MAXN]; vector ans; void init() { ans.clear(); for(int i = 0; i < MAXN; ++i) pr[i] = true; pr[0] = false; pr[1] = false; for(int i = ... 阅读全文
posted @ 2016-10-18 15:05 Somnuspoppy 阅读(161) 评论(0) 推荐(0)