0%

C - Tautonym Puzzle

[AGC 012 C] Tautonym Puzzle

题面翻译

我们称一个字符串 \(x\) 是好的当且仅当它满足以下条件:

  • \(x\) 可以被表示为另外一个串 \(y\) 复制一遍得到,即 \(x=\overline {yy}\)
阅读全文 »

Percepts of AtCoder 2 - 洛谷 | 计算机科学教育新生态

这个题有 1500 score \(\dots\) 得了 225,可以了,不用过于深入 \(\dots\)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void solve()
{
ll x;
cin >> x;
bitset<64> a(x);

int idx = 63;
for (int i = 63; i >= 0; i--)
if (a[i])
{
idx = i;
break;
}

vector<int> ans(__lg(x) + 1, 0);
for (int j = 1; j <= idx; j++)
ans[j] = j;
for (int i = idx - 1; i >= 0; i--)
if (a[i])
ans.insert(ans.begin() + i + 1, ++idx);

cout << ans.size() - 1 << '\n';
for (int i = 1; i < ans.size(); i++)
cout << ans[i] << " ";
cout << "\n";
}

又被打爆了 \(\dots\) 补题!

C - Lining Up 2

给出一个数组 \(a\),其中

  • \(a_{i}=-1\),则 \({i}\) 在最前面
  • \(a_{i}\neq-1\),则 \(i\) 的前面是 \(a_{i}\)

输出从前到后的数字。

阅读全文 »

被打爆的一场,之后更加要多打 cf 了!

A. Tricky Template

给出字符串长度 \(n\),和字符串 \(a,b,c(小写)\).

假设一个模板是由 \(n\) 个小写和/或大写拉丁字母组成的字符串 \(t\) 。如果从 \(1\)\(n\) 的所有 \(i\) 都满足以下条件,则字符串 \(s\) 与模板 \(t\) 匹配:

  • 如果模板中第 \(i\) 个字母是小写字母,那么 \(s_i\) 必须与 \(t_i\) 相同
  • 如果模板中的第 \(i\) 个字母是小写字母,那么 \(s_i\) 必须与 \(t_i\)小写版本不同。例如,如果模板中有字母 "A",则不能在字符串的相应位置使用字母 "a"。
阅读全文 »

A. Square

给出四个坐标,算出正方形的面积

1
2
3
4
5
6
7
8
9
int _,x[5],y[5];
void solve()
{
for (int i = 1; i <= 4;i++)
cin >> x[i] >> y[i];
sort(x + 1, x + 5);
sort(y + 1, y + 5);
cout << (x[4] - x[1]) * (y[4] - y[1]) << '\n';
}

阅读全文 »

A . How Much Does Daytona Cost?

我们将一个整数定义为子段中最常见的整数,如果它在该子段中出现的次数大于该子段中任何其他整数出现的次数。数组的子数段是数组 \(a\) 中元素的连续数段。

给定一个大小为 \(n\) 的数组 \(a\) 和一个整数 \(k\) ,判断 \(a\) 中是否存在一个非空子段,其中 \(k\) 是最常见的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int a[110], num[110];
void solve()
{
memset(a, 0, sizeof a);
memset(num, 0, sizeof num);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i], num[a[i]]++;
if (num[m])
cout << "yes\n";
else
cout << "no\n";
}

B. Aleksa and Stack

阅读全文 »

参考:

  1. https://blog.csdn.net/lixiaogang_theanswer/article/details/72588105
  2. http://c.biancheng.net/view/681.html

0.1 iota() 函数

  • C++ 中 iota() 是用来批量递增赋值 vector 的元素的。
    示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <numeric> //iota头文件
using namespace std;
void func() {
vector<int> v(10);
iota(v.begin(),v.end(),1);
vector<int>::iterator it = v.begin();
while(it != v.end())
{
cout<<*it++<<" ";
}
}

结果:
1 2 3 4 5 6 7 8 9 10
  • 定义在 numeric 头文件中的 iota() 函数模板会用连续的 T 类型值填充序列。前两个参数是定义序列的正向迭代器,第三个参数是初始的 T 值。第三个指定的值会被保存到序列的第一个元素中。保存在第一个元素后的值是通过对前面的值运用自增运算符得到的。当然,这意味着 T 类型必须支持 operator++()。下面展示了如何生成一个有连续的浮点值元素的 vector 容器:
    阅读全文 »