自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (4)
  • 收藏
  • 关注

原创 hdu5254

//给一个n*m的棋盘,//如果是//01//10//的情况,可以将这两个0变成1//给出棋盘中哪些位置是1,//问这棋盘最后有多少1//bfs找每一个1的斜对角是否为1//如果找到一对斜对角为1的数//斜对角对应的旁边的0变为1//对于每一个新生的1其旁边的4个点的标记数组改为0#include#include#include#includ

2015-05-31 22:05:57 622

原创 hdu5241Friends 大数乘法

//可以知道各种语言相互独立//故而知道是2的乘方//由样例可知是32的n次方//剩下的是一个大数乘法#include#include#includeusing namespace std ;const int maxn = 30050 ;const int mod = 100 ;int num[maxn] ;int len ;int solve(i

2015-05-31 13:57:11 1236

原创 hdu5246超级赛亚ACMer 二分

//给一个序列,ACMer的初始值为0-m任意一个//每次和序列值ai相等就acmer的值就为ai+k//k的值是每次比较后减-//问acmer最后得到的值能否大于所有值//从小于m的最小的值开始,用二分找小于m+k最小的那一个,直到大于最大值#include#include#include#includeusing namespace std ;const

2015-05-30 22:49:45 630

原创 hdu5248 二分

//有一个序列A , 改变序列的元素使其成为单调递增的序列B//求最小的max(|Ai-Bi|)(1//枚举最大值x,用二分查找#include#include#includeusing namespace std ;const int maxn = 100010 ;int a[maxn] ;int b[maxn] ;int n ;int judge(i

2015-05-30 22:46:39 938

原创 hdu2824 The Euler function 筛选法求欧拉函数模板题

//求a , b范围内的所有的欧拉函数//筛选法求欧拉函数模板题#include#include#includeusing namespace std ;const int maxn = 3000010 ;typedef __int64 ll ;int e[maxn] ;int a ,  b ;void Euler(){    int i,j; 

2015-05-29 18:39:24 681

原创 hdu4002 Find the maximum 欧拉函数

//求小于N且n/phi(x)最大的n如果有多个,输出最小的//phi(x) = x*(1-1/p1)*(1-1/p2)*(1-1/p3)....//要使得x/phi(x) 最大,即使得(1-1/p1)*(1-1/p2)*(1-1/p3)....最小//又p1, p2 , p3 , ....//全为素数因子,所以可以对枚举所有素数因子乘积,//打表后找小于等于n的数#inc

2015-05-29 16:24:37 743

原创 hdu3501 Calculation 2 欧拉函数

//求小于n且和n不互质的所有数之和//若gcd(n , i) == 1 那么 gcd(n , n-i) == 1//可以用反证法//设gcd(n , n-i) != 1;//那么可以有 n = k1*a//n - i = k2*a ;//i = (k1-k2)*a //gcd(n ,i) != 1//那么 ans = n*(n-1)/2 - n*euler(n)/

2015-05-28 22:11:55 574

原创 hdu2588GCD

//给出n , m 求出小于n且与n的最大公因数大于m的个数//枚举所有n的大于m的因数i为最大公因数//那么就只需要求n/i的欧拉函数就行#include#include#includeusing namespace std ;const int maxn = 100010 ;typedef __int64 ll ;ll f[maxn] ;ll get_f

2015-05-28 20:53:07 611

原创 hdu1286找新朋友 欧拉函数模板题

#include#include#includeusing namespace std ;int Euler(int n){    int rea = n ;    for(int i = 2;i*i     {        if(n%i == 0)        rea -= rea/i ;        while(n%i == 0)     

2015-05-28 19:22:21 629

原创 poj2796Feel Good 单调栈

//一个长度为n的序列,对于一个区间中的value为这个区间的最小值乘上这个区间的所有数的和//这就是找每一个点,找以其为最小值的区间//显然直接暴力法找必然超时//可以开一个单调递增栈,对于每一个新元素a[i]//当前值小于等于栈顶元素,表示以栈顶元素为最小值的区间的右端是i//栈顶元素a[j]出栈 , 由于是单调递增栈,新的栈顶元素a[k]必然小于a[j],故需要更新新的栈

2015-05-26 20:53:42 4589

原创 Codeforces Round #172 (Div. 1) BMaximum Xor Secondary 单调栈

//给一个长度为N的个不相同的序列,找出所有区间中最大值和第二大数的异或值最大的值//对于所有区间只需要找其最大值和第二大数,所以对于很多区间的结果是重复的//对于每一个数,它起作用的区间只有在其前面最多只有一个数是大于它的//可以用一个单调递减栈来做,对于每一个新的数a[i],在它前面第一个大于它的数a[j]//和第二个大于它的数之间的数到a[i]的区间的数的最大值和第二大数为a

2015-05-26 19:12:26 1132

原创 zoj 3870 Team Formation 位运算

//给n个数,找有多少队的两个数的异或值大于它们自己//对于两个数中小的那个数的最高位在大的数中该位为0//那么两个数异或所得的数比两个数大//否则,这个数比大的数小#include#include#include#includeusing namespace std ;const int maxn = 100010;long long  map[40];

2015-05-26 17:18:46 753

原创 hdu4939Stupid Tower Defense dp

//给你三个塔//红塔:敌人过红塔时有每秒x伤害//绿塔:敌人过绿塔后有每秒y伤害//蓝塔:敌人过蓝塔后过每一格时间增加z//问敌人过n个格造成最大伤害//很容易想到红塔必然放最后//所以对于每一格的选择只有蓝塔和红塔//用dp[i][j]表示对于前i格选了j个蓝塔//dp[i][j] = max(dp[i-1][j] + (i-1-j)*y*(t+j*z) , d

2015-05-22 19:19:42 940

原创 hdu4939 Stupid Tower Defense stl map

#include#include#include#include#includeusing namespace std ;const int maxn = 100010 ;int vis[maxn];map map_r ;map map_c ;map , int> ma ;int main(){    //freopen("in.txt","r"

2015-05-21 20:31:15 444

原创 hdu4952Number Transformation

// 给你一个数,有k次操作,第i+1次操作得到的数,得到最小的大于第i次操作的数是i+1的倍数//将第i个数拆分为i*x, 那么(i+1)*x' >= i*x//得到x' >= x - x/(i+1) //由式子可得到当x小于(i+1)后不变//复杂度为x的开方#include#include#includeusing namespace std ;typed

2015-05-20 20:47:22 654

原创 hdu4961

//预处理所有数的因数//从前到后扫一遍,记录所有因子的最后一个位置,找出所有b[i]//然后从后到前扫一遍,找出所有c[i]#include#include#include#include#includeusing namespace std ;const int maxn = 100010 ;typedef __int64 ll ;vectorvec

2015-05-19 20:25:56 601

原创 hdu4970

//和hdu1556差不多,不过hdu1556时间是3s , 可以用线段树过//开一个n的数组a[n],对于每一个tower变换l , r , d//a[l]+=d , a[r+1]-=d;//从1到n扫一遍,a[i] += a[i-1]//那么a[i]里存的·就是第i个位置受到的伤害#include#include#includeusing namespace s

2015-05-19 17:33:48 674

原创 hdu5229 ZCC loves strings 博弈

//很容易可以判断当两个字符串相等或者长度相加为奇数时第一个赢//用map存入每一个字符串标号,对应找出每一个字符串有多少个以及其长度是奇数还是偶数//则很容易求得答案#include#include#include#includeusing namespace std ;const int maxn = 200010 ;typedef __int64 ll ;

2015-05-17 13:41:34 673

原创 codeforce266D 最短路

//给你一个无向连通图,找一个点使得它到这个图最短路中最大的距离最短//可以遍历所有边,对于每条边有的连个顶点u,v//可以通过这两个点将这个图分左边,u-v边,右边三个部分//但是哪些点分在左边,哪些点分在右边,如果暴力所有情况显然会超时//用一个二维数组存入所有点到u,v两个点的最短路//将其排序,对于a[i].u >=a[j].u ,a[i].v >= a[j].v 的点

2015-05-16 14:56:46 722

原创 codeforce543B

//当s1,t1与s2,t2两条线路没有交点时// ans = min(ans , m - dis[s1][t1] - dis[s2][t2])//当s1,t1与s2,t2两条线路有交点时,则它们的交点必定是连续的//设,x1,x2为s1,t1最短路和s2,t2最短路的交点//那么x1,x2,必然在这两条最短路上,那么dis[x1][x2]也在这条线上//枚举相交线段i,j,找

2015-05-15 21:56:10 713

原创 codeforces 366D 并查集

//给你一个无向图,图的每条边有一个范围,所选数x要在这个范围能过这条边//求x最大范围//枚举所有的边的右边,对于所选右边找左边最小值,用并查集判断是否可行#include#include#include#includeusing namespace std ;const int maxn = 1010;int F[maxn] ;int find(int

2015-05-14 21:16:21 672

原创 poj2663 Tri Tiling dp 水题

用2个组合为3种情况,4,6,8......为2种情况#include#include#includeusing namespace std ;const int maxn = 40 ;typedef long long ll ;ll a[maxn] ;ll dp[maxn] ;int main(){   // freopen("in.txt","r",

2015-05-12 22:48:51 559

原创 hdu1024Max Sum Plus Plus dp

//dp[i][j] 表示前i个数中有j段,得到的最大值//dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1]) + a[i]//注意dp[i-1][j-1]为前i-1个点中不含i-1这个点得到的最优解//dp[i-1][j]中必须要有i-1中这个点#include#include#includeusing namespace std ;

2015-05-12 21:31:57 600

原创 hdu 1025 dp+二分求最长递增子序列

//dp[i],长度为i的递增子序列的最后一位的最小值//对于这种处理得到的dp[i]必然是递增的//对于第i个数a[i],只需要找到最小的大于它的位置pos,//由于是最小的大于a[i] ,pos - 1 的值必然小于a[i]//那么dp[pos] = a[i] ;#include#include#includeusing namespace std ;con

2015-05-12 16:33:02 550

原创 codeforce198B 最短路

//对于该点能到达的下一点用一条路径表示//然后用spfa求出其最小值//在更新最小点时判断一下他去这一个点时会不会淹死#include#include#include#includeusing namespace std ;const int inf = 0x3f3f3f3f;const int maxn = 100010 ;const int mod =

2015-05-11 22:51:45 609

原创 Codeforces Round #170 (Div. 1)A

//用并查集记录有几个集合,然后将总的集合数剪一即为所求答案//注意一下全0就行#include#include#includeusing namespace std ;const int maxn = 110 ;int map[maxn][maxn] ;int F[maxn] ;int n , m ;int find(int x){    if(F

2015-05-11 17:13:34 602

原创 Codeforces Round #168 (Div. 1)B 树形dp

//给一棵树,每次操作可以将包括顶点1的连通子集的所有点的节点加1或减1//问最少几次操作使得这棵树的所有顶点的值都为0//以1为根节点建树//将加和减分开考虑,用up[u],down[u]表示以u为跟节点的子树中需要加的操作//最大为up[u] ,需要减的操作最大为down[u] //其余的加和减的操作则可以在处理这两个操作时一起覆盖//在将u的子数全都处理完后u点的值由

2015-05-10 21:58:59 442

原创 poj1061 青蛙的约会 扩展欧几里得

//(x + km)%l == (y + kn)%l//s*l + k(m - n) = y - x//用扩展欧几里得求出k//注意一下k需要为最小正数#include#include#includeusing namespace std ;typedef __int64 ll ;ll exgcd(ll a , ll b , ll &x , ll &y){

2015-05-09 16:43:18 647

原创 hdu1576 A/B 扩展欧几里得求逆元

//(a/b)%c ==> a%c = (b*k) %c;// k = (a*(b_1))%c ,b_1为b的逆元#include#include#includeusing namespace std ;const int mod = 9973 ;typedef __int64 ll;int exgcd(int a ,int b , ll &x ,ll &y){

