10.19NOIP模拟赛(DAY2)
/*
正解O(n)尺取法orz
我写的二分答案。本来以为会被卡成暴力分......
这个-'0'-48是我写的吗........我怎么不记得...
*/
#include<bits\stdc++.h> #define N 1000001
#define inf 0x3f3f3f3f using namespace std;
int n,m,ans,cnt,flag;
char s1[N],s2[N],cur[N];
int vis[][N],v[]; bool judge(int l,int len)
{
for(int i=;i<=cnt;i++)
if(vis[cur[i]-''-][l+len-]-vis[cur[i]-''-][l-]==) return false;
return true;
} int main()
{
freopen("english.in","r",stdin);
freopen("english.out","w",stdout);
scanf("%d",&n);
scanf("%s",s1);
for(int i=;i<n;i++) vis[s1[i]-''-][i]=;
for(int j='a';j<='z';j++) for(int i=;i<=n;i++)
{
if(s1[i]==j) vis[j-''-][i]=vis[j-''-][i-]+;
else vis[j-''-][i]=vis[j-''-][i-];
}
scanf("%s",s2);
int len=strlen(s2);
for(int i=;i<len;i++)
if(!v[s2[i]-''-]) v[s2[i]-''-]=,cur[++cnt]=s2[i];
for(int i=n-len;i<n;i++) if(s1[i]!=s2[i]) flag=;
if(!flag)
{
printf("%d\n",len);
return ;
}
int l,r,mid;ans=n;
for(int i=;i<=n-len;i++)
{
l=,r=ans;
while(l<=r)
{
int mid=(l+r)>>;
if(judge(i,mid)) ans=min(ans,mid),r=mid-;
else l=mid+;
}
if(ans==len) break;
}
printf("%d\n",ans);
fclose(stdin);fclose(stdout);
return ;
}
/*
首先如果数列最大最小差大于1是显然不行
如果都为n-1显然可以
其余情况嘛
有n个人,A说,你们一群人中我看到了3种颜色。B说,我比你牛逼,我看到了四种!
这说明了什么?想一想就能明白,说明颜色一定有4种,并且A头顶上的颜色一定跟所有人不同。
因此所有较小的数都是一种与众不同的颜色,较大的数这个集合里肯定至少两两相同。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> #define N 1000007 using namespace std;
int n,x,y,ans,cnt1,cnt2;
int a[N]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
freopen("hat.in","r",stdin);
freopen("hat.out","w",stdout);
int T;T=read();
while(T--)
{
n=read();a[]=read();cnt1=;cnt2=;
x=;y=;
for(int i=;i<=n;i++)
{
a[i]=read();
if(a[i]!=a[i-]) x=a[i],y=a[i-];
}
if(x== && y==){printf("Yes\n");continue;}
if(x>y) swap(x,y);
for(int i=;i<=n;i++)
{
if(a[i]==x) cnt1++;
if(a[i]==y) cnt2++;
}
if(cnt1+cnt2!=n)
{
printf("Yes\n");
continue;
}
if(cnt2==) printf("Yes\n");
else if(cnt2/>=y-cnt1) printf("No\n");
else printf("Yes\n");
}
fclose(stdin);fclose(stdout);
return ;
}
/*
严格次小生成树模板
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm> #define Maxn 300010 using namespace std; struct edge
{
int to,w,next;
} p[Maxn];
int head[Maxn/],tot;
void addedge(int a,int b,int c)
{
p[tot].to=b;
p[tot].w=c;
p[tot].next=head[a];
head[a]=tot++;
} struct line
{
int u,v,w;
bool operator<(const line &a)const
{
return w<a.w;
}
} q[Maxn]; int vis[Maxn];
int fa[Maxn/]; int findset(int x)
{
return fa[x]==x?x:(fa[x]=findset(fa[x]));
} int unionset(int a,int b)
{
return fa[findset(a)]=findset(b);
} int dep[Maxn/];
int f[Maxn/][],g[Maxn/][],h[Maxn/][];
void dfs(int u,int fa)
{
f[u][]=fa;
dep[u]=dep[fa]+;
for(int i=head[u]; i!=-; i=p[i].next)
{
int v=p[i].to;
if(v!=fa)
{
g[v][]=p[i].w;
h[v][]=-;
dfs(v,u);
}
}
} void ck1(int &a,int &b,int c,int d,int e,int f)
{
if(c==e)
{
a=c;
b=max(d,f);
return;
}
if(c>e)
{
swap(c,e);
swap(d,f);
}
a=e;
b=max(c,f);
}
int ck2(int lx,int ln,int w)
{
if(w==lx) return w-ln;
return w-lx;
}
void ck3(int &lx,int &ln,int u,int t)
{
if(g[u][t]==lx) ln=max(ln,h[u][t]);
else if(g[u][t]<lx) ln=max(ln,g[u][t]);
else
{
ln=(lx,h[u][t]);
lx=g[u][t];
}
}
void init(int n)
{
dfs(,);
for(int j=; j<; j++)
for(int i=; i<=n; i++)
{
if(!f[i][j]) f[i][j+]=;
else
{
f[i][j+]=f[f[i][j]][j];
ck1(g[i][j+],h[i][j+],g[i][j],h[i][j],g[f[i][j]][j],h[f[i][j]][j]);
}
}
}
int LCA(int u,int v,int w)
{
int lx=-,ln=-;
if(dep[u]<dep[v]) swap(u,v);
int df=dep[u]-dep[v],t=;
while(df)
{
if(df&)
{
ck3(lx,ln,u,t);
u=f[u][t];
}
t++;
df>>=;
}
if(u==v) return ck2(lx,ln,w);
for(int i=; i>=; i--)
{
if(f[u][i]!=f[v][i])
{
ck3(lx,ln,u,i);
ck3(lx,ln,v,i);
u=f[u][i];
v=f[v][i];
}
}
ck3(lx,ln,u,);
ck3(lx,ln,v,);
return ck2(lx,ln,w);
}
int main()
{
freopen("tree.in","r",stdin);
freopen("tree.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
for(int i=; i<m; i++)
scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w);
sort(q,q+m);
for(int i=; i<=n; i++) fa[i]=i;
memset(head,-,sizeof head);
memset(vis,,sizeof vis);
tot=;
int cnt=;
long long ans=;
for(int i=; i<m; i++)
{
int u=q[i].u,v=q[i].v;
if(findset(u)==findset(v)) continue;
unionset(u,v);
vis[i]=;
addedge(u,v,q[i].w);
addedge(v,u,q[i].w);
ans+=q[i].w;
if(++cnt==n-) break;
}
init(n);
int z=0x3f3f3f3f;
for(int i=; i<m; i++)
if(!vis[i]) z=min(z,LCA(q[i].u,q[i].v,q[i].w));
cout<<ans+z<<endl;
return ;
}
10.19NOIP模拟赛(DAY2)的更多相关文章
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #55 - Streaming #6 (NOIP模拟赛day2)
A.九九归一 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2355%20-%20Streaming%20%236%20(NOIP模拟赛day2)/九九归一 题 ...
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- [10.12模拟赛] 老大 (二分/树的直径/树形dp)
[10.12模拟赛] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图), ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- 6.19noip模拟赛总结
昨天进行了noip的模拟赛,我这个蒟蒻又是垫底.... T1 第一感觉就是贪心,从高到低排序,然后每次都将恰好满足当前条件的人数分成一组,然后移动到下一个未分组的单位上,贴代码 #include< ...
- 2018.10.17NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
随机推荐
- Linux学习笔记02
1.文件处理命令:touch touch [文件目录][文件名] 如:touch /tmp/jiejie/jiejie.conf2.文件处理命令:cat cat 参数[文件目录][文件名]//显示文件 ...
- DP 简单题目练习
ZOJ 1234 这道题目我表示也还不是特别能理解....还是太菜了T T 从后往前思考,因为只要后面有多的数在,那么C肯定是存在的,只要考虑是否把前两个数加在一起作为badness值这样两种情况来考 ...
- IOS7状态栏StatusBar官方标准适配方法
IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...
- Balance POJ - 1837 地推
Gigel has a strange "balance" and he wants to poise it. Actually, the device is different ...
- echarts模拟highcharts实现折线图的虚实转换
多的不说直接上代码: <html><html lang="en"><head> <meta charset="utf-8&quo ...
- 【.Net 学习系列】-- .Net 指定时间段内定时执行的Windows服务(System.Threading.Thread)
创建一个Windows服务项目:解决方案(右击)——> 添加 ——> 新建项目——>项目类型选择Windows——>模板选择Windows服务 ,如图: 编写Windows服务 ...
- the apple code
i know you will forget but 9 you will
- Ubuntu下Zabbix安装及使用问题
1.configure: error: MySQL library not found MySQL library not found root@kallen:~# apt-get install l ...
- web常见之音乐播放器
代码来源于:这位Github小伙伴,我只负责解说! 效果图如下: 先上HTML代码 源码: <!DOCTYPE html> <html> <head> <me ...
- [Canvas画图] 藏图阁(16) 人体穴位
本节目标: 趁着今天是愚人节.阿伟决定来重温一下学医的那段日子. 有那么一段时间, 阿伟对武侠小说和医学同一时候产生了浓厚的兴趣,当时最想学的就是葵花点穴手, 一阳指之类的点穴功夫.轻轻一点.就能把别 ...