小明的阁楼

故事再美 结局还是再见


  • 首页

  • 归档

  • 标签

  • 搜索

luogu1273 有线电视网

发表于 2018-04-13
1
2
3
4
5
6
O(n^2)的dp
有一个重要的地方
每个点的循环大小是它子树中用户节点的个数
不加上这个50分
每两个点只会在lca产生贡献
所以n^2
阅读全文 »

hihocoder1063 缩地

发表于 2018-04-13
1
2
3
4
和apple tree很像
但是步数特别大,不能作为一维
发现收益特别小,将收益作为一维
错了一次在于数组开小了
阅读全文 »

luogu2014 选课

发表于 2018-04-12
1
2
3
做完apple tree以后
这题就很简单啦
f[i][j]表示i的子树中选j个课程的最大学分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
inline LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=308;
int n,m;
int fa;
int nume,head[N];
struct node{
int to,nxt;
}e[N];
inline void addedge(int x,int y)
{
e[++nume]=(node){y,head[x]};head[x]=nume;
}
int f[N][N];
inline void dfs(int x)
{
for(int i=head[x];i;i=e[i].nxt){
dfs(e[i].to);
for(int j=m;j;--j){
for(int k=1;k<j;++k){
f[x][j]=max(f[x][j],f[e[i].to][k]+f[x][j-k]);
}
}
}
}
int main()
{
n=read();m=read();++m;
for(int i=1;i<=n;++i){
fa=read();f[i][1]=read();
addedge(fa,i);
}
dfs(0);
printf("%d",f[0][m]);
return 0;
}

poj2486 Apple Tree

发表于 2018-04-12
1
2
3
4
5
6
7
8
9
10
好久没写树上dp和背包了
看了好久题解
每个点权都是非负的
所以多余的步数走了也不会使答案变差
每一步可以选择停在原地不动
f[i][j][0]表示在节点i的子树中走j步,且最终回到i的最大收益
f[i][j][1]表示在节点i的子树中走j步的最大收益
因为一个子树重复进去是没有收益的
所以相当于一个01背包
j要从大到小枚举
阅读全文 »

luogu2805 [NOI2009]植物大战僵尸

发表于 2018-04-11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
选某个植物就要选保护它的所有植物
典型的最大权闭合子图
愉快的打完了
一测样例
225?
发现出现了一个环(良心样例不多见了)
怎么去掉环呢
tarjan?
发现环连出去的点都相当于无敌的
所以哪些点是可以被攻击的呢
搜索!
发现奇怪的性质。。
这是topsort!
愉快的拓扑一遍,然后重建边
再dinic跑一遍
阅读全文 »

luogu2396 yyy loves Maths VII

发表于 2018-04-11
1
2
3
4
5
6
很明显的状压
看上去挺卡时间的
实际也很卡时间
开了O2才过
懒得优化了
O(2^n*n)过24
阅读全文 »

luogu2114 [NOI2014]起床困难综合症

发表于 2018-04-11
1
2
3
4
5
贪心
从高到低每一位考虑放0还是1
0能造成伤害就放0
否则,1能造成就放1
否则,不放
阅读全文 »

luogu1580 yyy loves Easter_Egg I

发表于 2018-04-11
1
2
3
4
坑在于输入
windows下每行结束有两个字符,为\r和\n
linux下只有\n
以及被钦点的人只要吱声就算成功油炸,不管他是不是@自己
阅读全文 »

poj2987 Firing

发表于 2018-04-10
1
2
3
4
5
最大权闭合子图
最小割一定是简单割,即只割与s或t相连的边
在poj交ce,'LONG_LONG_MAX' was not declared in this scope,不知道为什么
改成INF就过了
用C++编译会ce,G++才能过。。
阅读全文 »

uva1515 pool construction

发表于 2018-04-10
1
2
3
4
5
6
建图很妙啊
最小割的应用
注意所有相邻的格子都要连边
只要相邻的格子所属的集合不同,这条边就要被割掉
注意不要打错变量名
(在vjudge上的两个oj交a了,还有一个oj上mle,将空间缩小到1/4就a了,很迷)
阅读全文 »
1…9101112
littleming

littleming

112 日志
57 标签

© 2002 - 2019 littleming
由 Hexo 强力驱动
主题 - NexT.Muse
总访问量次 | 总访客人 |