![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM算法
文章平均质量分 56
swust_wbh
这个作者很懒,什么都没留下…
展开
-
HDU4542-小明系列故事——未知剩余系(数论)
题目在http://acm.hdu.edu.cn/showproblem.php?pid=4542 当type=0的时候,就是求因子个数为k的最小数。我们知道,一个数可以这样分解: 其中p1,p2……,pr都是素数并且都不相同所以思路就是将k这个数进行分解,然后搜索出所有的情况,找到最小值即可。当type=1的时候,设我们求的数为n,那么这个数的因子个数就为n-k;求这样一原创 2013-04-12 15:16:10 · 679 阅读 · 0 评论 -
UESTC 1896(数论)
#include#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3f#define N 100005#de原创 2013-07-05 19:47:53 · 462 阅读 · 0 评论 -
HDU 4602
a[1]=1;a[2]=2;a[n]=2*a[n-1]+2^(n-3)=2^2*a[n-2]+2*2^(n-3)=2^3[n-3]+3*2^(n-3)=……=2^(n-2)a[2]+(n-2)*2^(n-3)=2^(n-1)+(n-2)*2^(n-3);#include#include#include#include#include#includeusing namespa原创 2013-08-18 19:53:53 · 405 阅读 · 0 评论 -
三角形的外心
void miniCircle(myPoint *p,myPoint& center,double& radius) { double Xmove=p[0].x; double Ymove=p[0].y; p[1].x=p[1].x-p[0].x; p[1].y=p[1].y-p[0].y; p[2].x=p[2]原创 2013-09-11 15:25:24 · 583 阅读 · 0 评论 -
HDU 4614(线段树)
成端更新+区间合并#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-10-08 22:26:04 · 524 阅读 · 0 评论 -
HDU 4610(数论+枚举状态)
若x=a0^p0*a1^p1*……*ai^pi(a0,a1……,ai是不同的素数)对于条件3:因子和=(a0^0+a0^1+……+a0^p0)*(a1^0+a1^1+……+a1^p1)*……如果是素数,显然质因子个位要为1,并且(a0^(p0+1)-1)/(a0-1)为素数对于条件4:设因子积为a0^q0*a1^q1*……*ai^qi(a0,a1……,ai是不同的素数)则有qi=(原创 2013-09-23 16:28:49 · 864 阅读 · 0 评论 -
HDU 4605(线段树)
恶心的1B...#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include #include #include #i原创 2013-09-24 00:28:29 · 446 阅读 · 0 评论 -
POJ 1182食物链(并查集)
以事件是否同时发生建立并查集,原创 2014-04-16 19:25:01 · 407 阅读 · 0 评论 -
POJ 1308(并查集判断树)
1.根节点只能有一个,即每个节点的祖宗都相同2.原创 2014-04-16 22:02:39 · 482 阅读 · 0 评论 -
ZOJ 3216(并查集)
祖先节点记录p最大之中,编号最小的节点的编号,离线处理query原创 2014-04-17 16:27:48 · 508 阅读 · 0 评论 -
POJ 1733并查集
重要性质:如果[x,y]1的个数为偶数,那么[0,x-1]和[0,y]的1的原创 2014-04-18 14:33:30 · 460 阅读 · 0 评论 -
POJ 1150(数论) 代码量极少的解法
先考虑N!最后一位非0的数的求法。我们构造一个数组table[4]={6,2,4,8},这个数组的特点就是table[(i+1)%4]=(table[i]*2)%10那么table[i]*2相当于是数组下标往右移动了一位(移动到最右边就从左边循环),table[i]*1 不变table[i]*2 右1位table[i]*3 右3位table[i]*4原创 2014-04-21 11:11:36 · 792 阅读 · 0 评论 -
POJ 1715(组合数学)
#include#include#include#include#include#includeusing namespace std;#define ll __int64#define N 15#define M 16ll a[27][27];ll n;ll cnt[N];ll maxn;void init(){ ll i,j; for(i=0;i<=16;原创 2014-04-21 19:32:01 · 490 阅读 · 0 评论 -
hdu 3555(数位dp)
#include#include#include#include#include#include#includeusing namespace std;#define N 25#define ll __int64ll dp[N][3];ll n;//dp[i][0] 含49的//dp[i][1] 不含49且最高位是9的//dp[i][2] 不含49且最高位不是9的原创 2014-04-22 11:15:11 · 410 阅读 · 0 评论 -
HDU 4507(数位dp)
#include#include#include#include#include#includeusing namespace std;#define MOD 1000000007#define ll __int64struct node{ ll cnt,sum,powsum;//个数,和,平方的和}dp[25][7][7];ll digit[25];ll p[25]原创 2014-04-28 19:11:21 · 564 阅读 · 0 评论 -
Codeforces 444C(线段树)
区间颜色不一致就更新到底,否则lazy标记#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define N 100005#define ll __int64struct node{ bool same; ll c原创 2014-07-07 01:24:50 · 1658 阅读 · 0 评论 -
UESTC 1895(分解质因数)
#include#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3f#define N 100005#de原创 2013-07-05 10:33:21 · 611 阅读 · 0 评论 -
UESTC 1723
#include#include#include#include#include#include#includeusing namespace std;#define lc l,m,index#define rc m+1,r,index#define ll long long#define inf 0x3f3f3f3f#define N 100000原创 2013-07-04 14:51:36 · 456 阅读 · 0 评论 -
HDU4541-Ten Googol(枚举)
由于数据只有(0-99)和1...10 googol,我们只要讲所有的单词写出来,统计出来即可。#include#include#include#includeusing namespace std;int num[][26]={{1,2,6,10},{0,4,5,9},{3,7,8,40,50,60},{11,12,20,30,80,90},{15,16,70},{13,14,原创 2013-04-12 15:22:26 · 630 阅读 · 0 评论 -
HDU4544 湫湫系列故事——消灭兔子(贪心+优先队列)
Problem Description湫湫减肥 越减越肥! 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏。 游戏规则很简单,用箭杀死免子即可。 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di(1 ),每种箭需要一定的QQ币购买。 假设每种箭只能使用一次,每只免子也只能被射一次,请计算要消灭原创 2013-04-12 14:54:05 · 511 阅读 · 0 评论 -
POJ1915-Knight Moves的启发式搜索(A*)算法
实际代价函数g(n)=31*step;估计代价函数h(n)=当前点到终点的曼哈顿距离*10#include#include#include#include#include#include#includeusing namespace std;#define inf 0x3f3f3f3f#define lc l,m,lc#define rc m+1,r,rc#defin原创 2013-05-02 23:00:01 · 610 阅读 · 1 评论 -
hdu 4549(矩阵优化递推,数论,二分快速幂)
设f(0)=1,f(1)=0,f(n)=f(n-1)+f(n-2)(n>=2)。那么有F(n)=a^f(n)*b^f(n+1)。根据费马小定理,1000000007是一个素数,那么所求可以化简为a^(f(n)%1000000006)*b^(f(n+1)%1000000006),那么就可以先求f(n)和f(n+1),再用二分快速幂求得结果。由于n比较大,求f(n)和f(n+1)要用矩原创 2013-05-21 14:03:17 · 1130 阅读 · 4 评论 -
西南科技大学第九届程序设计竞赛B题解题报告(线段树版)
题目链接http://acm.swust.edu.cn/oj/contest/58/908/题目大意:给你N个物品,每个物品有两个属性V1,V2,把它插入到k+1的位置(类似数组的插入),求它前一个物品的V1,不存在输出-1,和后一个物品的V2,不存在输出-1。解题思路,可以维护一颗线段树,求得最后物品的序列,题目中样例最终的序列就是4,1,5,2,3,。表示第1个物品最终在4这个位置,第原创 2013-05-22 00:14:14 · 1352 阅读 · 0 评论 -
hdu 4552(KMP+DP)
#include#include#includeusing namespace std;#define N 100005char str[N];int nex[N];int dp[N];int n;void getNext(char *p){ int j,k; nex[0]=-1; j=0; k=-1; int len=strlen(p);原创 2013-05-26 21:50:42 · 463 阅读 · 0 评论 -
hdu 4553(线段树成端更新,区间合并)
和poj 3667 Hotel差不多,三种操作。节点信息有struct node{int ds;//基友标记int ns;//女神标记int st;//学习标记int most,lmost,rmost;//最长空时间,最左空时间,最右空时间int tmost,tlmost,trmost;//女神专用最长空时间,最左空时间,最右空时间}seg[N1.DS,原创 2013-05-27 15:50:52 · 647 阅读 · 0 评论 -
hdu 3308(单点更新,区间合并)
没什么好说的,赤裸裸的线段树...#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define N 100005struct node{ int most; int left,right;原创 2013-05-14 19:22:37 · 393 阅读 · 0 评论 -
hdu 3954(比较特别的成端更新)
#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define inf 0x7f7f7f7f#define N 100005struct node{ int e;//获得经验标记 int maxexp;原创 2013-05-28 19:39:02 · 462 阅读 · 0 评论 -
HDU4565(数学)
构造An=(a+sqrt(b)^n+(a-sqrt(b))^n,An为整数。由于b的范围,求An即可。An*((a+sqrt(b))+(a-sqrt(b)))=...=2*a*An=...=A(n+1)+(a*a-b)*A(n-1),得到递推关系A(n+1)=2*a*An+(b-a*a)*A(n-1)。构造矩阵temp[2][2]={2*a,-a*a+b,1,0}.使用矩阵快速原创 2013-06-18 16:18:26 · 440 阅读 · 0 评论 -
ZOJ 4825(二分匹配)
#include #include int ans;int result[205]; //记录V2中的点匹配的点的编号bool state [205]; //记录V2中的每个点是否被搜索过bool data[205][205];//邻接矩阵 true代表有边相连char map[205][205];int n;void init(){ int t1,t2; memset(da原创 2013-07-01 13:34:34 · 459 阅读 · 0 评论 -
hdu4556(欧拉函数)
#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3f#define N 1000005ll n;ll ph原创 2013-07-01 16:08:32 · 531 阅读 · 0 评论 -
fzu1649(大数素数判定)
#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3fll n,a;bool prime(ll num){原创 2013-07-01 15:25:55 · 752 阅读 · 0 评论 -
UESTC 1552(欧拉函数)
#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3f#define N 10005int n,m,ans;原创 2013-07-01 16:58:47 · 555 阅读 · 0 评论 -
UESTC1720(容斥原理)
#include#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define ll long long#define inf 0x3f3f3f3f#define N 1000005#d原创 2013-07-03 20:56:34 · 465 阅读 · 0 评论 -
HDU 4251 划分树
#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define lc l,m,index<<1#define rc m+1,r,index<<1|1#define N 100005#define ll long long原创 2014-08-04 17:00:06 · 464 阅读 · 0 评论