上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 71 下一页
摘要: 1628题意不太好理解 求横黑条 和竖黑条共有多少个 注意1*1的情况 如果横向纵向都是1*1 算为一个 否则不算用了下vector 枚举找下 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 30010 9 vectorp[N];10 vectorq[N];11 int o1[N],o2[N];12 int main()13 {14 int i,j,m,n,k,x,y,t,sum=0;15 scanf("%d%d%d",& 阅读全文
posted @ 2013-10-01 15:00 _雨 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 1523这题应该说有一些DP的思想吧 dp[i][j]表示以i为结尾第j个数的个数 k单调下降 直接求的话肯定超时 然后用树状数组来进行维护求k-1次树状数组 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define lowbit(x) x&(-x) 8 #define N 20010 9 #define LL long long10 #define mod 100000000011 int dp[N][12],n,a[N],po[N],sum[N][12];12 vo 阅读全文
posted @ 2013-10-01 12:00 _雨 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 1890将树的每个节点都转换为区间的形式 然后再利用线段树对结点更新 这题用了延迟标记 相对普通线段树 多了dfs的转换 把所要求的转换为某段区间RE了N次 最后没办法了 记得有个加栈的语句 拿来加上A了。。 1 #pragma comment(linker, "/STACK:102400000,102400000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 50010 10 #define LL long lon 阅读全文
posted @ 2013-10-01 11:51 _雨 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 1350这题没什么 就考一下map的用法吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 mapq; 8 int f[110]; 9 char s1[110][44],ss[45];10 int o[110],p[110];11 int main()12 {13 int i,j,n,k,t;14 scanf("%d",&n);15 for(i = 1; i (n-p[k+1]-t))43 printf("NO\n");44 ... 阅读全文
posted @ 2013-09-30 16:42 _雨 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1521根据区间和 来确定第k个数在哪 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 int s[N>1;21 build(l,m,w>1;34 if(k=r)43 {44 return s[w];45 }46 int m = (l+r)>>1,re=0;47 if(am)50 re+=getsum(a,b,m+1,r,w<<1|1);51 return re;5... 阅读全文
posted @ 2013-09-27 18:09 _雨 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 1003看篇国家论文《从《parity》的解法谈程序优化》对于区间i,j 如果用sum[i],sum[j]来表示到i的1的个数的奇偶性 那么仔细想下 sum[i-1] 若与区间i,j相等 则sum[j]为偶 否则为奇那么就可以把性质相同的合并在一个集合里 性质相同为朋友 不同为敌人 可以把一个端点分成两个 一个是自己一个是他的敌人 当与别的点合并时根据朋友的朋友是朋友 朋友的敌人是敌人 敌人的敌人 是朋友 这些原则 来进行合并 ,并判断是不是有矛盾端点比较大 用map离散化下 map相对其它离散化方法操作还是比较简单点 1 #include 2 #include 3 #include ... 阅读全文
posted @ 2013-09-27 16:05 _雨 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 1470最简单的三维树状数组 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define lowbit(x) x&(-x) 8 int re[130][130][130],n; 9 int getsum(int x,int y,int z)10 {11 int s = 0,i,j,g;12 for(i = x; i >= 1 ; i -= lowbit(i))13 for(j = y ; j>= 1; j -= lowbit(j))14 ... 阅读全文
posted @ 2013-09-25 22:23 _雨 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1471先学习了下tarjan算法的LCA 离线算法 它是先知道询问的结点对 在遍历的时候就已经算出来了看篇图解 讲的很清楚 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 struct node 9 {10 int u,v,w,next;11 }ed[N<<2];12 int head[N],t,n,q,dis[N];13 int vis[N],ans[N],qhead[N<<2];14 int father[N],x[ 阅读全文
posted @ 2013-09-25 19:43 _雨 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1494之前记得数据结构试卷上有这种题 就是判断某一出栈顺序 是不是满足以1.2。。。n为入栈顺序a1,a2,a3..an;对于任意相邻a[i],a[i+1] 如果a[i]>a[i+1]+1 那么它两之间的数肯定已经在前面出栈过了 不然中间的不出栈 a[i+1]不可能出来这一个条件就可以判断了 用数状数组求下和 就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define lowbit(x) x&(-x) 9 int f[ 阅读全文
posted @ 2013-09-25 10:54 _雨 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 1220又一神题啊 卡内存可以卡到这种地步 省得不行了开两个【N]数组 一个来记录前驱 一个存数 记录前驱的用unsigned short类型 最大可达65535 不过可以标记一下是否比这个数大 比它大的话就减去 求的时候再加上 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 unsigned short p2[N]; 9 int p1[N];10 int stack[1010];11 int main()12 {13 int n,a,... 阅读全文
posted @ 2013-09-24 19:46 _雨 阅读(202) 评论(0) 推荐(0) 编辑
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 71 下一页