您的位置:首页 > 其它

洛谷八月月赛Round1凄惨记

2016-08-11 23:47 253 查看
个人背景:

上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了

也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学的id评测过判代码雷同扣100分后while(true) rp--;本次是一个凄惨.....

我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[b]我太弱了[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]-------------------------------------------------------------------------[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

题目:

http://scarlet.is-programmer.com/user_files/Scarlet/File/COOL's%20Life.pdf

--------------------------------------------------

过程:

第一题在去书城的公交车上就开始想,对于需要快速找到行x,y坐标都大的点,分别找x和y然后取交集怎么样?貌似还是n^2

唉,范围20*20的方格,可以每个宿舍保存在哪里的妹子啊,那样n*400

然后,调试时出现迷之问题,用了vector二维数组,好像是溢出或是什么问题,造数据的循环卡在刚结束,怎么搞都不好

【2016-08-12在win下测试,把频繁的debug输出该少些,n=90000也出结果了,但很慢,洛谷仍re】

至少会了double取模 呵呵呵

//
//  main.cpp
//  luogu8_3
//
//  Created by abc on 16/8/11.
//  Copyright © 2016年 abc. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int N=50005,M=10005,INF=1e9;
inline int read(){
char c=getchar(); int x=0;
while(c<'0'||c>'9'){c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x;
}
int n,m,k,u,v,s
,t
;
int h
,cnt=0;
struct edge{
int ne,v;
}e[M<<1];
inline void ins(int u,int v){
cnt++;
e[cnt].ne=h[u];
e[cnt].v=v;
h[u]=cnt;

cnt++;
e[cnt].ne=h[v];
e[cnt].v=u;
h[v]=cnt;
}

bool vis
;
int deep
,fa
[17];
inline void dfs(int u){
vis[u]=1; //printf("u %d\n",u);

for(int j=1;(1<<j)<=deep[u];j++)
fa[u][j]=fa[fa[u][j-1]][j-1];

for(int i=h[u];i;i=e[i].ne){
int v=e[i].v;
if(!vis[v]){//printf("dfs %d\n",v);
deep[v]=deep[u]+1;
fa[v][0]=u;
dfs(v);
}
}
}

//int plca

;     //jiyihua
inline int lca(int x,int y){
//    if(plca[x][y]) return plca[x][y];
//    int &p=plca[x][y];
int p=0;//buwei
if(deep[x]<deep[y]) swap(x,y);
int bin=deep[x]-deep[y];
for(int i=0;i<=16;i++)
if((1<<i)&bin) x=fa[x][i];
if(x==y) return p=x;

for(int i=16;i>=0;i--)
if(fa[x][i]!=fa[y][i]){
x=fa[x][i];
y=fa[y][i];
}
return p=fa[x][0];
}

int num=0,val
;
int ans=INF;
void solve(){
dfs(1);
for(int i=1;i<=n;i++){
memset(val,0,sizeof(val));
num=0;

for(int j=1;j<=m;j++){
int ok=0;
int p=lca(s[j],t[j]);
if(deep[p]>deep[i]) ok=0;
else if(deep[p]==deep[i]&&p==i) ok=1;
else{
int p1=lca(s[j],i),p2=lca(t[j],i);
if(p1==p&&p2==i) ok=1;
if(p2==p&&p1==i) ok=1;
}
if(ok) val[++num]=-deep[p]+deep[s[j]]-deep[p]+deep[t[j]]+1;
}

if(num<k) continue;
sort(val+1,val+1+num);
for(int i=1;i+k-1<=num;i++){
//            int mx=val[i+k-1],mn=val[i];//printf("mx %d mn %d\n",mx,mn);
ans=min(ans,val[i+k-1]-val[i]);
}
}
}
int main(int argc, const char * argv[]) {
n=read();m=read();k=read();
for(int i=1;i<=n-1;i++){
u=read();v=read();
ins(u,v);
}
for(int i=1;i<=m;i++){
s[i]=read();t[i]=read();
}
solve();
if(ans==INF) cout<<-1;
else cout<<ans;

//cout<<"\n\n";
//printf("%d   %d %d %d",deep[1],deep[2],deep[5],lca(2, 5));
return 0;
}


View Code
第四题,lis可以60分,但只有n^2的lis可以做,并且只有50分(rp—);7-8 a<=s,应该直接用nlogn的lis没问题

[b]-------------------------------------------[/b]

[b]正解:orz[/b]

[b]http://scarlet.is-programmer.com/posts/204919.html[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: