随笔分类 -  ACM_日常总结

上一页 1 2 3 下一页

编程习惯记录
摘要:>>2013.08.07%c会读入空格,对于有空格而又不想读入的情况应当注意。 阅读全文

posted @ 2013-08-07 19:12 rootial 阅读(109) 评论(0) 推荐(0) 编辑

poj 3225 Help with Intervals
摘要:最近在做线段树的专题,发现HH大牛有一个非常好的专题博客,http://www.notonlysuccess.com/index.php/segment-tree-complete/ ,所以很多博客都是看了他的解题后凭着回忆和自己的理解再写的一遍代码,所以呢别说我抄袭就行了,我只是想加深自己的回忆,在这里感谢HH大牛这么规范,简洁的代码,让我这个新手学起来找到一点感觉。言归正传,下面开始回忆>.=r时,而且操作又是将该区间全部变成0,或者全部变成1,就可以不向下更新了,直接cover[rt]=1,或者0,(根据情况),XOR[rt]应当变成0,由于整个区间情况一致。所以以后遇到rt节点对 阅读全文

posted @ 2013-08-07 19:09 rootial 阅读(219) 评论(0) 推荐(0) 编辑

UVA 1513 Movie collection
摘要:1 #include 2 #include 3 #include 4 #define N 200010 5 #define lson l,m,rt=N-n)&&l>1;25 build(lson);26 build(rson);27 PushUp(rt);28 }29 30 void update(int i,int c,int l,int r,int rt)31 {32 if(l==r)33 {34 sum[rt]=c;35 return;36 }37 int m=(l+r)>>1;38 if(... 阅读全文

posted @ 2013-08-07 00:57 rootial 阅读(326) 评论(0) 推荐(0) 编辑

POJ 2528 Mayor's posters
摘要:一个线段树关于区间更新的题目。贴海报最后求能够看见的海报的数目,按照贴的顺序依次对线段树的[l,r]区间进行更新,注意使用延迟标记。由于数据较大,所以必须先离散化处理,即取海报的区间的两端的值存储下来,然后排序映射到1,2,3,......n然后对每张海报按照区间端点对应的映射号更新即可。 1 #include 2 #include 3 #include 4 #define N 11111 5 #define M 11111111 6 #define lson l,m,rt=r) 24 { 25 color[rt]=c; 26 retu... 阅读全文

posted @ 2013-08-06 23:20 rootial 阅读(154) 评论(0) 推荐(0) 编辑

POJ 3468 A Simple Problem with Integers
摘要:这个题目涉及到线段树的成段更新,中间需要注意变量的类型是 __int64,update函数用来更新[L,R]区间的数,当L=r时,可以不向下更新,将增加值c存储在记录该节点的对应区间应该增加量的变量中,也就是进行color[rt]+=c操作,等到下次更新该区间时向下更新或者查询区间和时更新。顺便提醒一下自己:以后遇到用long long ,__int64的题目里面变量最好统一一个类型,不然很容易混淆。代码: 1 #include 2 #include 3 #define N 100010 4 #define maxn (1>1;25 build(lson);26 build(r... 阅读全文

posted @ 2013-08-06 18:29 rootial 阅读(164) 评论(0) 推荐(0) 编辑

UVA 10048 Audiophobia 任意两点的路径上最大的边
摘要:题目是要求任意给定两点的的路径上最大的边,最终输出这些最大边中最小的值,也就是求一条路径使得这条路径上最大的边在所有连通两点的路径中最短。根据Floyd—Warshall算法改造一下就行了。dp[i][j]表示i,j两点的连通路径中最大边的最小值。 1 #include 2 #include 3 #define N 110 4 #define INF 999999999 5 #define max(a,b) ((a)>(b)?(a):(b)) 6 #define min(a,b) ((a)>(b)?(b):(a)) 7 8 int dp[N][N]; 9 int main(void 阅读全文

posted @ 2013-08-03 14:15 rootial 阅读(280) 评论(0) 推荐(0) 编辑

UVA 10034 Freckles 最小生成树
摘要:虽然是道普通的最小生成树题目,可还是中间出了不少问题,暴露的一个问题是不够细心,不够熟练。所以这篇博客就当记录一下bug吧。代码一:kruskal 1 #include 2 #include 3 #include 4 #include 5 #define N 110 6 7 typedef struct 8 { 9 double x,y; 10 } Point; 11 Point point[N]; 12 13 typedef struct 14 { 15 int u,v; 16 double c; 17 } EDGE; 18 EDGE edge[... 阅读全文

posted @ 2013-08-03 10:59 rootial 阅读(359) 评论(0) 推荐(0) 编辑

