摘要

  本文主要给出了2018 ACM-ICPC Asia Beijing Regional Contest的部分题解,意即熟悉区域赛题型,保持比赛感觉。


Jin Yong’s Wukong Ranking List

题意

输入关系组数n和n组关系,每组关系是s1 > s2,问第一出现矛盾的组,或者没有矛盾就输出0.

解题思路

第一感觉是拓扑排序,未完,又写了一个深搜的传递闭包,1 A,和2018年河南省赛的题很像。

代码

 #include <cstdio>
#include <map>
#include <cstring>
#include <string>
#include <iostream>
using namespace std; const int maxn = ; int e[maxn][maxn];
int n, r;
bool f;
map<string, int> mp; void F(int a, int u) {
//printf("%d %d\n", a, u);
if(e[u][a]) {
f = ;
return;
}
e[a][u] = ;
for(int i = ; i < r; i++) {
if(e[u][i]) {
F(a, i);
if(f)
return;
}
}
} int main()
{
char s1[maxn], s2[maxn];
string s3, s4, s5, s6;
while(scanf("%d", &n) != EOF) {
mp.clear();
memset(e, , sizeof(e));
r = ;
f = ; for(int i = ; i < n; i++) {
scanf("%s%s", s1, s2);
s3 = s1;
if(mp.find(s3) == mp.end()) {
mp[s3] = r++;
}
s4 = s2;
if(mp.find(s4) == mp.end()) {
mp[s4] = r++;
}
if(f == ) {
F(mp[s3], mp[s4]);
if(f == ) {
s5 = s3;
s6 = s4;
}
}
}
if(f)
cout<<s5<<" "<<s6<<endl;
else
printf("0\n");
}
return ;
}

Palindromes

题意

输出第k个回文数

解题思路

因为k的位数最长是1e5,所以试图根据给出的k找到结果,打表找出两者之间的规律。

首先长度为1时,减1输出;

然后s[0] == '1' && s[1] == '0'时,用9替换这两位,找规律回文输出;(注意特判一下10的情况)

再然后s[0] == '1' && s[1] == 'x'时(其中x是1到9任意一个数字),去掉s[0],找规律回文输出;

最后将s[0] - 1,找规律回文输出。

代码

 #include <cstdio>
#include <cstring> const int maxn = 1e5 + ;
char s[maxn]; int main()
{
int T;
scanf("%d", &T);
while(T--) {
scanf("%s", &s);
int l = strlen(s);
if(l == )
printf("%d\n", s[] - '' - );
else if(s[] == '' && s[] == '') {
putchar('');
if(l > ) {
for(int i = ; i < l; i++) {
printf("%c", s[i]);
}
for(int i = l - ; i >= ; i--) {
printf("%c", s[i]);
}
putchar('');
}
puts("");
}
else if(s[] == '') {
for(int i = ; i < l; i++) {
printf("%c", s[i]);
}
for(int i = l - ; i >= ; i--) {
printf("%c", s[i]);
}
puts("");
} else {
putchar((s[] - '' - ) + '');
for(int i = ; i < l; i++) {
printf("%c", s[i]);
}
for(int i = l - ; i >= ; i--) {
printf("%c", s[i]);
}
putchar((s[] - '' - ) + '');
puts("");
}
}
return ;
}

Frog and Portal

题意

给出从0上到200的方案数n,求搭建哪几条通道能够使得方案数恰好为n

解题思路

由于多种方案输出任意一种均可,所以我们采用先使用传送门,然后用后面的台阶凑方案数的方法,每次找到小于等于n离最近的斐波那契数F[x],然后连接1到(200 - x),然后跳过2,如果还需凑数,再找到小于等于离n - F[x]最近的斐波那契数F[y],然后3连接到(200 - y),直到凑够为止,最后添加一条下一个台阶自闭的通道即可。

代码

 #include <cstdio>
#include <vector>
using namespace std; typedef long long ll;
typedef pair<ll, ll> pir; ll f[]; ll id(ll x) {
for(int i = ; i < ; i++) {
if(x < f[i]) {
return i - ;
}
}
} int main()
{
f[] = ;
f[] = ;
for(int i = ; i < ; i++) {
f[i] = f[i - ] + f[i - ];
} ll n;
vector<pir> v;
while(scanf("%lld", &n) != EOF) {
if( == n) {
printf("2\n1 1\n2 2\n");
continue;
}
v.clear();
ll i;
for(i = ; ; i += ) {
int x = id(n);
v.push_back(pir(i, - x));
n -= f[x];
if( == n)
break;
}
v.push_back(pir(i + , i + )); printf("%d\n", v.size());
for(i = ; i < v.size(); i++) {
printf("%lld %lld\n", v[i].first, v[i].second);
}
}
return ;
}

Heshen's Account Book

题意

输入一些含有空格,数字和小写字母的字符,计算并输出有哪些actual数

解题思路

细节题,先整合成一行字符处理,具体就是前一行末尾是数字并且后一行开头是数字就直接连接,否则加一个空格分开。然后记录每个字母在哪一行上,便于最后输出。最后分隔判断处理。

代码

 #include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int MAXN=;
