前言
还算OKOKOK
成绩
RankRankRank是有算别人的
RankRankRank | PersonPersonPerson | ScoreScoreScore | AAA | BBB | CCC |
---|---|---|---|---|---|
444 | 2017myself2017myself2017myself | 180180180 | 100100100 | 808080 | 000 |
555 | 2017zyc2017zyc2017zyc | 160160160 | 606060 | 100100100 | 000 |
111111 | 2017hzb2017hzb2017hzb | 140140140 | 606060 | 808080 | 000 |
151515 | 2017xxy2017xxy2017xxy | 115115115 | 151515 | 100100100 | 000 |
313131 | 2017xjq2017xjq2017xjq | 100100100 | 000 | 100100100 | 000 |
727272 | 2017lw2017lw2017lw | 303030 | 000 | 303030 | 000 |
878787 | 2017lrz2017lrz2017lrz | 555 | 000 | 555 | 000 |
939393 | 2017hjq2017hjq2017hjq | 000 | 000 | 000 | 000 |
正题
T1:P3365,jzoj3894−T1:P3365,jzoj3894-T1:P3365,jzoj3894−改造二叉树【LIS,BSTLIS,BSTLIS,BST】
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86648465
T2:jzoj3895−T2:jzoj3895-T2:jzoj3895−数字对【RMQ,GCD,RMQ,GCD,RMQ,GCD,二分答案,,,单调队列】
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86648570
T3:jzoj3896−T3:jzoj3896-T3:jzoj3896−战争游戏【tarjan,tarjan,tarjan,割点,,,点双联通分量】
博客链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/86648677
someofcodesome\ of\ codesome of code
T2 暴力
#include<cstdio>
#include<algorithm>
#define N 500010
using namespace std;
int n,a[N],maxs,ans[N],tot;
int main()
{freopen("data.in","r",stdin);freopen("data.ans","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)for(int j=i;j<=n;j++)if(j-i>=maxs){int mins=2147483647,flag=true;for(int k=i;k<=j;k++)mins=min(mins,a[k]);for(int k=i;k<=j;k++)if(a[k]%mins){flag=false;break;}if(flag&&j-i>maxs){maxs=j-i;ans[1]=i;tot=1;}else if(flag) ans[++tot]=i;}printf("%d %d\n",tot,maxs);for(int i=1;i<=tot;i++)printf("%d ",ans[i]);
}
T2 随机数据
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{freopen("data.in","w",stdout);srand(time(0));printf("500\n");for(int i=1;i<=500;i++)printf("%d ",2+rand()%1022);
}
T3 0分code
#include<cstdio>
#include<cstring>
#define N 50010
using namespace std;
struct node{int to,next;
}a[N*4];
int n,m,f[N],v[N],ls[N],tot,ans,s;
void addl(int x,int y)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;
}
int dfs(int x){if(v[x]) return 0;v[x]=true;f[x]=1;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;int k=dfs(y);if(x==s)ans+=f[x]*k;f[x]+=k;}return f[x];
}
int main()
{freopen("data.in","r",stdin);freopen("data.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);addl(x,y);addl(y,x);}for(int i=1;i<=n;i++){memset(v,0,sizeof(v));memset(f,0,sizeof(f));s=i;ans=0;dfs(i);printf("%d\n",ans);}
}
总结
看题预估分(60+80+0=140)
之后做题预估分(100+80+50=230)
结果(100+80+0=180)炸了
T1:看了会,没想法。然后去了趟厕所,然后就想到之前看Spaly题解的时候说BST的中序遍历是单调递增的,然后就求了一遍LIS求解。
T2:看了会,没具体想法。然后去了趟厕所,就想到了RMQ可以区间求gcd,结果没有预处理log就T飞了2个点
T3:最后二十分钟的时候写的50分暴力,本来没打算过样例,结果过了,然后就测了几个别的样例,也过了。结果T飞了
这次还行,没有翻车
-------------改题分界线-------------
T1:考场AC
T2:加个预处理就A了
T3:tarjan,不就是那个我最不理解的吗。现在一看好像还挺简单的。顺便把图论的不足给学了。问题不大