Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round
1)

全场题解

菜鸡只会A+B+C,呈上题解:

A. Bear and Big Brother

题意:我也没看太清,就是给你两个10以内的数a,b。a每天乘以3,b每天乘以2,求多少天后a大于b。

思路:应该是有公式的,不过看到数据这么小直接暴力乘求解。官方题解貌似就是这样,数据小就是水题。

const int N=1e3+10;
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
if(a>b) puts("0");
else if(a==b) puts("1");
else
{
for(int i=1;;i++)
{
a*=3,b*=2;
if(a>b) {printf("%d\n",i);
break;}
}
}
}
}

B. Bear and
Friendship Condition

题意:如果一个人a与b是好朋友,b又和c是好朋友,那么a和c也应该是好朋友,否则输出NO。现在给你人数n,m种关系,判断YES or NO!

思路:被题解误导了一下,一上午没做出来,中午打会球回来秒A了。这种关系是可以传递的,我们可以用并查集将有关联的集结起来,然后求出每个集合的人数。题目说不会有重边,那么在输出的时候可以求出每个人与多少个人是好朋友,那么假如一个集合的人数为k,那么这k个人肯定要和其余k-1个人是好朋友啊,直接判断就行了。题解给的dfs可能我dfs不是很擅长。

const int N=150000+10;
int n,m,f[N],num[N],sum[N];
int find(int x)
{
return f[x]==-1?x:f[x]=find(f[x]);
}
void solve()
{
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++)
{
int x=find(i);
sum[x]++;
}
for(int i=1;i<=n;i++)
{
int x=find(i);
if(num[i]!=sum[x]-1)
{
puts("NO");
return ;
}
}
puts("YES");
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(num,0,sizeof(num));
memset(f,-1,sizeof(f));
int u,v;
for(int i=0; i<m; i++)
{
scanf("%d%d",&u,&v);
int uu=find(u),vv=find(v);
if(uu!=vv) f[uu]=vv;
num[u]++,num[v]++;
}
solve();
}
return 0;
}

C.
Bear and Different Names

怎么感觉C题比B题还简单,挺有意思的,一个模拟构造就行了。

题意:n个人排成一列,每连续k个人组成一个团,一个团的战斗力高要求这k个人姓名都不相同,否则这个团的战斗力低。现在给你1到n-k+1这些团战斗力高低之分,要你找到符合条件的这n个人的名字。数据50以内。

思路:我们可以观察到两个相邻的图只有最前面的那个人与最后面的名字不同,也就是说重复了k-2个人。那么我们可以初始化n个互不相同的字符串(从A开始计数即可).如果当前团是NO,说明有重复的,我们直接让最后一个人的名字等于最前一个人的就行了,下一个团就不包括最前一个人了。这样只要是NO的只需把当前团最后一个人的名字改成当前团最前那个人的就行了。

string s[55]={"0","A", "B", "C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"Aa","Ab","Ac","Ad","Ae","Af","Ag","Ah","Ia","Ja","Ka","La","Ma","Na","Oa", "Pa", "Qa", "Ra","Sa","Ta","Ua","Va","Wa", "Xa","Ya","Za" };
string str,ans[52];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
for(int i=1;i<=n;i++)
ans[i]=s[i];
for(int i=1;i<=n-k+1;i++)
{
cin>>str;
if(str[0]=='N') ans[i+k-1]=ans[i];
}
for(int i=1;i<=n;i++)
cout<<ans[i]<<" ";
cout<<endl;
}
return 0;
}