POJ 2075 Tangled in Cables 最小生成树
摘要:简单的最小生成树,不过中间却弄了很久,究其原因,主要是第一次做生成树,很多细节不够熟练,find()函数的循环for判断条件是 pre[i]>=0,也就是遇到pre[i]==-1时停止,i就是并查集的代表元、 1 #include 2 #include 3 #include 4 #include 5 #define MAXN 1000 6 #define MAXE 1000010 7 #define LEN 25 8 #define esp 1e-9 9 10 char name[MAXN][LEN]; 11 int n,m; 12 13 typedef struct 1... 阅读全文

posted @ 2013-07-30 00:20 rootial 阅读(215) 评论(0) 推荐(0) 编辑

HDU 2487 Ugly window
摘要:这是切的很痛苦的一道题,自己测试了很多样例却终究不过,中间也做了诸多修改,后来无奈去网上看题解,发现遗漏了一种情况,就是两个窗口可能边框都能看见,但是一个嵌套在另一里面,而我判定是不是 “top window”的条件只要是边框全部暴露在外面,所以呢发现边框完整没有遮挡的时候,对边框包围区域遍历一遍看里面有没有字母,这样就能判定一个“top window”了。主要思路就是沿着右下左上的方向行进,遇到不是相同字母或越界的情况就变化方向,如果提前表示方向的d>3,说明边框被遮挡不完整,若完整的话对框内区域进行查找看有没有其他字母。 1 #include 2 #include 3 #includ 阅读全文

posted @ 2013-07-29 22:17 rootial 阅读(214) 评论(0) 推荐(0) 编辑