2015-05-09 14:59:14 755

原创 Codeforces Round #167 (Div. 1)B

//对x从小到大排序//开一个数组equal,存入一段相同的x的值//那么ans = equal[1]! * equal[2]! ....//然后在除以没一段相同x中的y相同的数的阶乘//由题意可知,开(xi == xj),(yi == yj)的最多只有两个//可以记录下(xi == xj) ,(yi == yj)的对数,//在计算的时候可以对偶数除2就行#includ

2015-05-08 21:43:21 514

原创 Codeforces Round #162 (Div. 1) C Choosing Balls dp

//dp[i] 表示以颜色为i结尾的最大值//dp[i] = max(dp[i] , dp[i] + a*v[i] ,other_max + b*v[i]) ;//为除颜色i以外的其它颜色的最大值#include#include#includeusing namespace std ;const int maxn = 100010 ;const __int64 in

2015-05-08 17:29:00 669

原创 Codeforces Round #162 (Div. 1) B dp

//存入所有数的素数因数//若两个数不互质,那么他们之间必然有素数因数//dp[i][0]表示第i个数不选前i个数中能得到的最长序列//dp[i][1]表示选了第i个数//dp[i][0] = max(dp[i-1][0] , dp[i-1][1])//dp[i][1] = max(dp[pos][1] + 1 ,dp[i][1] );//pos位第i个数的质数因子出现的最

2015-05-07 20:24:05 445

原创 Codeforces Round #157 (Div. 1)B 数位dp

//枚举有几个(7或4),用数位dp的记忆化搜索找有i个(7或4)的数又多少个//暴力搜索在第i个中选几个#include#include#includeusing namespace std ;const int mod = 1e9 + 7;int dp[20][20];//第i位有 j个数(7或者4)int bit[20] ;int temp[20];i

2015-05-05 20:19:14 627

原创 hdu2089 数位dp水题

#include#include#includeusing namespace std ;const int maxn = 10 ;int dp[maxn][3];//0什么都没有,1,有6,2有62或4int bit[maxn] ;int dfs(int pos , int flag ,int lim){    if(pos == 0)    return

2015-05-04 17:20:25 631

原创 zoj3870Team Formation

//将其从小到大排序//对于每一个数,其0点位为其前面数的最高位,那么它们的异或一定大于它们两个的值#include#include#include#includeusing namespace std ;const int maxn = 100010;long long  map[40];int a[maxn] ;long long solve(int m

2015-05-04 16:09:18 595

原创 hdu4507吉哥系列故事——恨7不成妻 数位dp

//(a1 + a2 + a3 + a4)^2 + (b1 + b2 + b3 + b4)^2//=a1^2 + (a2+a3+a4)^2 + 2*a1*(a2+a3+a4) + b1^2 + 2*b1*(b1+b2+b3)//每次dfs返回三个数,a,b,c//a表示个数,b表示所有数的和,c表示所有数的平方和//那么更新的ans.a += a;//ans.b +=(b +

2015-05-04 16:02:54 666

原创 hdu3555Bomb 数位dp

#include#include#includeusing namespace std ;const int maxn = 20 ;int bit[maxn] ;__int64 dp[maxn][maxn][2] ;//dp[i][j][1]第i位数为j时内有49的数量,0位不含void init(){    memset(dp , 0 ,sizeof(dp))

2015-05-02 16:48:13 559

原创 hdu 3555 数位dp水题 记忆化搜索做法

#include#include#includeusing namespace std ;const int maxn = 20;__int64 dp[maxn][3] ;//dp[i][flag] ,flag = 2,表示已经有49,flag == 1,表示没有49,这一位是4,int bit[maxn] ;    //flag == 0, 什么都没有__int64

2015-05-02 15:20:22 779

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

2015-10-30

Python学习手册

Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择

2015-09-11

python基础教程(第二版)

python基础教程中文高清pdf【第二版】

2015-09-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除