自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Broken Wings

新浪微博 Geopelia 欢迎关注多多交流~

  • 博客(30)
  • 收藏
  • 关注

原创 POJ 1986 Distance Queries LCA

带边权的LCA,记录Dis[x]为根到x的距离,有dis[x,y]=dis[x]+dis[y]-2*dis[lca(x,y)]。#include #include #include #include #include using namespace std;typedef long long ll;const int maxn=44000;struct node{ i

2014-01-25 18:11:33 670

原创 POJ1470 Closest Common Ancestors LCA

依然是没什么难度的模板题..不过查询的时候,没给上限.数组开小就就RE了= =,还有就是根节点要自己找一下..#include #include #include #include #include using namespace std;typedef long long ll;const int maxn=1000;int n,m,p;struct EDGE{

2014-01-25 16:35:24 697

原创 POJ 1330 Nearest Common Ancestors LCA

给一棵树,查询两个点的最近公共祖先。还是模板题,不过数据给的时候是按顺序给的,所以要直接存成从根节点到叶子节点的有向图,同时存一下每个点的入度用来找根节点,然后从根节点开始做一遍tarjan就行..   #include #include #include #include #include using namespace std;typedef long long ll;con

2014-01-25 14:59:33 602

原创 HDU 2586 How far away? LCA模板

给一棵树,若干个查询,每次查询树上两点的距离。第一道LCA的题..完全是裸的,把查询存起来,直接tarjan就可以。res[i][0],res[i][1],res[i][2]分别表示第i个查询的起点,终点和起点终点的最近公共祖先,记dis[x]为x到根节点的距离,那么dis(0,1)就是dis[0]+dis[1]-2*dis[2].#include #include #include #

2014-01-25 14:40:34 674

原创 Codeforces round#226 div2

P1  签到题不多说..#include #include using namespace std;int n,m,p,q;int a[300];int ans;int main(){ cin>>n>>m; for (int i=1; i<=n; i++) cin>>a[i]; ans=0; for (int i=1; i<n; i++)

2014-01-25 02:23:12 702

原创 sgu 177 Square 矩形切割

n*n的矩形,由1*1的单位方格构成,先可以对其中的子矩形染色(黑或白),染色完成后,有多少个白色单位方格?第一次做这种题,第一眼看上去感觉应该是二维线段树....后来在网上查了查这类覆盖,统计的问题可以用矩形切割来写,果断学习到了新的姿势...大致思路就是倒着扫描每个矩形,处理每个矩形时,向后遍历判断后面的矩形是否与其重叠,重叠的话就分割冲若干种小的矩形继续处理,直到最后统计没有被覆盖的面积..

2014-01-24 20:23:59 1179 4

原创 sgu171 Sarov zones 贪心

一个竞赛,有K个赛区,每个赛区固定Ni个人参赛,并且每个赛区有个出线分数Qi,现共有N名选手(SUM(Ni)==N),每名选手有一个分数P,体重W,现在问,让所有出线选手的体重和尽可能大的情况下,每个选手应该在哪个赛区参赛?    YY了个贪心居然能过....对每名选手按体重降序排序,对每个选手找到一个Q最大的并且满足Q#include #include #include #incl

2014-01-24 10:29:11 1149

原创 sgu151 Construct a triangle

