AtCoder Beginner Contest 314 - AtCoder

A - 3.14 (atcoder.jp)

题目提供了100位,所以直接用字符串输出

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); string s = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
int n;
cin >> n;
for(int i = 0;i < n + 2;i ++)
cout << s[i]; return 0;
}

B - Roulette (atcoder.jp)

感觉还是题意比较抽象,看懂了就能模拟出来了.

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n;
cin >> n;
vector<int> C[n + 1];
for(int i = 1;i <= n;i ++){
int x;
cin >> x;
for(int j = 0;j < x;j ++){
int y;
cin >> y;
C[i].emplace_back(y);
}
}
int X;
cin >> X; set<pair<int,int>> s;
for(int i = 1;i <= n;i ++){
if(std::find(C[i].begin(), C[i].end(),X) != C[i].end()){
s.insert({C[i].size(),i});
}
} if(s.size()){
int cnt = 0;
auto x = s.begin()->first;
vector<int> ans;
for(auto [i,j] : s){
if(i == x)
ans.emplace_back(j),cnt++;
else
break;
}
cout << cnt << '\n';
for(auto i : ans )
cout << i << ' ';
}else
cout << "0\n";
return 0;
}

C - Rotate Colored Subsequence (atcoder.jp)

要把相同颜色都往左移一位,最后面的要移到前面来,所以我们可以预处理出相同颜色的字符串,然后最后一位放前面,我这里是逆转了一下,方便使用\(string.pop\_back()\),最后就是将对应颜色的放进去就好了

#include <bits/stdc++.h>
#define int long long using namespace std; signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr); int n,m;
string s;
cin >> n >> m >> s;
vector<int> c(n + 1);
s = " " + s;
for(int i = 1;i <= n;i ++) cin >> c[i]; vector<string> sc(m + 1, "");
for(int i = 1;i <= n;i ++){
sc[c[i]] += s[i];
} for(auto &i : sc){
i = i.back() + i.substr(0,i.size() - 1);
std::reverse(i.begin(), i.end());
} string ans = "";
for(int i = 1;i <= n;i ++){
ans += sc[c[i]].back();
sc[c[i]].pop_back();
}
cout << ans << '\n';
return 0;
}

D - LOWER (atcoder.jp)(离线思想)

不管前面大小写翻转了几次,只有最后一次的大小写翻转能决定之前的字符串,之后因为没有翻转了,所以单点修改即可,因为要找到最后一次大小写修改,所以我们要用到离线思想,即把每次操作存起来判断,最后再处理结果

#include <bits/stdc++.h>
#define int long long using namespace std; signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m;
string s;
cin >> n >> s >> m; vector<int> T(m + 1),X(m + 1);
vector<char> C(m + 1);
for(int i = 1;i <= m;i ++)
cin >> T[i] >> X[i] >> C[i]; int f = 1;
int pos = 0;
for(int i = m;i >= 1;i --){
if(T[i] != 1){
f = T[i];
pos = i;
break;
}
} if(pos > 1){
for(int i = 1;i < pos;i ++){
if(T[i] == 1){
s[--X[i]] = C[i];
}
}
} if(f == 2)std::transform(s.begin(), s.end(),s.begin(),::tolower);
else if(f == 3) std::transform(s.begin(), s.end(),s.begin(),::toupper); for(int i = pos + 1;i <= m;i ++){
if(T[i] == 1){
s[--X[i]] = C[i];
}
}
cout << s << '\n';
return 0;
}

AtCoder Beginner Contest 314的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

  10. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

随机推荐

  1. Spring Boot入门实验

    一. 实验目的和要求 1.掌握使用 IDEA 通过 Maven 和 Spring Initializr 的方式创建 Spring Boot 应用程序: 2.掌握 Maven 的工作原理: 3.了解 s ...

  2. 04-Python文件操作

    打开文件 f=open("我的文件.txt","r",encoding="utf8") #打开一个文件(读模式) f.close() #关闭 ...

  3. 慕课DJANGO配置

    重写内置的错误处理视图 在项目urls.py中添加配置 handler500 = "app01.views.page_500" handler404 = "app01.v ...

  4. javaApi,mapreduce,awk,scala四种方式实现词频统计

    awk方式实现词频统计: 方式一: vi wordcount.awk { for (i = 1; i <=NF;i++) //NF 表示的是浏览记录的域的个数 freq[$i]++ } END{ ...

  5. 【Python】python笔记:时间模块/时间函数

    1.Python时间模块 import time import datetime # 一: time模块 ############## # 1.时间戳 print (time.time()) # 16 ...

  6. Java中final用法与详解

    final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的. 这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. final应用于基本数据类型 1 ...

  7. SQL注入方法

    目录 前言 如何测试与利用注入点 手工 注入思路 工具 sqlmap -r -u -m --level --risk -v -p --threads -batch-smart --os-shell - ...

  8. 谈谈你对 keep-alive 的了解?

    在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止二次渲染,这样会大 ...

  9. PS工具的基本使用

    常见的图片格式: 切片工具的使用 1.用切片选中图片 2.导出切片 3.切片悬着工具 可以选择指定 切片框 删除. 点击图层 切图 清除切片 基于参考线的切片 切图插件Cutterman

  10. yolov5 筛选正样本流程 代码多图详解

    yolov5正样本筛选原理 正样本全称是anchor正样本,正样本所指的对象是anchor box,即先验框. 先验框:从YOLO v2开始吸收了Faster RCNN的优点,设置了一定数量的预选框, ...