AtCoder Beginner Contest 068
A - ABCxxx
题意:
给出n,输出“ABCn”就可以了,纯水题。
B - Break Number
题意:
给出n,找出从1到n的闭区间内能够被2整除最多次的数。
思路:
直接模拟。
代码:
#include <stdio.h>
#include <string.h> int main()
{
int n; scanf("%d",&n); int maxn = ;
int ans = ; for (int i = ;i <= n;i++)
{
int tmp = i;
int cnt = ; while (tmp % == )
{
tmp /= ;
cnt++;
} if (cnt > maxn)
{
maxn = cnt;
ans = i;
}
} printf("%d",ans); return ;
}
C - Cat Snuke and a Voyage
题意:
有n个城市,其中第一个和第n个城市是不直接相连的。接下来给出m个关系a,b,表示有m种航线,a可以单向到b。问从1到n可否只乘坐2条航线。
思路:
我的思路是bfs搜一遍,如果dis[1] = 0,看看那么dis[n] == 2?
但是有更简洁的思路,那么就是用floyed算法的思想,有向图的传递闭包。用两个数组from和to,当1到k有航线的时候,from[k] = 1;当k到n有航线的时候,to[k] = 1。则当from[i]和to[i]同时为1的时候,说明可以只乘坐两条航线。
代码:
bfs()版本
#include <stdio.h>
#include <vector>
#include <queue>
#include <string.h>
using namespace std; int d[];
const int inf = ;
vector<int> v[]; void bfs(void)
{
d[] = ; queue<int> q; q.push(); while (!q.empty())
{
int t = q.front();q.pop(); for (int i = ;i < v[t].size();i++)
{
int tt = v[t][i]; if (d[t] + < d[tt])
{
d[tt] = d[t] + ; q.push(tt);
}
}
}
} int main()
{
memset(d,inf,sizeof(d)); int n,m; scanf("%d%d",&n,&m); for (int i = ;i <= m;i++)
{
int a,b; scanf("%d%d",&a,&b); v[a].push_back(b);
} bfs(); if (d[n] == ) printf("POSSIBLE\n");
else printf("IMPOSSIBLE\n"); return ;
}
floyed版本:
#include <stdio.h>
#include <string.h> bool from[];
bool to[]; int main()
{
int n,m; scanf("%d%d",&n,&m); for (int i = ;i < m;i++)
{
int a,b; scanf("%d%d",&a,&b); if (a == ) from[b] = ;
if (b == n) to[a] = ;
} bool ans = ; for (int i = ;i < n;i++)
{
if (from[i] && to[i])
{
ans = ;
break;
}
} if (ans) printf("POSSIBLE\n");
else printf("IMPOSSIBLE\n"); return ;
}
D - Decrease (Contestant ver.)
题意:
现在有一个包含n个非负整数的序列,现在执行下列操作直到数组中最大的元素小于n。
operation:找出数组中最大的元素,使之减去n,其余的所有元素加1。
可以证明经过有限次的操作可以使得数组中最大的元素小于或者等于n-1。
现在给出一个k,找出一个数列满足刚好经过k次操作后满足最大元素小于等于n-1。
思路:
看题解补的,考虑逆序操作,即数组中的一个元素加n,并且加后保证这个元素是数组中最大的,然后其它元素减1,所有的元素均为非负数。
考虑0,1,……,n-1这个序列,是满足最后的条件的,那么如果经过k次逆序操作后,数组中都是非负数,那么就这个数组就是我们要求的数组。
0,1,……,n-1这个数组经过n次操作后,可以变成1,2,……,n,2*n次操作后可以变成2,3,……,n+1。不难发现,经过n次操作,数组中的所有元素都会增加1。所以最终我们求的序列就是0~n-1所有的元素增加 k / n,然后暴力模拟 k % n次操作后得到的序列,它一定是合法的。
n如何选取呢,直接选取最大的就可以了,即50。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; long long a[]; int main()
{
long long k; scanf("%lld",&k); for (int i = ;i < ;i++)
a[i] = i; for (int i = ;i < ;i++)
{
a[i] += k / ;
} for (int i = ;i < k % ;i++)
{
sort(a,a+); a[] += ; for (int i = ;i < ;i++)
a[i]--;
} printf("50\n"); for (int i = ;i < ;i++) printf("%lld ",a[i]);
printf("%lld",a[]);
return ;
}
AtCoder Beginner Contest 068的更多相关文章
- AtCoder Beginner Contest 068 ABCD题
A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
随机推荐
- css让文字在一行内显示
1.例如 p元素,里面的文字不换行显示,超出部分不隐藏 p{ width:100px; word-break:keep-all; white-space:nowrap; } 2.例如 p元素,里面的文 ...
- 关系数据标准语言SQL之数据查询
数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,该语句具有灵活的使用方式和丰富的功能. 其一般格式为 select [all | distinct]<目标表达式>[, ...
- 流畅的python学习笔记:第一章
这一章中作者简要的介绍了python数据模型,主要是python的一些特殊方法.比如__len__, __getitem__. 并用一个纸牌的程序来讲解了这些方法 首先介绍下Tuple和nametup ...
- java基础:简单实现线程池
前段时间自己研究了下线程池的实现原理,通过一些源码对比,发现其实核心的东西不难,于是抽丝剥茧,决定自己实现一个简单线程池,当自已实现了出一个线程池后.发现原来那么高大上的东西也可以这么简单. 先上原理 ...
- angular js 和 dajango 标签{{}} 冲突
问题描述: 如果在django的模板中使用{{ }},不会被angularjs 识别. 解决办法: >1.5 的django中,将需要angularjs解释的{{expression}}放在 v ...
- Kafka 源代码分析.
这里记录kafka源代码笔记.(代码版本是0.8.2.1) kafka的源代码如何下载.这里简单说一下. git clone https://git-wip-us.apache.org/repos/a ...
- Chapter 7. Design and Performance
本章将对MPEG4及H.264的实现细节进行讲解和比对. Motion Estimation 衡量运动估计的好坏有三种函数(第228页):MSE,MAE和SAE,其中由于SAE运算速度最快所以采用的最 ...
- 【Android Developers Training】 103. 查询当前地点
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Linux文件属性上
文件属性概述(ls -lhi) linux里一切皆文件Linux系统中的文件或目录的属性主要包括:索引节点(inode),文件类型,权限属性,链接数,所归属的用户和用户组,最近修改时间等内容: 解释: ...
- Android源码博文集锦1
Android精选源码 功能齐全的实用Android视频播放器 实现滑动到底部,加载更多RecyclerViewDemo 使用Kotlin语言编写Android MVP案例KotlinMVPDemo ...