int num[MAXN];
vector<ll> ans;
int pos[MAXN];
string str; pair<ll,int> check(int l,int r){ for(int i=l;i<=r;i++){
if(str[i]>='a'&&str[i]<='z')
return {-,};
} ll cur=;
if(str[l]==''&&l==r){
return {,pos[l]};
}
else{
if(str[l]==''&&l!=r)
return {-,};
} for(int i=l;i<=r;i++){
cur=cur*10ll+ll(str[i]-'');
}
return {cur,pos[l]};
} int main(){ char c;
int line=;
int len=;
char last=; while(~scanf("%c",&c)){
if(c=='\n')
{
if(last>='a'&&last<='z'){
str.push_back(' ');
pos[len++]=line;
}
line++;
}
else{ if(last=='\n'&&c>='a'&&c<='z'){
str.push_back(' ');
pos[len++]=line;
} str.push_back(c);
pos[len++]=line;
}
last=c;
}
str.push_back(' ');
pos[len++]=line; int l=-,r=-;
for(int i=;i<len;i++){
if((str[i]>='a'&&str[i]<='z')||(str[i]>=''&&str[i]<='')){
if(l==-){
l=i;
}
}
else{
if(l!=-){
r=i-;
pair<ll,int> t=check(l,r);
if(t.first!=-){
num[t.second]++;
ans.push_back(t.first);
}
l=-,r=-;
}
}
} for(int i=;i<ans.size();i++){
if(ans.size()-==i)
cout<<ans[i]<<endl;
else
cout<<ans[i]<<" ";
} for(int i=;i<=line;i++)
cout<<num[i]<<endl; return ;
}

2018 ACM-ICPC Asia Beijing Regional Contest (部分题解)的更多相关文章

  1. ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction hihocoder1870~1879

    ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction hihocoder1870~1879 A 签到,dfs 或者 floyd 都行. #i ...

  2. ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków

    ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...

  3. 2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred)

    2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred) easy: ACE ...

  4. 2018 ICPC Pacific Northwest Regional Contest I-Inversions 题解

    题目链接: 2018 ICPC Pacific Northwest Regional Contest - I-Inversions 题意 给出一个长度为\(n\)的序列,其中的数字介于0-k之间,为0 ...

  5. hihoCoder #1871 : Heshen's Account Book-字符串暴力模拟 自闭(getline()函数) (ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction B) 2018 ICPC 北京区域赛现场赛B

    P2 : Heshen's Account Book Time Limit:1000ms Case Time Limit:1000ms Memory Limit:512MB Description H ...

  6. hihoCoder #1870 : Jin Yong’s Wukong Ranking List-闭包传递(递归) (ACM-ICPC Asia Beijing Regional Contest 2018 Reproduction A) 2018 ICPC 北京区域赛现场赛A

    P1 : Jin Yong’s Wukong Ranking List Time Limit:1000ms Case Time Limit:1000ms Memory Limit:512MB Desc ...

  7. The 2018 ACM-ICPC Asia Beijing Regional Contest

    http://hihocoder.com/problemset/problem/ #1870 : Jin Yong’s Wukong Ranking List 我是每加1个点就dfs判断1次. 正解是 ...

  8. 2018-2019, ICPC, Asia Yokohama Regional Contest 2018 K

    传送门:https://codeforces.com/gym/102082/attachments 题解: 代码: /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ...

  9. 2018 ICPC Asia Jakarta Regional Contest

    题目传送门 题号 A B C D E F G H I J K L 状态 Ο . . Ο . . Ø Ø Ø Ø . Ο Ο:当场 Ø:已补 .  :  待补 A. Edit Distance Thin ...

随机推荐

  1. JMeter接口压测——ServerAgent监控服务端性能指标

    ServerAgent作为一个服务端性能监控插件,结合JMeter自身插件PerfMon可以实现JMeter压测的图形化实时监控,具有良好的实用性.下面讲解一个应用实例 思路: 1. 插件准备 2.打 ...

  2. parrot os 安装后更改更新源

    parrot os 安装后 parrot os 自带的更新源更新速度太慢(需要几个小时) 提供如下更新源 中国 USTC(中国科学技术大学和USTCLUG) - 合肥大学 CMCC 1 Gbps Ce ...

  3. Py福利,基于uiautomatorviewer 的Python 自动化代码自动生成工具分享(jar已发布GitHub,欢迎Star)

    前言做UI自动化无论你用SDK自带的uiautomatorviewer还是Macaca还是Appium自动的inspector,代码最多的就是那些繁琐重复的找元素后点击,输入,长按.....等.现在偷 ...

  4. 万里长征第一步:Python进程池的一点点小坑

    # -*- coding: utf- -*- """ Created on Thu Mar :: @author: lilide """ # ...

  5. javascript中数组总结

    数组是所有高级语言都会有的东西,数组是JS中使用最多的类型之一,所以掌握JS中数组的用法相当有帮助: 由于JS是一门弱类型的语言,所以数组里面可以放各种不同的数据类型,比如 var a = [1993 ...

  6. this用法总结

    在JavaScript中,this关键字可以说是最复杂的机制之一.对this的作用机制缺乏比较深入的理解很容易在实际开发中出现问题. 1.this的作用 为什么要在JavaScript中使用this呢 ...

  7. windows10的环境变量path如何列表显示

    如果你的变量值以%开头,打开编辑的时候就会显示一串的变量值,不方便查找编辑 所以将变量值更改为以盘符开始,就可以解决这个问题,比如:D:\WorkSoft\app\product\11.2.0\dbh ...

  8. 使用python访问网络上的数据

    这两天看完了Course上面的: 使用 Python 访问网络数据 https://www.coursera.org/learn/python-network-data/ 写了一些作业,完成了一些作业 ...

  9. Jenkins 定时构建语法规则

    1.Jenkins自由风格任务定时构建 2.语法规则 定时构建语法 * * * * * 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个 ...

  10. 新鲜出炉的一套Java面试题

    作者:孤独烟 由于近期是互联网寒冬,然而烟哥的好友还是顶着重重压力出去面试,最终斩获无数offer.在烟哥的沟通下,终于套得其中一套题目,故在此分享! 公司:国内三巨头其中的一家!面试时间约在1月份左 ...