自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qqspeed

希望CCNU的ACM越来越好,再见!

  • 博客(27)
  • 问答 (1)
  • 收藏
  • 关注

原创 hdu 4267(线段树)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4267由于K的范围只有10,所以每个数对k取余总的情况是55种,每个结点开个大小的为55的数组,用来存增加的和因为(i-a)%k==0  所以i%k==a%k#include#include#include#includeusing namespace std;

2013-08-29 19:58:41 845

原创 Hdu 4599

题目对于 F(N)=1+6*F(N-1)   =>   F(N)+1/5=6(F(N-1)+1/5);  =>  F(1)=1   =>    F(N) = (6^N)/5-1/5;对于 H(N)=6*F(N);对于 G(N)=6*N;我也不知道这样为什么是正确,好像正规的推导是倒着来,  F(N)=1/6 *(1+ F(N-1))+5 / 6 *(1+F(1)),F(N)

2013-08-28 16:58:39 1340

原创 Codeforces Round #197 (Div. 2)

A:把式子中的数字小的提到前面来#include#include#include#includeusing namespace std;char s[110];int main(){ while(scanf("%s",s)!=EOF) { if(strlen(s)==1) printf("%s\n",s); else { int a[110]; i

2013-08-27 19:27:41 983 3

原创 hdu 4419 (线段树 + 扫描线 + 离散化)

题目和一般的求面积的一样,只不过我的想法比较麻烦,求了好多次面积#include#include#include#includeusing namespace std;inline int input(){ int ret=0; bool IsN=0; char c; c=getchar(); whi

2013-08-25 09:11:14 988

原创 九度oj 项目安排

先按结束时间排序,然后对于任务i,在[1,i-1]内二分找出结束时间#include#include#includeusing namespace std;struct node{ int s,t,w;}x[10000+10];bool cmp(node i,node j){ return i.t<j.t;}int B_search(int s,i

2013-08-20 10:53:52 1044

原创 九度oj 1526 1527 1528 1529 1530 1531 1532

题目 1526==   水水的..并查集 1527==   地大比赛我们见过1528 ==  某种算法模板题1529 ==    水水的...1530 ==    水水的...因为最多只有26个字母,所以可以暴力1531 ==   水水的...多重背包1532 ==   水水的,每个点必须拿,所以可以直接dfs...O(2^16);1526

2013-08-18 22:35:51 1211

原创 hdu 2655 (求区间K小数)

题目划分树吧,在这学得记没排序的数组为UA(unsorted array,即原数组),排序数组SA(sorted array)划分树的建树过程:将区间为[L,R]的UA,按SA[MID]来划分,如果比SA[MID]值小,则分到左子树,比其大,则分到右子树,并把在某个位置小于等于SA[MID]的个数记录下来,直到区间长度为1为止。 Query函

2013-08-18 20:35:27 1371 2

原创 hdu 4638 (线段树)

题目找出某一区间  连续的数有多少段(类似于hdu3333,查找某一区间不同数字的和,只是4638,对于一个数,最多有2个相邻的,并且在输入中可以知道他们的位置,很明显,相邻的数算一组,我们只能+1,所以从第一个数开始,每次对于a[i],在i节点+1,再判断a[i-1]和a[i+1]在前面出现没有,如果出现了就要把它们所在节点的计数-1,在这个过程中可以顺便计算出m个查询的值)

2013-08-17 21:20:46 761

原创 hdu 4614 (线段树)

题目两种操作:1 x y: 从x开始放,输出能放的起始位置,输出放的最后位置,不一定y朵花都有位置放!如果一朵也不能放,就输出....2 x y:  清空操作,[x,y];用1表示此花瓶是空的,那我们就是要查找某区间的和,清空操作就是区间全部变为1!至于放花操作,我们首先需要找出x开始的第一个空花瓶,这个可以利用二分,                       

2013-08-17 20:15:35 890

原创 Codeforces Round #196 (Div. 2) A,B,C

A.在m个数中选n个数,使n个数的( 最大值-最小值  ) 最小,求出这个差值最小值B.把电影横着放和竖着放,看  a/b   与  c/d决定C.先考虑,每次答对k-1道题后,就打错了,这样可以得分  sum=(k-1)*(n/k)+n%k;如果sum>=m  显然输出(m%mod)否则,前面的(m-sum)个第k题要答对这样剩下的就是

2013-08-17 11:14:13 1297 3

原创 Poj 3233

题目类似于等比数列求和,用二分.一开始取余符号多用了几次,直接TLE了==n%2==0: F[n]=F[n/2] (1+a[n/2]);n%2==1: F[n]=F[n-1]+a[n];#include#include#includeusing namespace std;int n,mod,k;struct Matrix{ int

2013-08-16 18:30:24 1010

原创 hdu 4681

题目枚举A,B中的每一个子序列含C的子串,长度尽量小,前后分别LCS。#include#include#include#includeusing namespace std;typedef pairii;short int l[1001][1001],r[1001][1001],La,Lb,Lc;vectorla;vectorlb;int tag=0;char

2013-08-15 22:18:29 837

原创 Hdu 3333 (线段树)

