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 ...
随机推荐
- Chapter 3:Speech Production and Perception
作者:桂. 时间:2017-05-24 09:09:36 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 一. ...
- String 类问题发现与解决
1.在代码中出现:String t = null; t.length(); 执行后:控制台报:java.lang.NullPointerException 原因:Java中,null是一个关键字,用来 ...
- 快速排序(Quicksort)的Javascript实现
日本程序员norahiko,写了一个排序算法的动画演示,非常有趣. 这个周末,我就用它当做教材,好好学习了一下各种排序算法. 排序算法(Sorting algorithm)是计算机科学最古老.最基本的 ...
- 【Windows 10 应用开发】自定义快捷键
上一篇鸟文中,老周通过史无前例的代码向各位 demo 了访问键的用法(即 Alt + 某某).不过,大伙伴们一定会发现,访问键毕竟限制较大,不太灵活,也不好发挥,于是就需要自定义快捷键了. 其实,自定 ...
- Thread初探
Thread初探 前言 以前大家写的都是单线程的程序,全是在main函数中调用方法,可以清楚的看到它的效率是特别低的,就像python中使用单线程取爬一个网站,可以说能让你等的吐血,因为数据量实在太大 ...
- EJB系列 - 会话Bean基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-session-bean/ 什么是会话 有限的时间周期内,客户端和服务器之间的连接 为什么使用 ...
- JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构
JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...
- 关于MATLAB处理大数据坐标文件2017527
第一次提交数据: 今天用了8个特征,加上的这一个特征是 从3000条测试数据中测试失败的数据总结出来的树的数目为50再次使用3000条测试数据测试结果-- 结果不错: 99%但是运行官网数据结果分数- ...
- Java垃圾回收总结
基本概念 垃圾回收器(Garbage Collector )是JVM非常重要的一个组成部分,主要用于自动化的内存管理.相比手动的内存管理,自动化的内存管理大大简化了程序员的开发难度并且更加安全,避免了 ...
- ES6的十大特性和认知
---恢复内容开始--- ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率.本文主要针对E ...