10 2013 档案

摘要:4430去年长春最简单一题 二分啊 错了好多遍 有个大坑 是个圆心处的1 可选可不选 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL __int64 9 LL s;10 int main()11 {12 int i,j;13 while(scanf("%I64d",&s)!=EOF)14 {15 LL maxz = s-1,m1 = 1,m2 = s-1;16 for(i = 2; ... 阅读全文
posted @ 2013-10-31 19:20 _雨 阅读(246) 评论(0) 推荐(0) 编辑
摘要:1057简单的数位DP 刚开始全以2进制来算的 后来发现要找最接近x,y值的那个基于b进制的0,1组合 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL __int64 9 #define INF 1e11 10 LL dp[35][25],pp[12][22]; 11 int g1,g2,p[1INF) 22 break; 23 } 24 } 25 dp[0][0]... 阅读全文
posted @ 2013-10-31 19:15 _雨 阅读(236) 评论(0) 推荐(0) 编辑
摘要:4427dp[i][j][k] i为K位的最小公倍数 j为k位的和 k以滚动数组的形式这题最棒的是 有一个强有力的剪枝 组成公倍数m的肯定都是M的质因子 这样1000里面最多就30多个 复杂度可过了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define mod 1000000007 9 int dp[1010][1010][2];10 int q[110][1010],f[1010],lc[1010][1010];11 int p[1010];12 . 阅读全文
posted @ 2013-10-31 10:11 _雨 阅读(240) 评论(0) 推荐(0) 编辑
摘要:4760数组模拟就可以了 读的时候可以整数读入 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 #define LL __int64 11 int len,maxz; 12 LL ip[1050][16][2],pp[40]; 13 int vis[1050],w[1024],di[50],g; 14 char s[50],s1[50],s2[50]; 15 void init() 16 { 17... 阅读全文
posted @ 2013-10-30 18:13 _雨 阅读(314) 评论(0) 推荐(0) 编辑
摘要:1427题意不太好理解 其它没什么 细心啊 细心 一个0写成了1 WA半天以每个字符是以第一种方式还是第二种方式来D 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 100010 9 char s[N];10 int dp[N][2],o[N][2];11 int judge(char x)12 {13 if(x==' ')14 return 1;15 if(x>='a'&&x=' 阅读全文
posted @ 2013-10-22 12:37 _雨 阅读(276) 评论(0) 推荐(0) 编辑
摘要:贡献了一列WA。。数学很神奇啊这个题的关键是怎么才能算尾0的个数 只能相乘 可以想一下所有一位数相乘 除0之外,只有2和5相乘才能得到0 当然那些本身带0的多位数 里面肯定含有多少尾0 就含有多少对2和5这样就知道了 就是求2和5 的对数最少的 一条路 DP就不用说了 递推注意有0的时候的计算 特殊处理一下 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1010 9 #define INF 1e10 10 #define... 阅读全文
posted @ 2013-10-21 17:01 _雨 阅读(272) 评论(0) 推荐(0) 编辑
摘要:只有小写字母 那>=2600的直接找单字母串长度大于等于100的就可以了<2600 的dp找最长回文串 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 50010 9 char s[N];10 char pa[2610];11 int dp[2610][2610][2],g,n,o[30];12 void dfs(int ss,int i,int j,int k)13 {14 if(ss==0)15 return ;16 ... 阅读全文
posted @ 2013-10-20 21:44 _雨 阅读(266) 评论(0) 推荐(0) 编辑
摘要:1287水DP 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1402 9 int dp[N][N][4];10 char s[N][N];11 int main()12 {13 int i,j,n;14 scanf("%d",&n);15 for(i = 0 ; i >s[i];17 dp[0][0][0] = 1;18 dp[0][n-1][3] = 1;19 for(i = 0 ; i... 阅读全文
posted @ 2013-10-20 20:35 _雨 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1346简单dp 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 200010 9 int p[N],dp[N][2];10 int main()11 {12 int i,a,b;13 scanf("%d%d",&a,&b);14 for(i = 1 ; i p[i-1])21 {22 dp[i][0] = min(dp[i-1][1]+1,dp[i-1][0]);23 ... 阅读全文
posted @ 2013-10-20 19:33 _雨 阅读(265) 评论(0) 推荐(0) 编辑
摘要:刷个简单的DP缓缓心情1A 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 10010 9 vectorq[N];10 #define LL __int6411 #define INF 1e1012 LL dp[N][4];13 int o[N];14 struct node15 {16 int x,y,d;17 char s[10];18 }p[N];19 int main()20 {21 int i,j,n,m;... 阅读全文
posted @ 2013-10-20 16:58 _雨 阅读(214) 评论(0) 推荐(0) 编辑
摘要:经典DPn个鹰蛋 m层楼 刚开始是二分想法 不过当数小于二分的那个值 貌似没发判断dp[i][j] = min(dp[i][j],max(dp[i-1][k-1],dp[i][j-k]) 选择第k层扔 若碎了 就用剩下i-1个鹰蛋来测k-1层 若没碎 就用i个鹰蛋来测上面剩下的j-k层 这样是三重循环 1000^3势必TLE 不过以二分的思想来算 1000层最多只需要10个鹰蛋就可以测出来了 所以当n大于10的时候按10来算就OK了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7.. 阅读全文
posted @ 2013-10-20 14:40 _雨 阅读(286) 评论(0) 推荐(0) 编辑
摘要:这题刚开始理解错题意了 以为只能往右和下走这题挺好的 看题解看了N久啊二维的DP 第一维表示走到第几步 可以画一个正方形 以左上角斜着划线第i步走的点只能是第i条线上的点 而dp的第二维 就表示的第i步可以到达的点的状态另开一个a数组来表示 第i条线上每个字母的状态dp所代表的值就为a与b的差值 以这个来进行选择 进行记忆化确定下一步可以到达的字母的状态 是以当前可达的状态&下一步所要到达的字母的状态 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #d 阅读全文
posted @ 2013-10-20 12:55 _雨 阅读(220) 评论(0) 推荐(0) 编辑
摘要:短小精悍的代码dp[i][j] +=dp[k][j-1]*[i-k-1][j-1] i个结点 J层 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL __int64 8 LL dp[40][40]; 9 int main()10 {11 int i,j,k,n,d;12 scanf("%d%d",&n,&d);13 for(i = 0; i <= n ; i++)14 dp[0][i] = 1;15 for(i = 1; 阅读全文
posted @ 2013-10-19 20:39 _雨 阅读(191) 评论(0) 推荐(0) 编辑
摘要:数学so奇妙。。这题肯定会有一个循环节 就是最小公倍数对于公倍数内的相同的数的判断 就要借助最大公约数了 想想可以想明白 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1000100 9 #define LL __int6410 LL o[N][27];11 char s1[N],s2[N];12 LL gcd(int a,int b)13 {14 return b==0?a:gcd(b,a%b);15 }16 int main(... 阅读全文
posted @ 2013-10-19 12:00 _雨 阅读(264) 评论(0) 推荐(0) 编辑
摘要:1037带点组合的东西吧黑书P257 其实我没看懂它写的嘛玩意儿这题还是挺不错的 一个模糊的思路可能会好想一些 就是大体的递推方程 dp1[][]表示降序 dp2[][]表示升序 数组的含义为长度为i的第一个数为j且相对第一个数为升或降的排列数 当然j肯定要小于等于i的 dp1[i][j] = dp1[i][j]+dp2[i-1][k](k》=1&&k<j)同理 dp2[i][j] = dp2[i][j]+dp1[i-1][k](k>=j&&k<i) 这里是因为dp2[i][j]中的j取不到i(因为后面还要升,就肯定取不到i);这样任务完成了一半了 一定要深刻理解两个dp数组的含义 不然后半部 阅读全文
posted @ 2013-10-18 20:00 _雨 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1128写的dfs貌似不太对 bfs重写用bfs将图进行黑白染色 如果有超过一个与自己颜色相同的点 就把该点存入栈中 最后处理栈中的点 判断此点是否合法 不合法 取反 取反后再判断相邻点是否合法 不合法再存入栈中 直到栈为空 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 80010 10 vectored[N]; 11 int n; 12 int vis[N],d[N],f[N],g; 13 vo... 阅读全文
posted @ 2013-10-17 22:49 _雨 阅读(366) 评论(0) 推荐(0) 编辑
摘要:1641枚举 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int w[110][110],o[110];10 int main()11 {12 int i,j,k,n,m;13 scanf("%d%d%d",&n,&k,&m);14 int t = 1;15 for(i = 1 ; i k)18 t = 1;19 o[i] = t;20 printf("%... 阅读全文
posted @ 2013-10-17 17:05 _雨 阅读(178) 评论(0) 推荐(0) 编辑
摘要:1160算是模版了 没什么限制 结束输出就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1010 9 #define M 1501010 struct node11 {12 int x,y,len;13 }p[M];14 int fa[N];15 int find(int x)16 {17 if(fa[x]!=x)18 fa[x] = find(fa[x]);19 return fa[x];20 }2... 阅读全文
posted @ 2013-10-17 15:31 _雨 阅读(317) 评论(0) 推荐(0) 编辑
摘要:1176给定一有向图 求其反图的欧拉回路 路径输反了 一直WA。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 5010010 int n,m;11 vectored[1010];12 int w[1010][1010],vis[1010];13 int pa[N],num,t;14 void dfs(int u)15 {16 int i;17 for(i = 0 ; i 1 ; i--)46 ... 阅读全文
posted @ 2013-10-17 14:51 _雨 阅读(254) 评论(0) 推荐(0) 编辑
摘要:1450水题 最长路 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int n,m;10 vectored[510];11 int vis[510],dis[510],w[510][510];12 void spfa(int s,int e)13 {14 int i;15 queueq;16 q.push(s);17 vis[s] = 1;18 while(!q.empty())19 {2... 阅读全文
posted @ 2013-10-17 12:28 _雨 阅读(340) 评论(0) 推荐(0) 编辑
摘要:1651终于A了 看这题容易想到最短路 看到错的很多 还特意注意了好几处后来发现 必须按给出的顺序出边 想了想 这不就是BFS 然后就是各种细节 i->i+1ori->j(a[i]==a[j]) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 1001010 #define INF 0xfffffff11 vectored[N];12 vector::iterator it;13 int vis[N*10],pa[N.. 阅读全文
posted @ 2013-10-17 01:05 _雨 阅读(288) 评论(0) 推荐(0) 编辑
摘要:1218简答题对于当前点 判断每个点是否可达 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 vectored[210];11 int w[210][210],vis[210];12 struct node13 {14 char s[35];15 int a,b,c;16 }p[210];17 int judge(int x,int y)18 {19 int a1 = p[x].a,a2 = ... 阅读全文
posted @ 2013-10-16 20:11 _雨 阅读(219) 评论(0) 推荐(0) 编辑
摘要:1888dfs找出连通块 块内构造数据 bfs找出最值 如果有多个连通块 那max就为49 可以起点不同 这样记得修改后面的数据写的老长了。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 vectored[55]; 10 int vis[55],gg,p,g,maxz,o[55],pp[55][55],q[55]; 11 int w[55],mm[55]; 12 void dfs(int u) 13 { 14 ... 阅读全文
posted @ 2013-10-16 19:37 _雨 阅读(346) 评论(0) 推荐(0) 编辑
摘要:读错题意了。。线段树延迟标记白刷这么多线段树 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 300010 9 int s[N=r)17 {18 s[w] = p;19 return ;20 }21 if(s[w])22 {23 s[w>1;27 if(am)30 update(a,b,p,m+1,r,w>1;39 if(k= 1; i-... 阅读全文
posted @ 2013-10-16 08:43 _雨 阅读(270) 评论(0) 推荐(0) 编辑
摘要:1320简单并查集 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int fa[1010],r[1010]; 9 int find(int x)10 {11 if(fa[x]!=x)12 fa[x] = find(fa[x]);13 return fa[x];14 }15 int main()16 {17 int i,u,v;18 int flag = 0;19 for(i = 1; i >u>>v)25 ... 阅读全文
posted @ 2013-10-15 19:05 _雨 阅读(366) 评论(0) 推荐(0) 编辑
摘要:1227题意木看懂 是可以停在路上 任何地方 水题一枚 以下条件之一满足就可以有环(并查集判)重边自己到自己的边最长边大于s(用flod改写下) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL long long 9 int m,n,s,f[110];10 int w[110][110];11 int find(int x)12 {13 if(x!=f[x])14 f[x] = find(f[x]);15 retu... 阅读全文
posted @ 2013-10-15 12:14 _雨 阅读(192) 评论(0) 推荐(0) 编辑
摘要:1156求出每个联通块的黑白块数 然后再背包 二维的背包 要保证每个块都得取一个写的有些乱。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[110]; 9 int x,y,flag,g,f[110],o[110],n,q[110]; 10 int co[110],a[110],b[110],dp[110][110]; 11 int vis[110],p[110][110][2]; 12 void dfs(int u,in... 阅读全文
posted @ 2013-10-15 12:11 _雨 阅读(410) 评论(0) 推荐(0) 编辑
摘要:1137做过一样的 怎么又忘了 再一次搜超时不用回溯 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 1001010 int n,m;11 vectored[N];12 bool vis[N][N];13 int pa[100010],t;14 void dfs(int u)15 {16 int i;17 for(i = 0 ; i 1 ; i--)48 printf("%d ",pa[i])... 阅读全文
posted @ 2013-10-14 18:28 _雨 阅读(257) 评论(0) 推荐(0) 编辑
摘要:1934水题 RE了N久 后来发现是无向图 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 2000010 10 #define INF 0xfffffff 11 struct node 12 { 13 int u,v,next; 14 double w; 15 }ed[Nq; 42 dis[s] = 1; 43 p[s] = 1; 44 q.push(s);... 阅读全文
posted @ 2013-10-11 22:50 _雨 阅读(334) 评论(0) 推荐(0) 编辑
摘要:A 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int a[110]; 9 int main()10 {11 int i,j,n,u,v;12 int s1=0,s2=0,num=0;13 scanf("%d",&n);14 for(i = 1; i 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define... 阅读全文
posted @ 2013-10-11 15:39 _雨 阅读(215) 评论(0) 推荐(0) 编辑
摘要:1124需要想那么一点点吧 一个连通块中肯定不需要伸进手不拿的情况 不是一个肯定会需要这种情况 然后注意一点 sum=0的时候 就输出0就可以了 不要再减一了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[510]; 9 int a[510][55],vis[510],de[510];10 void dfs(int u)11 {12 int i;13 for(i = 0 ; i < (int)ed[u].size() ; i... 阅读全文
posted @ 2013-10-10 21:07 _雨 阅读(240) 评论(0) 推荐(0) 编辑
摘要:1742最小的是找联通块数 最大的找环 一个环算一个 其它的数各算一个 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 100010 9 int fa[N],vis[N];10 int minz,maxz,de[N],f[N],pp[N];11 void dfs(int u,int v)12 {13 de[u] = v;14 vis[u] = 1;15 f[v] = u;16 int i;17 if(... 阅读全文
posted @ 2013-10-10 19:45 _雨 阅读(340) 评论(0) 推荐(0) 编辑
摘要:这题纠结好久了 看一神代码 想了N久才明白它的意思dp[i][j]表示放了i个数后和为J的方式有多少种而在算阶层总数的时候 会重一部分 而重的那一部分恰好为小于等于P的长度 所以就直接省了乘长度这一部分 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL long long 9 int a[55];10 LL dp[55][55];11 double pp[55];12 int main()13 {14 int i,j,k,n,p;1... 阅读全文
posted @ 2013-10-10 18:13 _雨 阅读(259) 评论(0) 推荐(0) 编辑
摘要:这图最多3色就可以 搜2就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int vis[55][55],c[55][55],f[10],mm;10 int dis[6][2] = {{1,0},{0,1},{-1,0},{0,-1},{-1,1},{1,-1}},n;11 int flag,m;12 int judge(int x,int y)13 {14 if(x=n||y>=n)15 return 0;16 ... 阅读全文
posted @ 2013-10-07 15:06 _雨 阅读(187) 评论(0) 推荐(0) 编辑
摘要:1008没营养的破题 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 typedef struct node 9 { 10 int x,y; 11 }st; 12 int vis[15][15],w[15][15]; 13 int n,o[115],dis[4][2] = {{1,0},{0,1},{-1,0},{0,-1}}; 14 int s[115][8],gg; 15 char ss[115][8]; 16 st p[115]... 阅读全文
posted @ 2013-10-07 11:38 _雨 阅读(275) 评论(0) 推荐(0) 编辑
摘要:1109二分图的模板题 不过这题题意 我纠结了好久 不知道是不是我对二分图不熟悉的原因这题就是说 有n+m个人参加会议 要在这n+m中进行通话 求最少的连接数 就是每个人都得被连接上 这样求最大匹配就是了 再用总结点数减匹配的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[2010]; 9 int n,m,k,vis[2010],link[2010];10 int find(int u)11 {12 int i;13 for... 阅读全文
posted @ 2013-10-06 23:00 _雨 阅读(239) 评论(0) 推荐(0) 编辑
摘要:1205简单题 有一些小细节 两个站可能不相连 但是可以走过去 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std; 10 #define INF 0xfffffff 11 vectored[310]; 12 double v1,v2,x[310],y[310],w[210][210],dis[210]; 13 int n,vis[210],pa[210],o[210]; 14 void spfa(int s... 阅读全文
posted @ 2013-10-06 15:59 _雨 阅读(467) 评论(0) 推荐(0) 编辑
摘要:Problem Statement The pony Rainbow Dash wants to choose her pet. There are N animals who want to be her pet. Rainbow Dash numbered them 0 through N-1.To help her make the decision, Rainbow Dash decided to organize a relay race for the animals. The race track is already known, and... 阅读全文
posted @ 2013-10-06 14:13 _雨 阅读(361) 评论(0) 推荐(0) 编辑
摘要:1242简单dfs 往孩子方向搜一遍 父母方向搜一遍 输入还搞什么字符串。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectorfa[1010]; 9 vectorch[1010];10 int u,v,q[1010];11 int w[1010],vis1[1010],vis2[1010],o;12 void dfs1(int u)13 {14 int i;15 for(i = 0 ; i >s1)44 {45 ... 阅读全文
posted @ 2013-10-05 22:58 _雨 阅读(245) 评论(0) 推荐(0) 编辑
摘要:1033简单dfs 有一点小小的坑 就是图可能不连通 所以要从左上和右下都搜一下 加起来 从讨论里看到的讨论里看到一句好无奈的回复 “可不可以用中文呀。。。” 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 char s[40][40]; 9 int dis[4][2] = {0,1,1,0,-1,0,0,-1};10 int vis[40][40],n,num;11 int judge(int x,int y)12 {13 if(xn||y>n)14.. 阅读全文
posted @ 2013-10-05 21:28 _雨 阅读(194) 评论(0) 推荐(0) 编辑
摘要:挺好的dp 因为有一点限制 必须任意去除一个数 总和就会小于另一个总和 换句话来说就是去除最小的满足 那么就都满足所以是限制最小值的背包 刚开始从小到大定住最小值来背 TLE了一组数据 后来发现如果从大到小的话 就不用多加一重for了 前面算的已经记录下来 直接用就OK了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL long long 9 #define N 300001010 LL dp[N],sum[N];11 int a[5... 阅读全文
posted @ 2013-10-05 18:15 _雨 阅读(290) 评论(2) 推荐(0) 编辑
摘要:1208简单dfs 对于每个数 两种情况 取还是不取 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 mapf;10 struct node11 {12 int a,b,c;13 }p[20];14 int n,maxz;15 int vis[60];16 int judge(node x,node y)17 {18 if(x.a==y.b||x.a==y.a||x.a==y.c)19 return 0;20 ... 阅读全文
posted @ 2013-10-05 14:37 _雨 阅读(262) 评论(0) 推荐(0) 编辑
摘要:写了一记忆化 TLE了 把double换成long long就过了 double 这么耗时间啊 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 4010 9 #define INF 0xfffffff10 #define LL long long11 double a[N];12 LL dp[N][N],b[N][2];13 int n;14 LL dfs(int i,int r1,int r2,LL ss)15 {16 if(i>.. 阅读全文
posted @ 2013-10-05 13:25 _雨 阅读(210) 评论(0) 推荐(0) 编辑
摘要:1930简单二维 标记一下是上坡还是下坡 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 1001010 #define INF 0xfffffff11 int dis[N][2],vis[N];12 int n;13 struct node14 {15 int u,v,next,d;16 }ed[N*20];17 int t,head[N];18 void init()19 {20 t = 0;21 ... 阅读全文
posted @ 2013-10-04 19:31 _雨 阅读(308) 评论(0) 推荐(0) 编辑
摘要:1709简单题 并查集找下就行 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL long long 9 int fa[110];10 int w[110][110],o[110][110];11 char s[110][110];12 int find(int x)13 {14 if(x!=fa[x])15 fa[x] = find(fa[x]);16 return fa[x];17 }18 int main()1... 阅读全文
posted @ 2013-10-04 18:45 _雨 阅读(236) 评论(0) 推荐(0) 编辑
摘要:1210简单模版题 敲个spfa还得瞟下模版。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 vectored[910];10 #defi... 阅读全文
posted @ 2013-10-04 17:48 _雨 阅读(329) 评论(0) 推荐(0) 编辑
摘要:1022简单拓扑 不能直接dfs 可能有不联通的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[110]; 9 int n,pa[110],de[110];10 void topo()11 {12 int i,j;13 for(i = 1; i <= n ; i++)14 {15 f... 阅读全文
posted @ 2013-10-04 16:43 _雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要:1136先由后左 再父 建一个二叉树 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 3010 8 int a[N]; 9 int tr[N];10 int g;11 void build(int s,int te,int ro)12 {13 if(s==te)14 {15 g++;16 tr[g] = a[s];17 return ;18 }19 int k = te-1,i;20... 阅读全文
posted @ 2013-10-04 15:59 _雨 阅读(228) 评论(0) 推荐(0) 编辑
摘要:1106结点染色 当前结点染为黑 朋友染为白 依次染下去这题是为二分图打基础吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 vectored[110]; 9 int vis[110],num;10 void dfs(int u,int c)11 {12 int i;13 vis[u] = c;14 if(c==1)15 num++;16 for(i = 0 ; i < (int)ed[u].size() ; i++)... 阅读全文
posted @ 2013-10-04 15:03 _雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要:1439路漫漫其修远兮~手抄一枚splay树 长长的模版。。关于spaly树的讲解 网上很多 随手贴一篇貌似这题可以用什么bst啦 堆啦 平衡树啦 等等 这些本质都是有共同点的 查找、删除特别快 因为都有序 而且平衡~看题很容易想到用线段树做 不过数太大了 离散化嘛 你肯定这么想 不过这题真不好离... 阅读全文
posted @ 2013-10-04 13:37 _雨 阅读(360) 评论(0) 推荐(0) 编辑
摘要:1837被数据结构部分打击的不行了 换地 刷点简单的 图论第一题 floyd水过 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int w[310][310];10 #define INF 0xfffffff11 mapf;12 struct node13 {14 char s[22];15 int id;16 }p[310];17 bool cmp(node a,node b)18 {19 return str... 阅读全文
posted @ 2013-10-04 13:26 _雨 阅读(235) 评论(0) 推荐(0) 编辑
摘要:1414破题 又逼着用stl 卡内存 trie树太耗了 水不过去用set存字符串 set可以自己按一定顺序存 且没有重复的 再用lower_bound二分查找字符串的第一次出现 接着往后找就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 1001010 setq;11 set::iterator it;12 int kk;13 string ys = "sun";14 char ss[22];1 阅读全文
posted @ 2013-10-02 23:40 _雨 阅读(246) 评论(0) 推荐(0) 编辑
摘要:1067破题啊 写完发现理解错题意了 子目录下会有跟之前重名的把输入的字符串存下来 排下序 然后依次找跟上面有没有重的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 vectorq[510];11 char sx[510][82][11];12 struct node13 {14 char c[82];15 }s[510];16 int o[510];17 bool cmp(node a,node b)18... 阅读全文
posted @ 2013-10-02 19:14 _雨 阅读(436) 评论(0) 推荐(0) 编辑
摘要:1628加了些数论知识 先看下剩余类的概念一个整数被正整数n除后,余数有n种情形:0,1,2,3,…,n-1,它们彼此对模n不同余。这表明,每个整数恰与这n个整数中某一个对模n同余。这样一来,按模n是否同余对整数集进行分类,可以将整数集分成n个两两不相交的子集。我们把(所有)对模n同余的整数构成的一个集合叫做模n的一个剩余类。对于a%k=x b%k=y 若x!=y a与b有边相连 则a的剩余类 与b的剩余类l里的元素也是可以相连的 即 a ->b->a+k->b+k->a 所以有环若x==y 则同一剩余类里元素都可以相连 a->a+k->a+2k->a 阅读全文
posted @ 2013-10-02 15:57 _雨 阅读(235) 评论(0) 推荐(0) 编辑
摘要:1650简单题 线段树的单点更新 就是字符串神马的 有点小繁琐 开两个map 一个存城市 一个存名字 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 60010 10 #define LL long long 11 LL s[Nq; 14 mapqq; 15 char pq[N][25]; 16 struct node 17 { 18 int d; 19 char s1[25]; 20... 阅读全文
posted @ 2013-10-01 21:36 _雨 阅读(433) 评论(0) 推荐(0) 编辑
摘要:1316我想说 要不要这么坑 WA了一个小时啊 ,都快交疯了,拿着题解的代码交都WA 最后很无语的觉得题解都错了 重读了N遍题意 发现没读错啊 难道写题解的那个人和我都想错了??最后把g++换个C++交吧 就这么A了 我#¥#%。。这个题有要注意的地方 WA6 取整的地方要那样处理(看代码) 具体我也不知道为什么 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1000000 9 #define LL long long10 #define. 阅读全文
posted @ 2013-10-01 18:26 _雨 阅读(349) 评论(0) 推荐(0) 编辑
摘要:1701又是类似食物链的这一类题这题是找与根节点的和差关系 因为0节点是已知的 为0 那么所有的都可以转换为与0的和差关系可以规定合并的两节点 由大的指向小的 然后再更新和差关系有可能最后有的不在0集合中 这时要确定最大初值 当然根据集合中出现的负值来确定 题目中工资不能出现负值 也不可大于10^9 在处理完关系后 再判断一下这两个条件 不满足的话就输出m 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 50010 9 #define LL. 阅读全文
posted @ 2013-10-01 17:05 _雨 阅读(337) 评论(0) 推荐(0) 编辑
摘要: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 _雨 阅读(729) 评论(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 _雨 阅读(423) 评论(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 _雨 阅读(326) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示