题目戳这里

A.A Serial Killer

题目描述似乎很恶心,结合样例和样例解释猜测的题意

使用C++11的auto可以来一手骚操作

#include <bits/stdc++.h>

using namespace std;

int n;

string s[];

map <string, int> p;

int main() {
cin >> s[] >> s[];
p[s[]] = p[s[]] = ;
cin >> n;
cout << s[] << " " <<s[] << endl;
while(n --) {
cin >> s[] >> s[];
p[s[]] ++, p[s[]] ++;
for(auto iter : p)
if(iter.second == ) cout << iter.first << " ";
puts("");
}
return ;
}

其实等价于这样写

#include <bits/stdc++.h>

using namespace std;

int n;

string s[];

map <string, int> p;

int main() {
cin >> s[] >> s[];
p[s[]] = p[s[]] = ;
cin >> n;
cout << s[] << " " <<s[] << endl;
while(n --) {
cin >> s[] >> s[];
p[s[]] ++, p[s[]] ++;
for(map <string, int>::iterator iter = p.begin();iter != p.end();iter ++)
if(iter -> second == ) cout << iter -> first << " ";
puts("");
}
return ;
}

B.Sherlock and his girlfriend

很蠢的一题,质数标1,合数标2就好了

#include <bits/stdc++.h>

#define rep(i, j, k) for(int i = j;i <= k;i ++)

#define rev(i, j, k) for(int i = j;i >= k;i --)

using namespace std;

typedef long long ll;

const int maxn = ;

int n, a[maxn];

int main() {
ios::sync_with_stdio(false);
cin >> n;
if(n < ) puts("");
else puts("");
for(int i = ;i <= n + ;i ++)
if(a[i] != ) {
a[i] = ;
for(int j = i << ;j <= n + ;j += i)
a[j] = ;
}
for(int i = ;i <= n + ;i ++)
printf("%d ", a[i]);
return ;
}

C.Molly's Chemicals

有那么一点意思的题目

求有多少段连续子段和为k的非负power

显然k为2的话,大概能2^0 - 2^50左右吧

所以直接枚举 k^p 即可

偷懒套个map,复杂度O(n(logn)^2)

注意:

1.非负power,包括1

2. |k| = 1 特判,否则死循环

#include <bits/stdc++.h>

#define rep(i, j, k) for(int i = j;i <= k;i ++)

#define rev(i, j, k) for(int i = j;i >= k;i --)

using namespace std;

typedef long long ll;

int n, t;

ll k, s[];

map <ll, int> p;

int main() {
ios::sync_with_stdio(false);
int x;
cin >> n >> t;
rep(i, , n) cin >> x, s[i] = s[i - ] + x;
for(ll j = ;abs(j) <= 100000000000000ll;j *= t) {
p.clear(), p[] = ;
rep(i, , n) {
k += p[s[i] - j];
p[s[i]] ++;
}
if(t == || (t == - && j == -)) break;
}
cout << k;
return ;
}

D.The Door Problem

应该注意到each door is controlled by exactly two switches

所以显然对于一开始锁上的门,只能选择一个开关

一开始打开的门,可以选择都不选或者都选

于是我们可以想到2-sat来解决

实际上2-sat也的确可以解决

但是我们注意到这个2-sat的特殊性

每组中的两个选择在某种程度上是等价的

而我们平时做的 Ai 与 Ai’ 是不等价的

两个选择等价意味着连的边已经是无向边

即若有Ai -> Aj,则必有Aj -> Ai

这样就不需要再tarjan

直接并查集就可以解决了

#include <cstdio>

const int maxn = ;

int n, m, f[maxn << ], a[][maxn];

bool op[maxn];

int find_(int x) {
if(f[x] != x) return f[x] = find_(f[x]);
return x;
} void union_(int x, int y) {
x = find_(x), y = find_(y);
if(x != y) f[x] = y;
} int main() {
scanf("%d %d", &n, &m);
for(int i = ;i <= n;i ++) scanf("%d", &op[i]);
for(int k, j, i = ;i <= m;i ++) {
scanf("%d", &j);
while(j --) {
scanf("%d", &k);
if(a[][k]) a[][k] = i;
else a[][k] = i;
}
}
for(int i = m << ;i;i --) f[i] = i;
for(int i = ;i <= n;i ++)
if(op[i]) union_(a[][i], a[][i]), union_(a[][i] + m, a[][i] + m);
else union_(a[][i], a[][i] + m), union_(a[][i] + m, a[][i]);
for(int i = ;i <= m;i ++)
if(find_(i) == find_(i + m)) {
puts("NO");
return ;
}
puts("YES");
return ;
}

E.The Holmes Children

手动计算发现 f 函数为欧拉函数

gcd(x, y) = 1

x + y = n

=> gcd(x, x + y) = 1 即 gcd(x, n) = 1

g(n) = n ,剩下部分很好解决

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int mod_ = 1e9 + ;

ll f(ll x) {
ll ret = x;
for(ll i = ;i * i <= x;i ++)
if(x % i == ) {
ret /= i, ret *= (i - );
while(x % i == ) x /= i;
}
if(x != ) ret /= x, ret *= (x - );
return ret;
} int main(){
ll n, k;
cin >> n >> k;
k = (k + ) >> ;
for(int i = ;i <= k;i ++) {
n = f(n);
if(n == ) break;
}
cout << n % mod_;
return ;
}

Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE的更多相关文章

  1. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  2. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  3. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  4. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  5. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  6. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

  7. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  8. Educational Codeforces Round 39 (Rated for Div. 2) G

    Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...

  9. Educational Codeforces Round 48 (Rated for Div. 2) CD题解

    Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...

  10. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

随机推荐

  1. 水晶报表的宽度调整方法(设计器、代码调整、rpt文件属性)

    水晶报表的宽度调整方法(设计器.代码调整.rpt文件属性) Posted on 2010-08-07 23:52 moss_tan_jun 阅读(1725) 评论(0) 编辑 收藏 经过个人反复研究后 ...

  2. 使用 StackExchange.Redis 封装属于自己的 RedisHelper

    目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List) 有序集合(sorted set) Key 操作 发布订阅 其他 简介 目前 .NE ...

  3. 【HDU 4699】 Editor

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...

  4. 【高德地图API】VS2012或者VS2013添加高德地图v2.1.1版本SDK失败

    可能由于v2.1.1版本SDK可能是在Win8.1环境下编译[这里有许多的原因,系统升级,安装VS2013等等] 有童鞋在操作正常的情况下添加SDK失败,提示版本不兼容. 如下图: 编辑项目  *.c ...

  5. ecshop的一些东西,来看看

    \includes\lib_commom.php =>公用函数库 \includes\lib_main.php =>前台公用函数库 \includes\lib_init.php => ...

  6. [Swift通天遁地]八、媒体与动画-(1)实现音频的播放和停止

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. iview日期选择框,获取的日期总是少一天

    使用iview的datepicker时间选择器发现获取的value值是比实际要少一天,严格来说应该是时间格式不一样,datepicker获取的时间是UTC时间 格式,也就是:yyyy-MM-ddTHH ...

  8. to_string作用

  9. Objective-C copy(转)

    一.从面向对象到Objective-C概览copy 1.面向对象: In object-oriented programming, object copying is creating a copy ...

  10. 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)

    题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...