题意:给3个数M,A,B,求两个质数P,Q.使其满足P*Q<=M且A/B<=P/Q<=1,并使P*Q最大.输入若干行以0,0,0结尾. 解法:先线性筛出素数表,再枚举出P,二分出对应的最大的Q,得出最佳答案. 注意--1.第二个的代码是标准的欧拉筛,可求每个数的最小质因数:  2. 像第一个代码二分时通过位运算,使pri[]的下标尽量大来实现,比一般的二分快了很多很多!!一个6ms,一个502ms.具体请见代码. 1 #include<cstdio> 2 #include&l…
Calling Extraterrestrial Intelligence Again Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11211   Accepted: 4356 Description A message from humans to extraterrestrial intelligence was sent through the Arecibo radio telescope in Puerto…
Calling Extraterrestrial Intelligence Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3993    Accepted Submission(s): 2097 Problem Description A message from humans to extraterrestrial in…
Calling Extraterrestrial Intelligence Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4083    Accepted Submission(s): 2140 Problem Description A message from humans to extraterrestrial in…
这题wa了很多词,题目本身很简单,把a/b搞反了,半天才检查出来. #include <stdio.h> #include <string.h> #include <math.h> ]; int main() { int i, j, q, p, maxi, maxj, max; double m, a, b, n, tmp1, tmp2; memset(isPrime, , sizeof(isPrime)); isPrime[] = isPrime[] = ; ; i&…
题意:给你数m,a,b,假设有数p,q,满足p*q<=m同时a/b<=p/q<=1,求当p*q最大的p和q的值 方法:暴力枚举 -_-|| and 优化范围 我们可以注意到在某一个m值得情况下,有一些小于m的值的质数根本不可能去到 以m=1680 a=5 b=16来举例,假设当前枚举的质数为x 那么既然选了这个x必然另外一个质数不可能小于x*5/16所以就可以得到一个方程 5/16*x^2<=1680 这样可以解出x=73.....(取整) #include <iostrea…
题目链接:http://poj.org/problem?id=1411 题目大意:找两个素数p,q满足a/b<=p/q<=1 且p*q<=m,求p*q最大的一组素数对. 第一次想的是筛素数,然后枚举,后来发现没有超时(汗,这让我们写正解的很GG). 正解是先筛素数,然后用mul数组对于两个素数的积存下较小的那个素数.最后从m向下枚举. 枚举代码: #include<cstdio> #include<cmath> #include<cstring> #i…
[java] /** * 递归分治算法学习之二维二分查找 * @author Sking 问题描述: 存在一个二维数组T[m][n],每一行元素从左到右递增, 每一列元素从上到下递增,现在需要查找元素X(必在二维 数组中)在数组中的位置,要求时间复杂度不超过m+n. */ package 递归分治; public class BinarySearchInArray { /** * 二维二分搜索的实现 * @param array 待查找的二维数组 * @param value  待查找的元素 *…
C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置. 原理是让关键字与队列中的数从最后一个开始(或第一个)逐个比较,直到找出与给定关键字相同的数为止它的缺点是效率低下 */ #include<stdio.h> void main(){ ]={,,,,,,,,,}; int size = sizeof(arr)/sizeof(int);…
文章目录 前言 存取效率 计算效率 性能优化要点 展现足够的并行性 优化内存访问 优化指令执行 前言   CUDA算法的效率总的来说,由存取效率和计算效率两类决定,一个好的CUDA算法必定会让两类效率都达到最优化,而其中任一类效率成为瓶颈,都会让算法的性能大打折扣. 存取效率   存取效率即GPU和显存之间的数据交换效率,在上一篇博客中,我们介绍了GPU的存储结构,对GPU的各类存储介质有了一个初步的了解,其中全局内存具有最大的容量和最慢的访问效率,且对是否对齐和连续访问很敏感,这也是我们在前面…