题面pdfhttps://codeforc.es/gym/101889/attachments/download/7471/statements-2017-latam-regional.pdf

zyn感冒,两个人打。刚开始两题超迅速,40分钟后开始各种写不出,自闭。然后突然又开出两题。

4题全部1A,70名左右应该能稳个银。

说明卡题了可千万不能放弃!虽然可能简单题做不出来,过的多的题目做不出来,也不要放弃去开题。

以及周末这两场都说明一定要胆子大。

B---Buggy ICPC【找规律】

题意:

输入一串字符串,当遇到元音的时候前面输入的所有字符包括这个元音都反转一下。现在给定最后的结果字符串,问有多少种输入方法可以得到这个字符串。

思路:

czc去打了个表,然后我们疯狂找规律。真的找到规律了

如果没有元音,当然是1.如果有元音,但是第一个不是元音,一定是0

其他情况,答案就是中间两个元音之间的辅音个数$+1$。

只有一个元音时默认后面还有一个元音结尾,答案就是字符串长度。

 #include <bits/stdc++.h>

 using namespace std;

 const int maxn = 1e5 + ;
char t[maxn];
vector<int>pos_of_vowel;
char vowel[] = {'a', 'e', 'i', 'o', 'u'}; int main()
{
while(scanf("%s", t) != EOF){
pos_of_vowel.clear();
int len = strlen(t), cnt = ;
for(int i = ; i < len; i++){
for(int j = ; j < ; j++){
if(t[i] == vowel[j]){
cnt++;
pos_of_vowel.push_back(i);
}
}
} if(cnt == ){
printf("1\n");
}
else{
bool flag = false;
for(int i = ; i < ; i++){
if(t[] == vowel[i]){
flag = true;
break;
}
}
if(!flag){
printf("0\n");
}
else{
if(cnt == ){
printf("%d\n", len);
}
else{
int id = (cnt + ) / ;
//cout<<id<<endl<<pos_of_vowel[id]<<endl<<pos_of_vowel[id - 1]<<endl;
int l = pos_of_vowel[id] - pos_of_vowel[id - ];
printf("%d\n", l);
} }
}
}
return ;
}

H---Hard Choice【水题】

题意:

【略】

思路:

【略】

 #include<iostream>
//#include<bits/stdc++.h>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<climits>
#include<map>
using namespace std;
typedef long long LL;
#define N 100010
#define pi 3.1415926535
#define inf 0x3f3f3f3f int a, b, c; int main()
{
while(scanf("%d%d%d", &a, &b, &c) != EOF){
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
int ans = ;
if(x > a){
ans += x - a;
}
if(y > b){
ans += y - b;
}
if(z > c){
ans += z - c;
}
printf("%d\n", ans);
}
}

C---Complete Naebbirac's sequence【暴力】

题意:

有$n$个$1$到$k$之间的数。可以进行一下三种操作一次(只能一次):1、删去其中一个。2、添加一个$1$到$k$的数。3、将其中一个换成另一个$1$到$k$的数。使得他们出现的次数都一样。

思路:

因为只能操作一次。所以每种操作都讨论一下就行了。

首先统计一下每个数出现的次数,按照次数从小到大排序。

1、把第一个数次数加1,看所有数是否满足次数相同。

2、把最后一个数次数减1,看所有数是否满足次数相同。

3、把第一个数次数加1,最后一个数次数减1,看所有数是否满足次数相同。

 #include<iostream>
//#include<bits/stdc++.h>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<climits>
#include<map>
using namespace std;
typedef long long LL;
#define N 100010
#define pi 3.1415926535
#define inf 0x3f3f3f3f int n, k;
const int maxn = 1e4 + ;
int num[maxn];
struct node{
int num, cnt;
}se[]; bool cmp(node a, node b)
{
return a.cnt < b.cnt;
} int main()
{
while(scanf("%d%d", &k, &n) != EOF){
for(int i = ; i < ; i++){
se[i].num = i;
se[i].cnt = ;
}
for(int i = ; i < n; i++){
scanf("%d", &num[i]);
se[num[i]].cnt++;
} sort(se + , se + k + , cmp);
bool flag = true;
se[].cnt++;
for(int i = ; i <= k-; i++){
if(se[i].cnt != se[i + ].cnt){
flag = false;
break;
}
}
if(flag){
printf("+%d\n", se[].num);
}
else{
se[k].cnt--;
bool flag2 = true;
for(int i = ; i <= k - ; i++){
if(se[i].cnt != se[i + ].cnt){
flag2 = false;
break;
}
}
if(flag2){
printf("-%d +%d\n", se[k].num, se[].num);
}
else{
se[].cnt--;
bool flag3 = true;
for(int i = ; i <= k - ; i++){
if(se[i].cnt != se[i + ].cnt){
flag3 = false;
break;
}
}
if(flag3){
printf("-%d\n", se[k].num);
}
else{
printf("*\n");
}
}
}
}
}

J---Jumping Frog【数论】【环形dp】

题意:

有n个位子,有的是石头(R), 有的是池塘(P)。青蛙只能在石头上跳,不能跳到池塘里去。每次他选择一个k,表示他每次跳k步,希望他可以跳回到起点。问以所有的位子为起点,一共能有多少种不同的k的选择。

思路:

这题是真的没思路。czc自己刷刷刷就敲完1A了。附一下他的代码。

 #include <bits/stdc++.h>

 using namespace std;
const int MAX_N = 1e5 + ; int N;
char S[MAX_N]; vector <int> factor;
void getFactors(int N)
{
factor.clear();
for (int i = ; i <= N/i; i++) {
if (N%i == ) {
factor.push_back(i);
if (i*i != N)
factor.push_back(N/i);
}
}
sort(factor.begin(), factor.end());
} bool f[MAX_N << ][];
bool can_jump[MAX_N];
void dp()
{
int cnt = factor.size();
memset(f, false, sizeof f);
for (int i = ; i <= *N; i++) {
for (int j = ; j < cnt; j++) {
int tmp = factor[j];
if (S[(i-)%N] == 'P')
f[i][j] = false;
else if (S[(i-)%N] == 'R') {
if (i-tmp <= )
f[i][j] = true;
else
f[i][j] = f[i-tmp][j];
}
}
} memset(can_jump, false, sizeof can_jump);
for (int i = N+; i <= *N; i++) {
for (int j = ; j < cnt; j++) {
int tmp = factor[j];
if (f[i][j])
can_jump[tmp] = true;
}
}
} inline int gcd(int a, int b)
{
return a%b ? gcd(b, a%b) : b;
} int main()
{
scanf("%s", S);
N = strlen(S);
getFactors(N);
dp(); int ans = ;
for (int k = ; k <= N-; k++) {
int g = gcd(k, N);
if (can_jump[g])
ans++;
}
cout << ans << endl;
return ;
}

