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 ...
随机推荐
- 在linux系统下安装redis
去官网找到合适的版本,可以直接下载下来,再用fxp上传,也可以直接以下面这种方式下载:$ wget http://download.redis.io/releases/redis-3.2.9.tar. ...
- 伞兵(Paratroopers)
伞兵(Paratroopers) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 公元 2500 年,地球和火星之间爆发了一场战争.最近,地球军队指挥官获悉火星入侵者将派一些伞兵来摧毁地 ...
- 【LeetCode】89. Gray Code
题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...
- Hibernate错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
报错:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execu ...
- CSS3学习系列之布局样式(二)
使用盒布局 在CSS3中,通过box属性来使用盒布局,例子如下: <!DOCTYPE html> <html lang="en"> <head> ...
- Spring 加载静态资源
<mvc:default-servlet-handler/> JSP 中通过标签加载js文件或者link标签加载css文件等静态资源时要在springmvc的xml文件中配置以上设置请求就 ...
- asp.net 在新的页面打开的问题。
在自己写的代码中,有些页面需要在新的页面中打开,基于页面的数据十分繁琐,一直没有找到方法.通过自己不断的测试,找到了一个方法. 后台页面中 for (int j = 0; j < listMod ...
- Unreal Engine 4 Radiant UI 入门教程(零)在场景中摆放网页
相关的学习资源: https://forums.unrealengine.com/showthread.php?12097-PLUGIN-RadiantUI-SDK-UIs-HUDs-Interact ...
- raft如何实现Linearizable Read
Linearizable Read通俗来讲,就是读请求需要读到最新的已经commit的数据,不会读到老数据. 对于使用raft协议来保证多副本强一致的系统中,读写请求都可以通过走一次raft协议来满足 ...
- 详解Java API之正则表达式
正则表达式描述的是一种规则,符合这种限定规则的字符串我们认为它某种满足条件的,是我们所需的.在正则表达式中,主要有两种字符,一种描述的是普通的字符,另一种描述的是元字符.其中元字符是整个正则表达式的核 ...