上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 71 下一页
摘要: 1671并查集 对于询问删除边之后的连通块 可以倒着加边 最后再倒序输出 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 int p[N],father[N],a,b,f[N]; 9 int pp[N];10 struct node11 {12 int x,y;13 }ed[N];14 int find(int x)15 {16 if(father[x]!=x)17 father[x] = find(father[x])... 阅读全文
posted @ 2013-09-24 16:56 _雨 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 1613高端的东西lower_bounder函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的然后用map 把数映射成容器 可以简单查询到每个数出现的最前和最后位置 再与给出的L,R相比较 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 7001010 map >t;11 v 阅读全文
posted @ 2013-09-24 15:36 _雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 1306URAL真是没水题 以为简单的排序就好了 ME 内存限制很紧 堆排序 或者 STL用堆排序做的 正好复习一下 都忘了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 1250010 8 int a[N]; 9 void adjust(int i,int n)10 {11 int j;12 a[0] = a[i];13 j = 2*i;14 while(ja[j])17 j++;18 if(a... 阅读全文
posted @ 2013-09-24 09:23 _雨 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 第一眼就想到DP,然后想了N久就想不到可以不重算的DP 最后没办法了 先算出来 再去重。。因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都不同 要么 有两个相同 要么有三个相同 对都不同情况我的DP结果会重复两次 对于有两个相同的会重复一次 统计出都相同的 两个相同的 最后减掉。。有点乱 不过A了先预处理 时间差不多4S多 再O(1)询问 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL l... 阅读全文
posted @ 2013-09-23 14:42 _雨 阅读(826) 评论(2) 推荐(1) 编辑
摘要: 第一个被板刷的题取余 依次算在周几 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 double ll,ss;10 char we[50];11 char s[10][20] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", &qu 阅读全文
posted @ 2013-09-23 14:36 _雨 阅读(654) 评论(0) 推荐(1) 编辑
摘要: 1019离散化都忘记怎么写了 注意两个端点 离散化后用线段树更新区间 混色为-1 黑为2 白为1 因为N不大 最后直接循环标记这一段的颜色查找 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define LL long long 9 struct node 10 { 11 int d,id; 12 char c; 13 }li[N>1; 24 build(l,m,w=r) 30 { 31 ... 阅读全文
posted @ 2013-09-23 13:25 _雨 阅读(248) 评论(0) 推荐(1) 编辑
摘要: 当时读错题意了 以为是什么博弈什么的 后来知道x,y不是拿走算一下所有数的最大公约数 相差小于最大公约数的数肯定没有 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 110 8 #define LL __int64 9 LL p[N];10 LL gcd(LL a,LL b)11 {12 return b==0?a:gcd(b,a%b);13 }14 int main()15 {16 int i,n;17 LL s=0,maxz=0;18... 阅读全文
posted @ 2013-09-23 11:18 _雨 阅读(234) 评论(0) 推荐(1) 编辑
摘要: 1126最简单的单调队列应用吧单调队列是指在一个队列中各个元素单调 递增(或者递减),并且各个元素的下标单调 递增。单调队列的大体操作进队时,将进队的元素为e,从队尾往前扫描,直到找到一个不大于e的元素d,将e放在d之后,舍弃e之后的所有元素;如果没有找到这样一个d,则将e放在队头(此时队列里只有这一个元素)。出队时,将出队的元素为e,从队头向后扫描,直到找到一个元素f比e后进队,舍弃f之前所有的。(实际操作中,由于是按序逐个出队,所以每次只需要出队只需要比较队头)。每个元素最多进队一次,出队一次,摊排分析下来仍然是 O(1)。 1 #include 2 #include 3 #includ. 阅读全文
posted @ 2013-09-21 22:47 _雨 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 链接dfs+记忆化 对于当前状态虽然满足和差 但如果搜下去没有满足的情况也是不可以的 所以需要记忆化下 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 char s1[1010],s2[1010]; 8 int dp[1010][1010]; 9 int sum1,sum2;10 int p[2010],n,flag;11 int ss1[1010],ss2[1010];12 int st1[1010],st2[1010];13 int dfs(int x,int y,int v,. 阅读全文
posted @ 2013-09-20 11:58 _雨 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 链接找循环节 然后所有子循环节的最小公倍数就是总的循环节 找结果的时候也按一个个置换来进行转换 不然也TLE 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define LL long long10 int p[210];11 char s[210];12 char ss[210],sq[210];13 int vis[210];1... 阅读全文
posted @ 2013-09-20 10:23 _雨 阅读(229) 评论(0) 推荐(0) 编辑
上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 71 下一页