上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页
摘要: 题意:有一群小朋友围成一个环,编号1,2,3…N。每个人手上握着一个非0的数字,首先第K个人出列,然后看他手上的数字,假设为m,则从下一个开始第m个人出列,一直如此。并设i为小于等于N的最大反素数,问第i个出列的人得编号,i的约数个数。(设g(i)为i的约数的个数,若任意j#include #include using namespace std;#define maxn 100005int maxsub[maxn>1; build(l, m, rt>1; if (m >= target) update(target, val, l, m, rt<<1); els 阅读全文
posted @ 2013-07-25 17:17 某某。 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 问题描述:给定一个环形序列,进行在线操作,每次修改一个元素,输出环上的最大连续子列的和,但不能是完全序列。算法:把环从一个地方,切断拉成一条直线,用线段树记录当前区间的非空最大子列和当前区间的非空最小子列。动态规划解决过静态的序列最大连续子序列和问题,时间复杂度可以达到 n(环形序列可能复杂度更高)。但是这里涉及到动态更新,更新频度很大,如果计算子序列和复杂度仍然是n,就会非常耗时。如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列;否则,答案是:max{根结点的非空最大子列, 环上数的总和-根结点的非空最小子列}一开始想到,如果将环从一点断开,那么最大和如果包括断点的最后一个 阅读全文
posted @ 2013-07-25 17:14 某某。 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目连接:题意:要求设计这样一个数据结构,支持下列操作1.add(x,y,a).对二维数组的第x行,第y列加上a.2.sum(l,b,r,t).求所有满足l 2 #include 3 #include 4 #include 5 #define loop(s,i,n) for(i = s;i 0;i -= lowbit(i))25 {26 for(j = b;j > 0;j -= lowbit(j))27 res+=c[i][j];28 }29 return res;30 }31 int main()32 {33 int t... 阅读全文
posted @ 2013-07-25 12:00 某某。 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4604思路:就是模拟一下,求每一个开始的非上升和非下降序列。然后求重复的数,由于求出来可能不会是我们想要的序列如22221122233这样的话求出来的会是2222222 222222233,而我们想要的到的是112222,所以不能用普通的,而是用N*logN(当然也是因为数列太长),而我们得到的是1122222多处一个2这个2是11之前留下的,但是因为2比1大才留下,那么2一定会留在最长上升里面,所以2是会被算作重复的减掉。代码: 1 #include 2 #include 3 #incl... 阅读全文
posted @ 2013-07-25 11:54 某某。 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4602题目大意是给你一个数的N的加法构成中另外一个数k的出现次数。如 4=1+1+1+14=1+1+24=1+2+14=2+1+14=1+34=2+24=3+14=41出现了12次。这题是赵鹏搞出来的。一个数N可以分成好N个块,如果说N= 5,K= 2 那么则会有(0|0|0|0|0)0|00|0这样的可以出现或者在边上的情况00|或者|00,才能保证有00会出现,因为122中2出现两次,所以不用怕出现重复的情况。代码: 1 #include 2 #include 3 #include 4 #inclu 阅读全文
posted @ 2013-07-23 21:32 某某。 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 连接http://acm.hdu.edu.cn/showproblem.php?pid=4608题目大意:给你一个数N,让你每一位上的数字加起来之后可以被10整除的大于N的数中最小的一个。一开始想错了,想BFS,后来一想肯定不行然后去看了1003,然后发现1003不大适合我。然后就换了1009,看了一会就想想把所有的数加起来看他离%10 == 0差多少,然后从各位开始补,如果个位能补到10那就是结果,如果不能那么用两位或者更多位一定能补掉这个结果(num[n-1]+1000000-bit)%10,bit为其他加1的个数。代码如下: 1 #include 2 #include 3 #incl.. 阅读全文
posted @ 2013-07-23 21:22 某某。 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4607题目大意就是给你N个点和N-1条边,保证整个图连通(因为边的限制,所以不可能形成环),每条边长度唯一,问要到达K个点的最短路径(起点任意)。这题画了好久的图,当时就是想找最长链,任意起点,然后BFS找到最远的点,然后从最远的点再进行BFS找最远的点,那么这两个点就是最长链的两个端点,由于图是联通的,手N-1条边的限制,所以一定是一棵树,而且要到达K个点也就好球了当K>n时,所以是要到最长路的分支上去的。而且取得点一定是去了还要回来到最长链上。结果也就出来了。后来虎哥说这个最长链就是树的直径。 阅读全文
posted @ 2013-07-23 20:58 某某。 阅读(655) 评论(0) 推荐(0) 编辑
摘要: link:http://acm.upc.edu.cn/problem.php?id=2161这题的大题题意是给你N个多面体,每个多面体的每个面都有字母,然后告诉你几个单词,问你能拼出几个单词。从这道题意不难看出这每个多面体只能每次提供一个字母,也就是说每个多面体预期所带的字母之间所能提供的流量为1 ,不难看出是个二分图,当时用的DFS果断超时,然后想到二分匹配时觉得二分匹配不熟,写了个EK最大流也超市。。。后来回到宿舍敲了一个DINIC果断88ms啊!刚才写了个二分匹配还是超市,不过QC他们的二分过了不知道为什么。。。#include <stdio.h>#include <i 阅读全文
posted @ 2013-05-17 01:58 某某。 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 那天有人在汇编群里有人问了一个#include <iostream>#include <stdio.h>using namespace std;int main(){ int a; a = 3; printf("%lf\n",a); return 0;}为什么输出0的问题。而且最近计算机组成原理里面有过对浮点型储存的讲解,所以这里就查了一下~作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 阅读全文
posted @ 2013-05-03 15:41 某某。 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题意:一条长为l(1~1,000,000,000)的河中,有n(1~50,000)块可垫脚的石头(不包括起始点和终点的),给出它们与起始点的距离rock[i],现在要你移除其中的m块,使得具有最小间距的相邻两块石头之间的距离最大。View Code 1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 int cmp(const int &a,const int &b) 6 { 7 return a<b; 8 阅读全文
posted @ 2013-03-27 16:48 某某。 阅读(211) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页