题目链接:HDU 5317 RGCDQ
题意:定义函数F(x)为x的不同的素因子且小于等于x的个数,询问[l,r]区间中gcd(F(i),F(j))的最大值。
思路:暴力预处理出所有的合数分解结果,发现F(x)最大也只有7,之后就是暴力求出所有1到7出现次数的前缀和。询问的时候就打到O(1)了。
AC代码:
#include
#include
#include
using n...
分类:
其他好文 时间:
2015-07-30 11:26:53
阅读次数:
104
??
#include
#include
#include
using namespace std;
struct node
{
bool operator()(int &x,int &y)//优先级
{
return x>y;
}
};
priority_queue,node> que;//队列
int main()
{
int n;
scanf...
分类:
其他好文 时间:
2015-07-30 11:25:14
阅读次数:
118
//给出Xiaoqian的钱币的价值和其身上有的每种钱的个数
//商家的每种钱的个数是无穷,xiaoqian一次最多付20000
//问怎样付钱交易中钱币的个数最少
//Xiaoqian是多重背包
//商家是完全背包
#include
#include
#include
using namespace std ;
const int maxn =...
分类:
其他好文 时间:
2015-07-30 11:23:20
阅读次数:
121
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795
好吧,写了这么多单点更新的题目,这样的就很简单了,不过我第一次用这样的风格写代码;向这种简短风格靠齐;
不过题目给的数据感觉还挺坑的,还好我机智的看了Discuss。。。。哈哈,仰天长笑。。。。
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-07-30 11:22:38
阅读次数:
96
在一棵树上 求2个点的最短距离,那么首先利用LCA找到2个点的最近公共祖先
公式:ans = dis(x) + dis(y) - 2 * dis(lca(x,y))
这里的dis(x)指的上x距离根节点的距离
注意一些细节方面,比如数组的越界问题:
#include
#include
#include
#include
using namespace std;
typedef long l...
分类:
其他好文 时间:
2015-07-30 11:20:40
阅读次数:
118
#include
void print_subset(int n,int * A,int cur)
{
for(int i=0;i<cur;i++) printf("%d ",A[i]);
printf("\n");
int s = cur ? A[cur-1]+1 : 0;
for(int i=s;i<n;i++){
A[cur]=i;
...
分类:
其他好文 时间:
2015-07-30 11:20:19
阅读次数:
126
这个题就是求出给的公式的结果。
只要知道异或运算满足交换律跟结合律就行了,之后就是化简公式。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2015-07-30 11:19:48
阅读次数:
143
//给出每个银行的钱数和被抓的概率,
//问在被抓概率小于p的情况下得到的钱数最多为多少
//直接以钱数为容量,以(1-pi)为为价值01背包就行
#include
#include
#include
using namespace std ;
const int maxn = 110 ;
const int maxm = maxn*maxn ;...
分类:
其他好文 时间:
2015-07-30 11:16:43
阅读次数:
102
#include
void print_subset(int n,int s)
{
for(int i=0;i<n;i++)
if(s&(1<<i)) printf("%d ",i);
printf("\n");
}
int main()
{
int n=3;
for(int i=0;i<(1<<n);i++)
print_subs...
分类:
其他好文 时间:
2015-07-30 11:15:40
阅读次数:
111
#include#include#include#define leftChild(i) (2*(i)+1)//交换void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}//堆下溯void...
分类:
编程语言 时间:
2015-07-30 11:11:08
阅读次数:
143