UVA 11426 GCD Extrme (Ⅲ)
摘要:给定一个整数N(1 2 #define N 4000010 3 #define M 4000000 4 5 int phi[N]; 6 typedef long long ll; 7 ll a[N]; 8 9 void solve(void)10 {11 int i,j;12 for(i=2;i<=M;i++)13 {14 if(phi[i]==i)//phi[i]为i表示该数的欧拉函数值还没有求过,也就是该数为素数。15 {16 for(j=i;j<=M;j+=i)//筛法求欧拉函数值,17 ... 阅读全文

posted @ 2013-07-28 16:18 rootial 阅读(216) 评论(0) 推荐(0) 编辑

POJ_1220_Nmber Sequence
摘要:上网查了一下进制转换的算法,发现一个性能比较好的:m进制转换成n进制,先用例如62进制ABC转换成10进制,就是用余位c(第一个数余位数值为0)乘以原基数from,加上A表示的数值,然后得到一个数,对to(要转换的进制)取商替换字符A,注意要用相应字符替换相应位这里是s[0],然后取模作为计算下位时的余位,当计算到最后一位时把余位存起来,因为这就是要准换成的数字的第一位,最后逆序输出就行。最终直到s字符串所有位都是0,反复操作过程中可以改变遍历的下限也就是从第一个不为0的地方开始乘基数取模。代码: 1 #include 2 #include 3 #define N 10010 4 5 cha. 阅读全文

posted @ 2013-07-27 00:28 rootial 阅读(157) 评论(0) 推荐(0) 编辑

Fibonacci数列对任何数取模都是一个周期数列
摘要:题目是要求出斐波那契数列n项对一个正整数取模,那么可以把斐波那契数列取模后得到的数列周期求出来。比如下面一个题目:求出f[n]的后4位,先求出数列对10000取模的周期,然后再查找即可。 1 #include 2 #define N 15000 3 #define MOD 10000 4 int a[N]; 5 int main(void) 6 { 7 int i,n; 8 a[0]=0; 9 a[1]=1;10 for(i=2;i#define MOD 10000void AN(int a[][2],int b[][2]){ int a1,a2,a3,a... 阅读全文

posted @ 2013-07-23 13:32 rootial 阅读(739) 评论(0) 推荐(0) 编辑

POJ_3321_APPLE_TREE
摘要:poj上面的一道求子树上苹果的题目,网上看了很多题解,下面我来回忆一下,基本来源于大神的微博,http://blog.csdn.net/zhang20072844,我来做个搬运工。先将树的n条边上节点重新标号,让每一棵子树上的节点编号构成一个连续的区间,然后利用dfs将第i个节点表示的区间下限,上限存进数组low[u],high[u]。树状数组c[i]=a[i-2^k+1]+a[i-2^k+2]+.....a[i],也就是i-2^k+1到i之间的苹果总数,每一个a[i]表示树上一个分叉,i是经过重新标号后的表示节点的值。可以通过add(low[i],1)为第i(原苹果树中标号)个节点增加一个苹 阅读全文

posted @ 2013-07-23 00:11 rootial 阅读(195) 评论(0) 推荐(0) 编辑

CF_Lucky Sum
摘要:幸运数字的定义是这样:仅含4和7且不比n小的数为n的幸运数字。输入范围l,r要求输出这个范围内的数字的幸运数字之和。代码: 1 #include 2 #define N 1024 3 typedef long long ll; 4 ll a[N+1]; 5 ll f(ll n) 6 { 7 if(n==0) 8 return 0; 9 int i;10 ll ans=0;11 for(i=1;i<=N;i++)12 {13 if(a[i]<n)14 ans+=a[i]*(a[i]-a[i-1]);1... 阅读全文

posted @ 2013-07-22 18:06 rootial 阅读(195) 评论(0) 推荐(0) 编辑

CF_225B _Well-known Numbers
摘要:Numbersk-bonacci (kis integer,k > 1) are a generalization of Fibonacci numbers and are determined as followsF(k, n) = 0, for integern,1 ≤ n k.Note that we determine thek-bonacci numbers,F(k, n), only for integer values ofnandk.You've got a numbers, represent it as a sum of several (at least t 阅读全文

posted @ 2013-07-22 14:32 rootial 阅读(263) 评论(0) 推荐(0) 编辑

POJ - 3264 Balanced Lineup 线段树解RMQ
摘要:这个题目是一个典型的RMQ问题,给定一个整数序列,1~N,然后进行Q次询问,每次给定两个整数A,B,(1 2 #include 3 #define INF 1000010 4 #define max(a,b) ((a)>(b)?(a):(b)) 5 #define min(a,b) ((a)>(b)?(b):(a)) 6 7 typedef struct res 8 { 9 int mx,mi;10 } pair;11 12 typedef struct node13 {14 struct node *lc,*rc;15 int ld,rd;16 pair r... 阅读全文

posted @ 2013-07-21 20:04 rootial 阅读(232) 评论(0) 推荐(0) 编辑

CF_91B
摘要:题目意思是这样的:给定n个整数,求第i个数右边的距离它最远的比它小的数的下标之差然后再减1。这里既然是需要知道距离该数最远的下标,可以从右至左扫描一遍,然后按照单调递减的顺序入栈,即只把比栈顶元素小的整数入栈,等于或大于对于后面的数查找比自己小的值没什么意义。然后遇到比栈顶元素大,而又比不大于栈底元素的情况二分搜索就可以了。 1 #include 2 #define N 100010 3 int a[N],ans[N],stack[N]; 4 int main(void) 5 { 6 int n,i,top=0; 7 scanf("%d",&n); 8 for(i= 阅读全文

posted @ 2013-07-21 10:47 rootial 阅读(253) 评论(0) 推荐(0) 编辑

POJ_2446_Chessboard
摘要:题目意思就是一个M*N的有洞棋盘棋盘上,用1*2的板子去覆盖没有洞的地方,要求板子不能重叠,最终能否将棋盘完整覆盖。代码: 1 #include 2 #include 3 #include 4 #define MAX 35 5 6 struct z 7 { 8 int color; 9 int ct; 10 }; 11 struct z chess[MAX*MAX]; 12 int lc,rc; 13 int m,n;a 14 __int64 hole[MAX*MAX]; 15 __int64 G[MAX*MAX][MAX*MAX]; 16 __int64 ... 阅读全文

posted @ 2013-07-16 20:43 rootial 阅读(652) 评论(0) 推荐(0) 编辑

嵌套矩形
摘要:矩形嵌套时间限制:3000ms | 内存限制:65535KB难度:4描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a 2 #include 3 #include 4 #define N 1100 5 6 int G[N][N]; 7 int n,max; 8 int ans[N]; 9 int d[N];10 typedef struct11 {12 int l,w;13 } s;14 s r[N];15 int f(int);16 17 /*18 void print_ans(int t,int count)19 {20... 阅读全文

posted @ 2013-07-15 23:58 rootial 阅读(1029) 评论(0) 推荐(0) 编辑

Multiplication Puzzle
摘要:题目大致意思是:一个整数序列包含N个1~100的整数(3#include#define min(a,b) ((a)<(b)?(a):(b))int dp[110][110];int main(void){ int i,j,k,a[110]; int n; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); for(k=2;k<=n;k++) for(i=1;i+k<=n;i++) { dp[i][i+k]=10000000;设dp[i][k+i]的... 阅读全文

posted @ 2013-07-15 18:28 rootial 阅读(253) 评论(0) 推荐(0) 编辑

上一页 1 2 3 下一页

导航