A. Dislike of Threes

简单的水题,预处理即可

AC_CODE

#include <bits/stdc++.h>

using namespace std;

template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
}
const int N = 1e5 + 10;
int a[N];
void solve() {
int n; read(n);
printf("%d\n", a[n]);
} signed main()
{
int p = 1;
for(int i = 1; p < 1110; i ++ ) {
if(i % 3 == 0 || i % 10 == 3) continue;
a[p ++ ] = i;
}
int T = 1;cin >> T;
while(T -- ) solve();
return 0;
}

B. Who's Opposite?

sb题

找到这个环的中间位置,然后判断三个数字是否在环外即可

AC_CODE

#include <bits/stdc++.h>

using namespace std;

template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
} void solve() {
int a, b, c;
read(a); read(b); read(c);
if(a > b) swap(a, b);
int res = b - a;
int len = res * 2;
if(b > len || c > len) {
puts("-1");
return;
}
int ans = c + res;
if(ans > 2 * res) ans %= (2 * res); printf("%d\n",ans);
} signed main()
{
int T = 1;cin >> T;
while(T -- ) solve();
return 0;
}

C - Infinity Table

预处理出所有的平方数

  • 首先判断这个数字是在哪一行or哪一列 (开方向上取整即可) 假设这个数字是idx
  • 其次判断这个数字是在列还是行
  • 如果是列 则输出 n - \(idx^2\) 如果是行则输出 \((idx+1)^2\) - n + 1
#include <bits/stdc++.h>

using namespace std;

template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
}
const int N = 1e5 + 10;
int a[N];
int p = 1;
void solve() {
int n; read(n);
int idx = lower_bound(a + 1, a + 1 + p, n) - a;
int res = n - a[idx - 1];
if(res <= idx) {
printf("%d %d\n", res, idx);
return;
}
res = a[idx] - n;
printf("%d %d\n", idx, res + 1); } signed main()
{ for(int i = 1; i <= INF / i; i ++ ) {
a[p ++] = i * i;
} int T = 1;cin >> T;
while(T -- ) solve();
return 0;
}

D - Make a Power of Two

预处理出所有的 \(2^n\)

暴力枚举从原来的数字操作到 \(2^n\) 所需的最小操作次数 取最小值

最小操作次数判断时候,即是判断重复子序列长度

AC_CODE

//#pragma GCC optimize (2)
//#pragma G++ optimize (2)
#include <bits/stdc++.h> using namespace std; template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
} string a[63]; void solve() {
string x; cin >> x;
int ans = INF;
int p = x.size();
for(int i = 0; i < 63; i ++ ) {
int len = a[i].size(), tt = 0;
for(int j = 0; j < p; j ++ ) {
if(tt < len && x[j] == a[i][tt]) tt ++;
}
int r = len - tt + p - tt;
ans = min(ans, r);
if(ans > r) {
cout << i << endl;
ans = r;
} }
printf("%d\n", ans);
} signed main()
{
for(int i = 0; i < 63; i ++ ) {
LL p = (1LL << i);
a[i] = to_string(p);
}
int T = 1;cin >> T;
while(T -- ) solve();
return 0;
}

E - Polycarp and String Transformation

题意

对于一个字符串\(a\) 给出\(a\)经过以下操作获得的字符串

  • \(ans\) = \(a\)
  • 每次删去\(a\)中的每个字符(删除\(a\)中的全部的这个字符)得到新的\(a\) \(ans+=a\)
  • 进行上述两个操作直到\(a\)为空字符串

    给定 \(ans\) 求是否存在 一个\(a\) 可以经过上述操作的到\(ans\)

    -若存在 输出 \(a\) 以及操作顺序

    -若不存在 输出 \(-1\)

思路

假设存在\(a\),我们通过\(ans\) 就可以得到操作顺序(倒序寻找即可)

没操作一个字符,这个字符就在后面不会出现, 通过这个我们可以知道,

每个字符出现的总次数一定是这个字符出现的轮次的倍数

因此通过判断上述条件即可得出无解的情况

下面我们讨论一下有解的情况

  • 我们已经得到了操作字符的顺序
  • 由于每个字符在它可能出现的轮次中出现的个数都是一样的,\(a\)中的字符个数可以通过这个结论求出

    即 每个字符出现的总次数除以这个字符出现的轮次
  • 通过上述两个操作我们可以得到 \(a\) 字符串,然后模拟题中所给操作即可

    最后判断模拟得到的字符串是否和给定字符串相同即可

