博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hzwer第五套模拟赛
阅读量:4562 次
发布时间:2019-06-08

本文共 2048 字,大约阅读时间需要 6 分钟。

T1 沙雕题

T2

我们令sum[i][j]表示i字母在j之前出现的次数,显然,我们要使得选择区间i,j,字母a,b使得(sum[a,i]-sum[a,j])-(sum[b,i]-sum[b,j])的值最大。我们转换一下:
(sum[a,i]-sum[b,i])-(sum[a,j]-sum[b,j])
我们显然要求(sum[a,j]-sum[b,j])的最小值,这样我们就可以愉快的dp了!

收获:

暴力dp的式子往往通过移项等等操作就能优化一下。

T3

是一道神题:我们考虑暴力:枚举每一朵花,bfs找到其能覆盖的点。但是这棵树有5000000个点!显然我们不能求出每一朵花能到达的点。我们考虑一下性质:如果一个点是两个相距最远的花都能到达的点,那么这个点就一定能到达所有的花:显然得证。考虑找两颗相距最远的花:我们可以通过寻找树的直径的方式来找:两遍bfs就可以了。

code:

// luogu-judger-enable-o2// luogu-judger-enable-o2#include
#include
#include
#include
#include
#include
//#define int long long using namespace std;const int maxn=5000006;int head[maxn*2],cur,cnt,ans;struct hzw{ int to,next; }e[maxn*2]; int n,k,dd,d[maxn],flo[maxn];inline void add(int a,int b){ e[cur].to=b; e[cur].next=head[a]; head[a]=cur++;}typedef pair
p;bool vis[maxn],pan[maxn];int fina,mx,col[maxn];inline void bfs1(int now){ queue

q; memset(vis,0,sizeof(vis)); fina=0; mx=-23333; q.push(p(now,0)); while (!q.empty()) { p all=q.front(); q.pop(); int s=all.first,cost=all.second; vis[s]=1; if (pan[s]&&cost>mx) { mx=cost; fina=s; } for (int i=head[s];i!=-1;i=e[i].next) { int vv=e[i].to; if (vis[e[i].to]) continue; q.push(p(e[i].to,cost+1)); } }}inline void bfs2(int now){ queue

q; memset(vis,0,sizeof(vis)); mx=-23333; q.push(p(now,0)); while (!q.empty()) { p all=q.front(); q.pop(); int s=all.first,cost=all.second; vis[s]=1; if (cost<=dd) { col[s]++; } for (int i=head[s];i!=-1;i=e[i].next) { int vv=e[i].to; if (vis[e[i].to]) continue; q.push(p(e[i].to,cost+1)); } }}signed main(){ // freopen("blossom.in","r",stdin);// freopen("blossom.out","w",stdout); memset(head,-1,sizeof(head)); cin>>n>>k>>dd; for (int i=1;i<=k;++i) { scanf("%d",&flo[++cnt]); pan[flo[cnt]]=1; } for (int i=1,a,b;i<=n-1;++i) { scanf("%d%d",&a,&b); add(a,b); add(b,a); } bfs1(1); int tmp=fina; bfs1(fina); bfs2(fina); bfs2(tmp); for (int i=1;i<=n;++i) { if (col[i]==2) ans++; } cout<

收获:一些看似不可能维护的信息可以考虑观察性质,用局部代替整体

转载于:https://www.cnblogs.com/bullshit/p/9767697.html

你可能感兴趣的文章
旋转图像
查看>>
每日一小练——数值自乘递归解
查看>>
qq登陆错误提示
查看>>
bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维 + 二进制
查看>>
没写完,没调完,咕咕咕的代码
查看>>
Android Studio使用技巧:导出jar包
查看>>
Problem E. TeaTree - HDU - 6430 (树的启发式合并)
查看>>
Kafka序列化和反序列化与示例
查看>>
win10下VS2010中文输入法切换为英文卡死
查看>>
retinex相关代码汇总
查看>>
Cortex-M3 异常返回值EXC_RETURN
查看>>
kettle 转换字段遇到问题(couldn't get row from result set)——摘
查看>>
nginx首页根据IP跳转
查看>>
【2019-08-20】有点目标,有点计划,有点目的
查看>>
【2019-09-10】美,真的跟年龄无关
查看>>
【2019-09-28】少,但更好
查看>>
【2019-09-13】耐心观察是一种技能
查看>>
mysql数据库2-常用命令
查看>>
安卓开发环境搭建(转)
查看>>
Harris角点检测
查看>>