2017-2018 ACM-ICPC Latin American Regional Programming Contest的更多相关文章

  1. 2017-2018 ACM-ICPC Latin American Regional Programming Contest PART (11/13)

    $$2017-2018\ ACM-ICPC\ Latin\ American\ Regional\ Programming\ Contest$$ \(A.Arranging\ tiles\) \(B. ...

  2. 训练20191007 2017-2018 ACM-ICPC Latin American Regional Programming Contest

    2017-2018 ACM-ICPC Latin American Regional Programming Contest 试题地址:http://codeforces.com/gym/101889 ...

  3. 2017-2018 ACM-ICPC Latin American Regional Programming Contest Solution

    A - Arranging tiles 留坑. B - Buggy ICPC 题意:给出一个字符串,然后有两条规则,如果打出一个辅音字母,直接接在原字符串后面,如果打出一个元音字母,那么接在原来的字符 ...

  4. 2017-2018 ACM-ICPC Latin American Regional Programming Contest GYM101889

    挺有意思的一套题,题也没有啥毒瘤了,本来是队切的结果种种原因大家全挂机了. 只补了百人题,一共7个,其他的暂时先不补了,,也不会嘛qwq H:签到 #include <bits/stdc++.h ...

  5. 2017-2018 ACM-ICPC Latin American Regional Programming Contest D.Daunting device

    题意:一个数组n个操作每次先查询p颜色的数量然后求出区间,区间染色成x,然后求最大染色数 题解:odt裸题,多维护一个color个数数组就好了 //#pragma comment(linker, &q ...

  6. 2019-2020 ACM-ICPC Latin American Regional Programming Contest

    代码见:戳 easy: EIM medium-easy: BDFKL medium: ACJ medium-hard: H A - Algorithm Teaching 题意 给一些集合,现从每个集合 ...

  7. 2017-2018 ACM-ICPC Latin American Regional Programming Contest J - Jumping frog 题解(gcd)

    题目链接 题目大意 一只青蛙在长度为N的字符串上跳跃,"R"可以跳上去,"P"不可以跳上去. 字符串是环形的,N-1和0相连. 青蛙的跳跃距离K的取值范围是[1 ...

  8. Gym 2009-2010 ACM ICPC Southwestern European Regional Programming Contest (SWERC 2009) A. Trick or Treat (三分)

    题意:在二维坐标轴上给你一堆点,在x轴上找一个点,使得该点到其他点的最大距离最小. 题解:随便找几个点画个图,不难发现,答案具有凹凸性,有极小值,所以我们直接三分来找即可. 代码: int n; lo ...

  9. ACM ICPC, Damascus University Collegiate Programming Contest(2018) Solution

    A:Martadella Stikes Again 水. #include <bits/stdc++.h> using namespace std; #define ll long lon ...

随机推荐

  1. [javase学习笔记]-6.2 类与对象的关系

    这一节我们来看一下类与对象之间的关系. 我们学习java语言,目的就是用java语言对现实生活中的事物进行描写叙述.那么我们如何来描写叙述呢.这就引出了类,我们在实际实现时,是通过类的形式来体现的. ...

  2. 微信支付(APP支付)-服务端开发(一)

    微信支付,首先需要注册一个商户平台公众账号,(网址:https://pay.weixin.qq.com/index.php/home/d_login) 目前微信支付的接入方式有四种方式:公众号支付,A ...

  3. 【SqlServer】SqlServer的异常处理

    在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常 ...

  4. Spring入门教程:通过MyEclipse开发第一个Spring项目

    Animal.java package com.project; public class Animal { private String name; public String getName() ...

  5. [Aaronyang紫色博客] 写给自己的WPF4.5-Blend5公开课系列 1

     我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 欢迎大家支持我的力作<[Aaronyang] 写给自己的 ...

  6. [MySQL]对于事务并发处理带来的问题,脏读、不可重复读、幻读的理解

    一.缘由 众所周知MySQL从5.5.8开始,Innodb就是默认的存储引擎,Innodb最大的特点是:支持事务.支持行级锁. 既然支持事务,那么就会有处理并发事务带来的问题:更新丢失.脏读.不可重复 ...

  7. github desktop的使用

    1.建仓库 2.添加文件 3.提交文件到本地仓库 4.撤销提交到本地仓库 或者直接Ctrl+Z 5.提交到远端仓库 6.添加一个分支 7.分支合并 1.本地仓库合并 将新分支添加的文件合并到maste ...

  8. 嵌入式开发之hi3519---进程线程间的同步和互斥,条件变量、信号了、互斥锁等

    sem_post 最安全 sem  有序,会卡顿 阻塞 mutex  无序,不能同步 http://blog.chinaunix.net/uid-20671208-id-4935154.html ht ...

  9. IDEA 最新版破解教程图解

    一.打开此网站 http://idea.lanyus.com 并下载红色框框内的包 二.拷贝到idea 安装目录bin文件下 三.编辑 idea64.exe.vmoptions 和 idea.exe. ...

  10. 占位 Bootstrap

    中文网  http://www.bootcss.com/