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 ...
随机推荐
- ViewPager实现无限轮播踩坑记
最近笔者想通过ViewPager来实现一个广告Banner,并实现无限轮播的效果,但是在这个过程中踩了不少的坑,听我慢慢道来.如果大家有遇到和我一样的情况,可以参考我的解决方法,没有那就更好,如果针对 ...
- js 过滤敏感词 ,可将带有标点符号的敏感词过滤掉
function transSensitive(content) { // var Sensitive = H.getStorage("Sensitive");//敏感词数组 va ...
- [USACO09MAR]地震损失2Earthquake Damage 2
地震破坏 时间限制: 1 Sec 内存限制: 128 MB 题目描述 威斯康星发生了一场地震!约翰的牧场遭到了打击,有一些牛棚变成了废墟,如果一间牛棚遭到 了破坏,那么所有和它相连的道路都不能使用了 ...
- Builder模式详解及其在Android开发中的应用
一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比 ...
- Java垃圾回收总结
基本概念 垃圾回收器(Garbage Collector )是JVM非常重要的一个组成部分,主要用于自动化的内存管理.相比手动的内存管理,自动化的内存管理大大简化了程序员的开发难度并且更加安全,避免了 ...
- github用法小结
共享仓库 bare 裸仓库 生成裸仓库时必须以.git结尾. 仓库就相当于一个服务器 ### 创建远程仓库 1. 创建以.git结尾的目录mkdir repo.git 2 ...
- jQuery星级评分插件
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="Con ...
- 微信支付之统一下单--JAVA版
都说微信支付有些坑,都抱怨微信支付的文档太烂,一会APPId,一会商户id,还有appsecret,支付API秘钥让你傻傻分不清楚,还有这里大写那里小写,几种标准,让你眼花缭乱.没错,这就是很多技术团 ...
- OpenCV学习1-----打开摄像头并在画面上添加水印
一直对视频或者图像添加水印很感兴趣,查找资料后用OpenCV尝试了一下. 记录下来. 1.首先是打开摄像头. 找到OpenCV官方文档给出的例子. 例子中实现的是,打开摄像头,并对画面进行高斯滤波,使 ...
- UML中关联(Association)和依赖(Dependency)的区别
原文转自:http://blog.csdn.net/metasearch/article/details/2334853 在UMLCHINA精华区,看到了一些关联和依赖的讨论,似乎越讲越糊涂.我想谈一 ...