暴力
vvv_557
这个作者很懒,什么都没留下…
展开
-
HDU 5812 Distance 暴力+素数打表
/* I insert x; D delect x; Q query min(d(x,y); d(x,y) =x 乘或除一个素数 变成y的最小次数; d(x,y) =ans[x/gcd(x,y)]+ans[y/gcd(x,y]; ans[i] i的素因子数; 保留之前插入 y时,每一个y因子对应的ans[y/i]值 ->因子,ans值较小, 作为查询原创 2017-07-16 21:21:23 · 225 阅读 · 0 评论 -
hdu 6058 Kanade's sum
/* 计算每个数的贡献, 找到左边k-1个大于 pi的,右边 大于pi 的, 所有有贡献的区间都在这个范围内。 用链表维护位置,结束后删除pi, 从小到大 枚举,可以保证链表中的数 >=pi; */ #include#include#includeusing namespace std;typedef long long ll;const int mod =1e9+7;原创 2017-08-02 13:39:53 · 286 阅读 · 0 评论 -
Hdu6092 Rikka with Subset(2017多校第5场) 逆推背包
/* 1 1 1 3 5 5 1 1 3 1 两个序列的 B序列相同。 那我们可以选择计算 递增的序列(字典序最小) 每次求出一个数的个数 后,删去这个数可以组成的集合 之和对于的个数 那从0~m 扫描, 第一个遇到不是0的就是 单个元素 集合对应和 的个数 */#include#include#include#include#include#原创 2017-08-09 22:18:11 · 199 阅读 · 0 评论 -
hdu 6069 Counting Divisors
/* 1~1e6的 素数个数 约 等于 1e6/ lg1e6 =78498 , 直接对区间内每个数作因数 分析会超时, 那可以枚举 质因数,再类似于 筛法,累计每个数 当前的因数和 */ #include#include#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)using namespace std原创 2017-08-03 17:04:38 · 240 阅读 · 0 评论 -
Hdu 6034 细心 数组少开
/* 细心:马虎,数据少开了10倍,T了4小时- - 题意;给你一堆a-z的字符串,a-z的权值自己定,要求最后所有字符串的总和最大,按26进制展开。 很显然要统计每个字母的出现次数 —>与位置有关, 那利用数组储存次数,根据关系,表现成26进制。 再利用队列优化储存数组,提升速度 249ms. */#include #include #include原创 2017-07-26 21:48:56 · 363 阅读 · 0 评论 -
HDU 5936 Difference 折半枚举,暴力
/* 观察函数显然到1e10左右为负 先处理一半 再根据x 匹配另一半。*/#includeusing namespace std;#define rep(i,a,b) for(int i=(a);i<=(b);++ i)typedef long long ll;const int N = 1e5+1;multiset s[8];multiset s9;ll num[原创 2017-11-03 20:49:06 · 273 阅读 · 0 评论