AC_CODE

#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define mk make_pair
#define debug(x) cout<<#x" ----> "<<x<<endl
#define rep(i, b, s) for(int i = (b); i <= (s); ++i)
#define pre(i, b, s) for(int i = (b); i >= (s); --i) //#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false); cin.tie(0), cout.tie(0)
#define all(v) (v).begin(),(v).end() using namespace std; typedef unsigned long long ULL;
typedef pair<int, int> PII ;
typedef pair<double, double> PDD ;
typedef long long LL;
const int INF = INT_MAX;
const int mod = 1e9 + 7;
const double eps = 1e-10;
const double pi = acos(-1.0); int lowbit(int x){return x&-x;}
int gcd(int a, int b) {return b ? gcd(b, a%b) : a;}
LL ksm(LL a, LL b) {if (b == 0) return 1; LL ns = ksm(a, b >> 1); ns = ns * ns % mod; if (b & 1) ns = ns * a % mod; return ns;}
LL lcm(LL a, LL b) {return a / gcd(a, b) * b;}
template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
} void solve() {
vector<int> vis(26);
string p;
string a; cin >> a; for(int i = (int)a.size() - 1; ~i; i -- ) {
if(!vis[ a[i] - 'a' ]) p.pb(a[i]);
vis[ a[i] - 'a' ] ++;
} int len = p.size();
int res = 0;
for(int i = 0; i < len; i ++ ) {
int ans = vis[p[i] - 'a'] % (len - i);
if(ans) {
puts("-1");
return;
}
res += vis[p[i] - 'a'] / (len - i);
}
string curr = a.substr(0, res);
string accept = curr, wa = curr, temp;
reverse(all(p));
for(int i = 0; i < len; i ++ ) {
temp = "";
for(int j = 0; wa[j]; j ++ ) {
if(wa[j] != p[i]) temp.pb(wa[j]);
}
accept += temp;
wa = temp;
}
if(accept == a) {
printf("%s %s\n", curr.c_str(), p.c_str());
}
else puts("-1"); } signed main()
{
int T = 1; scanf("%d",&T);
while(T -- ) {
solve();
} return 0;
}

Codeforces Round #739 (Div. 3)的更多相关文章

  1. 刷题记录:Codeforces Round #739 (Div. 3)

    Codeforces Round #739 (Div. 3) 20210907.网址:https://codeforces.com/contest/1560. --(叹). A 不希望出现带" ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. 【LeetCode】849. Maximize Distance to Closest Person 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  2. 1119 机器人走方格 V2

    1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mo ...

  3. 1369 - Answering Queries

    1369 - Answering Queries    PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 ...

  4. Pikachu漏洞练习-SQL-inject(四)

  5. 2021 年终总结:内推40人、全网15万粉、Code Runner 3000万下载、发扬WLB、进军视频领域

    时光飞逝,岁月如梭,蓦然回首,已是年底. 感觉写 2020 年终总结还是在不久之前.转眼间,2021 已经接近尾声了.是时候来写写 2021 年的年终总结了. 内推 40 人 2019 年,内推了 2 ...

  6. 《HelloGitHub》第 69 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  7. TKE 用户故事 - 作业帮 PB 级低成本日志检索服务

    作者 吕亚霖,2019年加入作业帮,作业帮架构研发负责人,在作业帮期间主导了云原生架构演进.推动实施容器化改造.服务治理.GO微服务框架.DevOps的落地实践. 莫仁鹏,2020年加入作业帮,作业帮 ...

  8. GPT and BERT

    目录 概 主要内容 GPT BERT Radford A., Narasimhan K., Salimans T. and Sutskever I. Improving language unders ...

  9. IT6516DP转VGA转换器|替代台湾联阳IT6516方案|CS5212Capstone

    台湾联阳IT6516是一种高性能的DP显示端口到VGA转换器方案芯片.IT6516结合DisplayPort接收器和三重DAC,通过转换功能支持DisplayPort输入和VGA输出.内置Displa ...

  10. JavaScript交互式网页设计 • 【第4章 JavaScript文档对象模型】

    全部章节   >>>> 本章目录 4.1 文档对象模型简介及属性 4.1.1 文档对象模型概述 4.1.3 实践练习 4.2 document 对象查找 HTML 元素 4.2 ...