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 ...
随机推荐
- 纯手工打造简单分布式爬虫(Python)
前言 这次分享的文章是我<Python爬虫开发与项目实战>基础篇 第七章的内容,关于如何手工打造简单分布式爬虫 (如果大家对这本书感兴趣的话,可以看一下 试读样章),下面是文章的具体内容. ...
- 非Controller中调用Service
1. 新增文件 package com.library.common; import org.springframework.beans.BeansException; import or ...
- 学习总结------用JDBC连接MySQL
1.下载MySQL的JDBC驱动 地址:https://dev.mysql.com/downloads/connector/ 为了方便,直接就选择合适自己的压缩包 跳过登录,选择直接下载 下载完成后, ...
- Jmeter-WINDOWS下的配置部署
前提:已配置安装JDK环境及已部署TOMCAT. 解压apache-jmeter-2.9.zip文件至目录,我的是D:\Program Files目录. 点击我的电脑----属性----高级----环 ...
- cookie 与 session
cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据.一般情况下,Cookie通过HTTP headers从服务端返回到客户端.多数web程序都支持Co ...
- EJB系列 - 消息与MDB
什么是消息 松散耦合的异步通信过程 1. 面向消息的中间件(MOM): 消息发送者称为生产者; 存储消息的位置称为目的地; 接受消息的组件称为消费者 2. 消息模型: a. 点对点:目的地成为队列, ...
- 《JavaScript高级程序设计》笔记二
第二章 在HTML中使用JavaScript 要想把JavaScript放到网页中,就必须涉及到Web的核心语言HTML.向HTML页面中插入JavaScript的主要方法,就是使用<scrip ...
- Java程序设计---io流读取文件内容并将其逆值输出到控制台
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileR ...
- Java IO学习笔记(四)打印流
1.只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出.PrintWriter和PrintStre ...
- 简单地总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...