https://vjudge.net/contest/175622#problem/B
这题自己没想到二分。。想的方法也是没有记忆化的。。。
只能看题解。。挺好的。。。http://blog.csdn.net/wdcjdtc/article/details
/39177905
结果我的还是wa了。。。醉了。。
然后去检查,发现这里的mem(dp,-1)不能只弄一次。。而是每个样例都要弄。。为什么,,这个地方不是优化的地方吗。。别人不是用模板做的,没法学。。
https://vjudge.net/contest/174091#problem/C
哎。这么一样的提,我还是做了那么久,一个bug居然一直没有找出来。。我的B不能两个地方都定义了。。
结果还是wa。。算了,,时间不是用来debug的。。。终于过了,看了师兄的,原来我太傻逼了。。 我的B-1 不能忘了进制位要-1.。。
https://vjudge.net/contest/174091#problem/E
这题自己也没做出,,对于样例我的答案少一。交上去当然wa。。
有个地方自己逗比了,应该一边dfs 的时候要一边取模,这样就不会把dp开的那么大。。可能就可以加一维?而且看别人的,这里居然要处理前导0?。。
然后只能照着大佬师兄的打。。并且发现自己原来没有好好分析题目。。一些重要的mul我没有。。
https://vjudge.net/contest/175622#problem/F
这题看师兄的代码写的真好。。
敲了就交了。。
突然又不知道该学什么好。。。感觉高斯我是没有办法做的了。。这些时间
有(1)lca (2)treap(3)网络流,费用流,
然后就开始打div2来加深,好
lca的三种方法。。
其中的倍增法的模板。:
做之前的那个D - Misha, Grisha and Underground
int n,q;
const int maxn=1e5+10;
int LG=17;
int tot,head[maxn];
int anc[maxn][20];
int depth[maxn],fa[maxn];
struct Edge{
int v,nxt;
}edge[maxn];
void add(int u,int v){
edge[tot].v=v;edge[tot].nxt=head[u];
head[u]=tot++;
}
void dfs(int u,int d,int par){
depth[u]=d;
anc[u][0]=fa[u];
for(int i=1;i<=LG;++i){
anc[u][i]=anc[anc[u][i-1]][i-1];
}
for(int i=head[u];~i;i=edge[i].nxt){
int v=edge[i].v;
if(v==par)continue;
fa[v]=u;
dfs(v,d+1,u);
}
}
int lca(int u,int v){
if(depth[u]<depth[v])swap(u,v);
for(int i=LG;i>=0;i--)
if(depth[v]<=depth[anc[u][i]])u=anc[u][i];
if(u==v)return u;
for(int i=LG;i>=0;i--){
if(anc[u][i]!=anc[v][i]){
u=anc[u][i];
v=anc[v][i];
}
}
return anc[u][0];
}
int dist(int u,int v){
return depth[u]+depth[v]-depth[lca(u,v)]*2;
}
int main(){
sf("%d%d",&n,&q);
mem(head,-1);tot=0;
fa[1]=1;
rep(i,1,n-1){
int u;sf("%d",&u);
add(u,i+1);
add(i+1,u);
}
dfs(1,0,1);
rep(i,1,q){
int a,b,c;sf("%d%d%d",&a,&b,&c);
int ab=dist(a,b),bc=dist(b,c),ca=dist(a,c);
pf("%d\n", max(ab+ca-bc,max(ab+bc-ca,bc+ca-ab))/2+1);
}
}
自己单位时间做的题目的质量和数量都太低了,要提高
https://vjudge.net/contest/175681#problem/C
今天的多校重现赛,,这题其实非常像我们的校赛的那道我最终也还是没有做出来的题目。。。
用到了链表,,然而我现在又忘了怎么弄。。现在当初那道题目我也不会
这种题应该很经典的。。。一定要会。看来我的什么滑动窗口啊,什么单调队列的什么一定要搞一搞,弄到像普通的数据结构一样就不怕了。。
https://vjudge.net/contest/175681#problem/H
这题好像打表就可以看出来。。可是我真的不会打表。
Codeforces Round #426 (Div. 2) C题
参考,这个的。自己还是太菜了
http://blog.csdn.net/sunmoonvocano/article/details/76408971
Codeforces Round #426 (Div. 2) D题
这可这的是一道好题啊。。看了题解都看了挺久,而且自己也没有做过这样的dp+线段树的题
参考http://blog.csdn.net/ssimple_y/article/details/76410328
居然有一个博客的代码是错的。让我敲了那么久。。
这题的相当于所有的dp【i】【j】都存在了线段树中,所以不会超时,,
更新的话是通过last+线段树的操作更新的。
果然有。。
https://vjudge.net/problem/CodeForces-675E
这题做的也很可怕,,因为我居然没有发现自己的错误的地方,其实并不是裸的rmq。。 所以这个地方用线段树也许更加的直观。
参考http://blog.csdn.net/libin66/article/details/51484474K
明天要补敲的提(都已经看过的了)
(多校的三道题)
找几个要打表的提,学下怎么打表
https://vjudge.net/contest/175681#problem/H
参考http://blog.csdn.net/algzjh/article/details/76571580
其中的mu是莫比乌斯函数。。学习下他的打表是怎么写的。。
(前提要把链表搞清楚,, 然后顺便吧单调站和单调队列等等弄懂,做题)
https://vjudge.net/contest/175681#problem/C
参考,还是不太懂。。。。。(等着补?)
http://www.cnblogs.com/fightfordream/p/7272100.html
这题居然是思维题。。确实我也想不出。而且少了我模仿别人的代码的时候,少了LL的地方很坑。
https://vjudge.net/contest/175681#problem/E
CF 的提
看看自己的二分敲得可不可以。。
http://codeforces.com/contest/832/problem/C
结果自己居然没有把式子列好。。看来还是有点畏惧啊。。