D题又是一个树搜索,让我这种菜鸡情何以堪1!!!!11

Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) 菜鸡只会ABC!的更多相关文章

  1. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C. Bear and Different Names 贪心

    C. Bear and Different Names 题目连接: http://codeforces.com/contest/791/problem/C Description In the arm ...

  2. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) B - Bear and Friendship Condition 水题

    B. Bear and Friendship Condition 题目连接: http://codeforces.com/contest/791/problem/B Description Bear ...

  3. 【树形dp】Codeforces Round #405 (rated, Div. 1, based on VK Cup 2017 Round 1) B. Bear and Tree Jumps

    我们要统计的答案是sigma([L/K]),L为路径的长度,中括号表示上取整. [L/K]化简一下就是(L+f(L,K))/K,f(L,K)表示长度为L的路径要想达到K的整数倍,还要加上多少. 于是, ...

  4. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)

    A 模拟 B 发现对于每个连通块,只有为完全图才成立,然后就dfs C 构造 想了20分钟才会,一开始想偏了,以为要利用相邻NO YES的关系再枚举,其实不难.. 考虑对于顺序枚举每一个NO/YES, ...

  5. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)A B C 水 并查集 思路

    A. Bear and Big Brother time limit per test 1 second memory limit per test 256 megabytes input stand ...

  6. 【构造】Codeforces Round #405 (rated, Div. 1, based on VK Cup 2017 Round 1) A. Bear and Different Names

    如果某个位置i是Y,直接直到i+m-1为止填上新的数字. 如果是N,直接把a[i+m-1]填和a[i]相同即可,这样不影响其他段的答案. 当然如果前面没有过Y的话,都填上0就行了. #include& ...

  7. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) E

    Description Bear Limak prepares problems for a programming competition. Of course, it would be unpro ...

  8. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) D

    Description A tree is an undirected connected graph without cycles. The distance between two vertice ...

  9. Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C

    Description In the army, it isn't easy to form a group of soldiers that will be effective on the bat ...

随机推荐

  1. ES6中新增的字符串方法

    实例方法:includes(), startsWith(), endsWith() 传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供 ...

  2. ES-windos环境搭建(3)-kibana

    简介 Kibana是一个为ElasticSearch 提供的数据分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作. 下载 打开elasticseach官网,单击downloa ...

  3. jquery中each的3种遍历方法

    1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function  ...

  4. android 从contentView中删除view

    1. ((ViewGroup)view.getParent()).removeView(view) 2. ViewGroup rootView = (ViewGroup) this.findViewB ...

  5. HDU 3586 Information Disturbing (树形DP,二分)

    题意: 给定一个敌人的通信系统,是一棵树形,每个节点是一个敌人士兵,根节点是commander,叶子是前线,我们的目的是使得敌人的前线无法将消息传到commander,需要切断一些边,切断每条边需要一 ...

  6. 洛谷 P2362 围栏木桩

    题目描述 某农场有一个由按编号排列的n根木桩构成的首尾不相连的围栏.现要在这个围栏中选取一些木桩,按照原有的编号次序排列之后,这些木桩高度成一个升序序列.所谓的升序序列就是序列中的任何一个数都不小于它 ...

  7. htmlunit抓取js执行后的网页源码

    上次我不是写了一个自动抓取博客访问量吗 (点击打开链接) 可是昨天晚上我又运行的时候,发现不能用了.. 运行了几次 发现使用URLConnection 得到的网页源码和浏览器直接查看的不同. URLC ...

  8. iOS,APP退到后台,获取推送成功的内容并且语音播报内容。

    老铁,我今天忙了一下午就为解决这个问题,网上有一些方法,说了一堆关于这个挂到后台收到推送并且获得推送内容的问题,有很多人都说APP挂到后台一会就被杀死.但实际上可以有办法解决的. WechatIMG3 ...

  9. 并查集+思维——The Door Problem

    一.问题描述(题目链接) 有n个门和m个开关,每个开关可以控制任意多的门,每个门严格的只有两个开关控制,问能否通过操作某些开关使得所有门都打开.(给出门的初始状态). 二.问题分析 大部分开关问题首先 ...

  10. C# DateTime.Now函数

    // 2008年4月24日 System.DateTime.Now.ToString( " D " );// 2008-4-24 System.DateTime.Now.ToStr ...