题目从别人那学得一种线段树做法,查询某一区间不同数字的和先按查询的右坐标升序排列。把每个数放进线段树的时候,先判断再之前他有没有在线段树,如果在,则删除它,并把他的位置更新到当前点#include#include#include#includeusing namespace std;typedef __int64 ll;#define N 300010#d

2013-08-14 20:15:34 1573 2

原创 hdu 2065 (AC自动机)

题目注意到主串中有用的只有大写字母部分,所以next的大小只需26;注意查找时,每次遇到非大写字母,记得把指针指向root#include#include#include#includeusing namespace std;int n;char s[1001][51];char web[2000010];int num[1001];struct node{

2013-08-14 19:57:49 1076

原创 Hdu 4578 (线段树)

题目链接题目大意:n个数(初始为0)m个操作,操作类型有4中,操作1把区间的每个数+a,操作2把区间的每个数*a.,操作3把区间的每个数=a,操作4,查询区间每个数p次方的和(1这个跟hdu3397有点类似。更新操作我还是分成两类(1)=  (2)*和+。 查询操作:p只有三种可能,所以可以直接把次方,2次方,3次方的值存进去,一起更新对于=更新操作:如果之前有*和+的

2013-08-12 20:02:08 2520 1

转载 最大连续积

Max[i]=max(a[i],max(Max[i-1]*a[i],Min[i-1]*a[i]));Min[i]=min(a[i],min(Max[i-1]*a[i],Min[i-1]*a[i]));

2013-08-12 13:28:09 63250

原创 HDU 4576

题目下午做的时候,一直TLE,后来一个学长卡着时间过了,看了下,发现        for(int i=1;i        {            int w=input();            for(int j=1;j            {                int s=(j+w)%n;                double

2013-08-10 19:10:10 905

原创 Poj 1823 Hotel (线段树 区间合并 成段更新)

题目注意更新的范围是[i,M+i-1];#include#include#includeusing namespace std;#define N 16100inline int input(){ int ret=0; char c; c=getchar(); while(c'9') { c=getchar();

2013-08-09 19:44:34 857 1

原创 LA 4670 Dominating Patterns (AC自动机)

题目AC自动机学习,沿着父亲的失败指针找失败指针#include#include#include#includeusing namespace std;int n;char word[155][75];char s[1000000+10];int vis[155];struct node{ node* fail; node* next[

2013-08-09 12:56:08 769

原创 Hdu 1043 Eight

题目前段时间试过A*,用map标记,老是TLE,估计是A*写挫了后来换成双广;康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!其中,a[i]为整数,并且0

2013-08-07 20:57:44 902

原创 hdu 2483

题目首先可以预处理出  map[1~i][1~j]里面的0和1的个数,还可以预处理出map[i][j]==1时,上下左右的连续的1的个数,然后枚举每个点(i,j),把它作为正方形的右下角,再枚举它的左和上的连续的1的个数,这样可以得到正方形的左上角的坐标,这时就可以计算正方形里面的0,1个数是否满足关系#include#include#include#includ

2013-08-07 11:42:29 786

原创 hdu 4308

题目BFS #include#include#include#includeusing namespace std;#define LL long longstruct node{ int x,y; LL m;};bool vis[5001][5001];int r,c;LL m;char map[5001][5001];int

2013-08-05 18:35:14 724

原创 SLIKAR (BFS)

Problem Description在一块 R×C 的矩形土地上,某天发起了洪水。洪水即将把整片土地淹没,于是 Beaver 不得不用最快的速度赶回老家,因为那里地势高,可以安全地避难。 在地图上,用“.”表示空地,用“D”表示老家的位置,用“S”表示Beaver 当前的位置,用“X”表示巨大的岩石,用“*”表示被洪水淹没的地区。每一个单位时间,Beaver 可以向上下左右四个方向移动一

2013-08-05 13:14:22 954

原创 Hdu 3255 Farming

题目把价值等价成高,从价格高的开始枚举假如i的价格>j的价格,先把价格为i的矩形更新到线段树中,然后价格为i的总价值就是面积(S1)*价格i然后对于价格j,把i和j价格的矩形都更新到线段树中,然后此时属于j的总价值就是现在的(总面积(S2)-S1)*j;但关键是   WA 了求高手帮忙==#include#inclu

2013-08-03 15:50:08 912

原创 Poj 3087 (bfs)

题目bfs水题,题目要求s12的最下端一定是s2的下端,上端一定是s1的上端。当把s12拆成s1和s2时,下面c个是s1,上面c个是s2;#include#include#include#include#include#include#includeusing namespace std;struct node{ string s1;

2013-08-02 17:09:14 753

原创 POJ 3414 Pots (BFS)

题目一开始开得vis数组是100*100,WA了,仔细看代码,实在不知道哪儿WA了,后来试了下1 100 100,就发现出问题,尼玛,改成110*110就过了#include#include#include#includeusing namespace std;struct node{ int a,b,t; int op,pre;}q[200

2013-08-02 14:06:30 719

原创 HDU 2514 DFS

题目#include#include#include#includeusing namespace std;int map[10][10];inline void init(){ memset(map,0,sizeof(map)); map[1][2]=map[1][3]=map[1][4]=1; map[2][1]=map[2][3]=map[

2013-08-02 12:27:15 833

空空如也

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

TA关注的人

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