cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来。补了一下题,觉得其实也不是很难,主要是练的少。

L2-1:红色预警 并查集

我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难。
每次失去一个城市,重新计算过并查集,比较几个根节点,如果根节点增加了那么就是改变了连通性。

#include<cstdio>
#define N 505
#define M 5005
using namespace std;
int n,m,k,g,cnt,newcnt;
int f[N],u[M],v[M];
int find(int x)
{
if(f[x]!=x)
f[x]=find(f[x]);
return f[x];
}
void un(int a,int b)
{
int fa=find(a),fb=find(b);
if(fa!=fb)
f[fa]=fb;
}
void solve()
{
f[g]=-;
newcnt=;
for(int i=; i<n; i++)if(f[i]!=-)f[i]=i;
for(int i=; i<m; i++)
if(f[u[i]]!=-&&f[v[i]]!=-)
un(u[i],v[i]);
for(int i=; i<n; i++)if(f[i]==i)
newcnt++;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=; i<n; i++)f[i]=i;
for(int i=; i<m; i++)
{
scanf("%d%d",&u[i],&v[i]);
un(u[i],v[i]);
}
scanf("%d",&k);
for(int i=; i<n; i++)if(f[i]==i)
cnt++;
for(int i=; i<=k; i++)
{
scanf("%d",&g);
solve();
if(cnt<newcnt)printf("Red Alert: City %d is lost!\n",g);
else printf("City %d is lost.\n",g);
cnt=newcnt;
if(k==i&&k==n)printf("Game Over.");
}
}

  L2-2列车调度 最长上升子序列 O(nlogn)解法

这题题意是求1到n的一个排列里可以分成最少多少个下降子序列,如果做过导弹拦截那么容易地可以知道问题等价于求最长上升子序列,而且要用O(nlogn)的解法。
s[i]s[i]表示上升子序列的长度为i时最后一个数的最小值。
当i<j时,有s[i]<s[j],因为长度比较长的子序列,它末尾的值也肯定更大。
有了这个性质,就可以用二分查找了。
每次找出s里值小于a[i]的最大下标j,把s[j]更新为a[i]。

#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100005
int n,a[N],s[N],ans=;
int main()
{
scanf("%d",&n);
for(int i=; i<=n; i++)
{
s[i]=0x3f3f3f3f;
scanf("%d",&a[i]);
}
s[]=;
for(int i=; i<=n; i++)
{
int l=,r=i-;
while(l<r){
int m=(l+r)>>;
if(s[m]<=a[i])l=m+;
else r=m;
}
if(s[l]<=a[i]){
s[l+]=min(s[l+],a[i]);
ans=max(ans,l+);
}else{
s[l]=min(s[l],a[i]);
ans=max(ans,l);
}
}
printf("%d",ans);
}

L3-1 是否完全二叉搜索树

完全二叉树的概念:从上到下,每一层从左到右填充树的节点。
题意是给你n个数,从根节点开始每次和节点比较,如果更大,那就插入左子树,更小就插入右子树。
遍历的最后一个数字如果刚好是第n个节点,那就是完全二叉树。

#include<cstring>
#include<cstdio>
using namespace std;
int n,t,k,tree[<<];
void build(int w,int v)
{
if(tree[w]==-)tree[w]=v;
else if(v>tree[w]) build(w<<,v);
else build(w<<|,v);
}
int main()
{
memset(tree,-,sizeof tree);
scanf("%d",&n);
for(int i=; i<n; i++)
{
scanf("%d",&t);
build(,t);
}
k=;
for(int i=; i<=n; k++)
if(tree[k]!=-)
{
printf("%d%c",tree[k],i==n?'\n':' ');
i++;
}
if(k==n+)puts("YES");
else puts("NO");
}

  

【CCCC天梯赛决赛】的更多相关文章

  1. 记第一届 CCCC-团体程序设计天梯赛决赛 参赛

    其他都没什么,上午报道,下午比赛两个半小时,最后139分 但四我超遗憾的是,最后在做L3-1二叉搜索树,因为看到有辣么多人做出来,可是我没做出来啊 比赛结束后看了看其他两道当场吐血,L3-3直捣黄龙不 ...

  2. 记cccc天梯赛第三届决赛

        首先我很想知道,为什么我没有参加初赛,就可以去决赛,这个究竟有没有初赛,这真是未解之谜.     其次,会长说得不错,菜是原罪.不知道这次的表现能不能把我送去湘潭挑战赛....     我身边 ...

  3. 2016年团体程序设计天梯赛-决赛 L2-3. 互评成绩(25)

    学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩.系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩.本题就要求你编写这个互评系统的算分模块. ...

  4. 2016年团体程序设计天梯赛-决赛 L1-8. Left-pad(20)

    根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的Re ...

  5. 2016年团体程序设计天梯赛-决赛 L1-7. 到底是不是太胖了(10)

    据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.真实体重与标准体重误差在10%以内都是完美身材(即 |真实体重-标准体重| < 标准体重x10%).已知市斤 ...

  6. 2016年团体程序设计天梯赛-决赛 L1-6. 一帮一(15)

    “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中, ...

  7. 2016年团体程序设计天梯赛-决赛 L1-5. 是不是太胖了(5)

    据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.已知市斤是公斤的两倍.现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……) 输入格式: ...

  8. 2016年团体程序设计天梯赛-决赛 L1-3. 出租(20)

    下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对 ...

  9. 2016年团体程序设计天梯赛-决赛 L1-2. I Love GPLT(5)

    这道超级简单的题目没有任何输入. 你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了. 所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车. #i ...

随机推荐

  1. PAT 1011. A+B和C (15)

    给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B ...

  2. FSL - DualRegression

    Source:http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/DualRegression Research Overview A common need for anal ...

  3. java多线程系类:基础篇:08之join

    本章,会对Thread中join()方法进行介绍.涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_40)3. join()示例 转载请注明出处:http:// ...

  4. BZOJ 3295 【Cqoi2011】 动态逆序对

    Description 对于序列\(A\),它的逆序对数定义为满足\(i<j\),且\(A_i>A_j\)的数对\((i,j)\)的个数.给\(1\)到\(n\)的一个排列,按照某种顺序依 ...

  5. IE8和W3C标准下IFRAME刷新和URL的区别

    一个页面中包含了一个iframe,我们要刷新这个iframe的情况 url在IE8和W3C以及IE11的区别如下: URL使用相对路径,绝对路径比如http://localhost:5568/替换成I ...

  6. NOI2018准备 Day11

    今天7点半到9点我都不知道自己在干啥, 一共A了3道题,2道钻石,1道大师. 下午调一道线段树3个小时没调出来,一个单调栈2小时没搞出来...... 学了个算法:求极大子矩阵. 昨天定的目标是学指针, ...

  7. hashset hastable dictionary concurrentdictionary区别

    1.HashTable 哈希表(HashTable)表示键/值对的集合.在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现 ...

  8. 前端见微知著番外篇:GIT舍我其谁?

    在上一篇中,我们讲到了利用纯UI的软件如何实现代码的提交.但是在MAC机器上,是没有turtoiseGit这类软件的,所以利用命令行的方式就是我们的首选了. 下面我们来描述两种主要的Git使用场景: ...

  9. Use Dapper ORM With ASP.NET Core

    Dapper.NET is not just another ORM tool, it's considered as the king of ORM. Because it's fast, easy ...

  10. BI的相关问题[转]

    什么是BI? Business Intelligence(BI) = Data Warehouse(DW) + OLAP + Data Mining(DM) 商业智能=数据仓库+联机分析+数据挖掘 做 ...