三角形ABC,M是BC边上的终点,给出AB=c.AC=b,AM=m,求任意一组符合的三角形三点坐标。      首先令A为原定,B为(0,c),然后将三角形补成一个平行四边形,其一般为边长分别问b,c,2m的三角形ABA',ACA',然后通过余弦定理求出cos(角ABA'),此时画个图,根据平行线的同位角相等,会发现Cos=Yc/b,然后C的x,y就都有了...      #include

2014-01-22 20:47:10 712

原创 sgu 141 Jumping Joe 扩展GCD

一维的数轴上,初始位置在原点,四种移动方式,左移a,右移a,左移b,右移b,问是否可以恰好K步移动到点P,若可以择输出一种可行的方案。      实际上就是解方程   ax+by=P,abs(x)+abs(y)=K      用扩展GCD可以求出一组解,但这组解的绝对值的和不一定是最小的,那么可以通过x+=k*b/gcd,y-=k*a/gcd来尝试收缩出一组绝对值的和最小的解,之后记录

2014-01-22 19:33:30 935

原创 sgu 140 Integer Sequences 扩展GCD

两个长度为N序列A和X,有sum(Ai*Xi)≡B (mod M),先给出序列A,整数B,M,求一组可行的序列X,无解输出NO。    首先如果N为1,a*x≡B (mod M),这个式子等价与 a*x+M*y=B,显然这个式子是可以用扩展gcd求出来的。    若N为2 既,a*x+by≡B(mod M),等价于a*x+b*y+M*=B,此时首先求式子a*x+b*y=gcd(a,b),记

2014-01-22 19:22:06 745

原创 Codeforces 383D. Antimatter

n个数(1..1000),从这串数中选取一个字串,任意添加数前的正负号,若以一种方案加上符号后该字串的和为0,则是一种可行的方案,问对这n个数共有多少种可行的方案(字串大小任意,至少为2(1个数怎么也凑不出0...))。n个数的和不超过10000.一般情况下,题目的条件都是有用的,这道题就是从n个数的和不超过10000入手.dp[i][j]记录以第i个数为终点,此时和为j的方案数.转移方程dp[i

2014-01-21 21:37:19 901

原创 Codeforces 383C Propagating tree DFS序+BIT

一颗以1为根节点的树,两种操作,1 x c 将节点x值+c,节点x的所有孩子的值-c,所有孩子的孩子的节点+c...交替正负直到叶子节点;2 x 查询节点x当前的值。挺简单的一题..当时怎么就没去看...这题只要能想到时间戳的话,就简单了..首先dfs遍历树打上时间戳,这样每个节点保存一个区间l,r表示访问到该节点到遍历完其子树的区间.每个节点按其到根节点的距离的奇偶性分类,ct[i]=0,1表示

2014-01-21 19:10:53 737 1

原创 SGU 132 Another Chocolate Maniac 状压DP

一块N*M的蛋糕,有些位置空着,有些位置放着蜡烛,可以用1*2,2*1的巧克力来覆盖空位,问最少需要多少块巧克力,可是使蛋糕上不存在空着的1*2或2*1的区域..蛋糕的宽度最大只有7,可以状压来做。因为放巧克力时,只有当前层和下一层的状态会有影响,所以可以同滚动数组来存储状态每次扩展的时候,先判断一下当前层和上一层是否存在非法的状态(存在完整的1*2或2*1的区间),然后dfs扩展本层所有可以放置

2014-01-20 22:22:21 806

原创 zoj 3738 Buy the Pets 状压DP

有n个人,每个人要买一只猫和一只狗做宠物,有的人对某些猫过敏,有些狗和某些猫在一起会打架..现在问若每个人都能买到一只狗和一只猫,并且人猫过敏的组合,猫狗打架的组后都没有出现,一共有多少种可行方案?这题中心点是猫,所以算出人-猫之间有多少种可行方案,在根据每种可行方案猫的状态来确定猫狗的方案数,两个数乘积就是最后的答案。由于N,M,K都很小,所以可以用状压来做。dp1[i][k]表示前i个人,选择

2014-01-20 16:03:25 982

原创 zoj 3741 Eternal Reality DP

学园都市内有等级从0-5的能力者,先给定你的等级(0--5),给出n个你的对手Ai,只有你的等级大于等于Ai你才能胜利并且拿到一分,另外你还可以开挂,在第i回合使用外挂,[I,I+X-1]回合里你等等级+1(如果你是LV5,开挂后还是LV5),并且[i+x,i+x+y-1]回合中你的等级为0.问你最多能拿多少分。这题有两个坑,一个是LV5开挂后还是LV5(这个看过魔禁或者超炮的应该很容易注意到吧.

2014-01-19 23:08:32 849

原创 zoj 3745 Salary Increasing 暴力

首先给出n个人的其实工资,接下来Q个加薪操作,给薪水在[l,r]之间的人,薪水加c,执行完左右操作后,求发出的薪水的总和。这题有个条件,就是Ri   #include #include #include #include #include #include #define lson id<<1,l,m#define rson id<<1|1,m+1,rusing namespa

2014-01-19 23:01:40 1000

原创 sgu 101 Domino 欧拉通路

题意是给若干多米若骨牌,每张牌两侧有数字,两张牌在面对面数字相同的情况下可以放在一起,求一中摆放方式..把每张牌看成一条边,连接这张牌牌两侧的数字表示的节点..这样就是一个球欧拉通路的问题了...另外注意判断一下无解,还有搜完欧拉通路后,判断一下是不是所有的边都用上了,否则就是存在不连通的情况..   #include #include #include #include #inclu

2014-01-19 22:56:16 682

原创 sgu 111 Very simple problem 高精开平方

给一个不超过10^1000的数n,求最大的数k使得k^2import java.io.*;import java.util.*;import java.math.*;public class aaa { public static void main(String[] args) { Scanner cin= new Scanner(new BufferedInputSt

2014-01-19 22:53:06 775

原创 sgu 193 Chinese Girls' Amusement

给一个N,求K满足K这里讨论一下N的奇偶性,1 N奇数, gcd(N,N-1)=1,所以gcd(N,(N-1)/2)也一定是1所以答案是(n-1)/22 N s是偶数,讨论N/2-1的奇偶性   a. N/2-1是奇数 gcd(N,N/2-1)=gcd(N/2-1,2)=1,所以答案是N/2-1   b.N/2-1是偶数,那么考虑N/2-2,gcd(N,N/2-2)=gcd(N

2014-01-18 22:20:37 787

原创 Codeforces round#224

A.Ksenia and Pan Scales     大意是往天平上方法吗..用字符串随便搞一下就行..#include #include #include #include #include #include using namespace std;typedef long long ll;int n,m;string s;int main(){// fr

2014-01-18 22:06:07 649

原创 sgu 169 数学推导,找规律

贴个网址:http://hi.baidu.com/zyz913614263/item/478ce4dd244300ca251f40fc推导过程给的很清楚,最后只好讨论最低位的情况就行了...#include #include using namespace std;int main(){ int k; scanf("%d",&k); if (k == 1)

2014-01-17 21:01:26 691

原创 sgu 148 B-Station 枚举+小根堆

放假前就看过这题,一点思路也没-..看题解都没看懂...今终于A掉了...      一个水库分为N层,每层有一定量的水W,和一个承载上限L,以及爆破本层需要的花费.如果某层的水量超过了上限,或者是被炸掉了,这层的水就会落到下一层中(记为超载)。现在一些人想要使最下面一层既第N层超载,问在花费最少的情况下,需要爆破哪些层?      现在看题解还是没看懂...不过倒是受到了点启发。首先考虑

2014-01-17 19:34:21 950

原创 Codeforces 380D Sereja and Cinema

#223Div1的第四题,题意大致是一排n个座位,每个座位两侧有个电源(那么总共就是n+1个电源),每来一个人坐在某个位置上后,他就会占用这个座位两侧的电源,如果只剩一个可用就用一个,如果两个都被占了,他就会生气的离开,现在如果个别位置上的人是第几个入场确定的话,问如何安排省下位置上的人的进场顺序,可以使所有人都能有至少一个电源用而不至于生气的离开。        这题一直没什么思路,昨天拿去

2014-01-17 01:42:12 1088

原创 sgu 153 Playing with matches DP+枚举循环节

n跟火柴,m+1中取法(第一中取法一定是1),两个人依次来取,取最后一根火柴的人输,但看描述的话好像就是裸的dp,i必败的情况下dp[i+step[j]]必胜,O(n*m)可出,但是这题的n是1e9,m#include #include #include #include using namespace std;const int maxn=2100;bool dp[maxn];

2014-01-17 01:23:08 717

原创 sgu157 Patience DFS打表

14个格子13张扑克牌(从A,2,3,4,...J,Q,K),目标状态是第一个格子放A,第二个放2...第13个放K 第14个是空白。现在如果只有最后n格的顺序不符合要求(前边14-n格已经排好),问这n格有多少种初始状态是可以通过移动牌来达到目标状态,移动的规则是,如果空格前边的牌是i,那么可以将点数为i+1的牌移动到空格位置,(i+1原先的位置现在就是空格了)。由于n最大只有13,这么小的状态

2014-01-17 01:15:58 701

原创 sgu158 Commuter Train 枚举+二分

火车进站,站台的长度是L,火车有n个门,第1个门记为0,后面的门依次给出到第一个门的距离Di,站台上有m个乘客,每个乘客的位置为Mj,为火车停在哪个位置,可以使所有旅客到距离自己最近的门的距离之和最大,并且要保证火车所有的门都在站台长度内。因为给出的数都是整数,那么任意两个乘客的终点要么也是整数,要么是几点5,所以按0.5为步长枚举火车的位置,然后计算每个乘客到最近的门的距离,这里可以用二分查找,

2014-01-16 00:10:05 739

原创 sgu159 Self-Replicating Numbers DFS+高精

通俗易懂的题意..给进制数B,长度n,求所有长度为n,并且平方后低n位不变的数..由于n是2000,存储的过程要用到高精...n虽然很大,但实际上符合要求的数没多少,所以直接暴力就好了,bfs,dfs都行,要注意的一点是,判断的时候如果写成n^2的高精乘法,会T掉,这里必须优化一下。事实上,只要低n位的话,我们每次添加新一位的时候只要存两个数就行,一个是这一位填多少,另一个是填上这个数后,对它高一

2014-01-15 16:30:15 696

原创 sgu160 Magic Multiplying Machine DP

坑爹dp,dp[i][j]表示前i个数是否能凑成乘积j..输出答案的时候根据当前的乘积和最近一次用到的数暴力没举出上一次的乘积...这tm都能过......      #include #include #include #include #include #include #include using namespace std;typedef long long ll;c

2014-01-15 01:19:15 653

原创 sgu162 Pyramids 四面体面积

直接打公式就好,推导用到了海伦公式和余弦定理...备一份公式以备不时之需吧..      #include #include #include using namespace std;double slove(double a,double b,double c,double p,double q,double r){ double p1=(a*a*p*p)*(-a*a+b*

2014-01-14 23:08:35 789

原创 Codeforces Round #223 div1

A. Sereja and Prefixes(模拟+二分)     题意大致是要构造一个序列,有两种操作 1 k是把k添加到序列最后,2 p q是把当前序列的前缀p重复q次添加到序列最后..直接模拟就好吧,每次操作添加一个节点,记录当前是具体的数还是前缀,并且记录下这个节点所表示的下标范围(数的话长度就是1,前缀的话长度就是前缀长度*重复次数),这样可以构造出来一个新的序列,然后每个查询,在这

2014-01-13 02:26:40 753

空空如也

空空如也

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

TA关注的人

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