良心赛,虽然我迟了半小时233333。

比赛链接:#869

呃,CF的比赛都是有背景的……上次是《哈利波特》,这次是《物语》……

【A】巧妙的替换

题意:

Karen发现了石头剪刀布的决定性规律,看透了这个游戏的本质,使得石头剪刀布再无奥秘可言。

但是他的哥哥,Koyomi发明了一个新游戏:

他们先选定一个数\(n\),然后选出\(2n\)个互不相同的数,为\(x_{1},x_{2},\cdots,x_{n}\)和\(y_{1},y_{2},\cdots,y_{n}\)。

接下来他们数出无序数对\((i,j)\)的数量,使得\((i,j)\)满足\(x_{a}\hat{\;}y_{b}\)等于这\(2n\)个数中的某一个。

其中\(\hat{\;}\)符号代表按位异或。

如果这种数对的数量是偶数,则Karen赢,否则Koyomi赢。

判断谁会赢。

输入:

第一行一个数\(n,(1\leqslant n\leqslant2000)\)。

接下来一行n个数,表示\(x_{1},x_{2},\cdots,x_{n}(1\leq x_{i}\leq2\cdot10^6)\)。

接下来一行n个数,表示\(y_{1},y_{2},\cdots,y_{n}(1\leq y_{i}\leq2\cdot10^6)\)。

输出:

一行一个字符串"Karen"或"Koyomi",表示谁会赢,注意大小写。

题解:

把\(2n\)个数有没有出现过记下来,然后\(O(n^2)\)乱搞。

唯一的坑点是如\(2000000\hat{\;}97151=2097151\),大于2000000,所以数组要防止越界。

#include<cstdio>
int n,a[],y[],ans;
bool vis[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i) scanf("%d",a+i), vis[a[i]]=;
for(int i=;i<=n;++i) scanf("%d",y+i), vis[y[i]]=;
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
if(vis[a[i]^y[j]]) ++ans;
if(ans&) puts("Koyomi");
else puts("Karen");
}

【B】不朽的神话

题意:

堆积药草和焚香,而后从其先祖的尘埃中重生,“凤凰涅槃”的故事被很多人所熟知。

凤凰有很长的生命周期,它每隔\(a!\)年就会轮回转世,这里\(a!\)表示\(a\)的阶乘。

Koyomi不关心这些,在他和更多的奇物搞的一团糟之前,他想知道在\(b!\)年中,凤凰会重生多少次,即\(\frac{b!}{a!}\)。

当\(a\leq b\)时,\(\frac{b!}{a!}\)总是整数。

答案可能会很大,所以Koyomi想知道答案的最后一位(十进制下)。

输入:

第一行,两个整数\(a,b(0\leq a\leq b\leq 10^{18})\)。

输出:

一个数字,表示答案的最后一位。

题解:

当\(b-a\geq5\)时,输出0。

#include<cstdio>
int main(){
long long a,b;
scanf("%I64d%I64d",&a,&b);
if(b-a>=) puts("");
else{
int last=;
for(long long c=a+;c<=b;++c) last=last*(c%);
printf("%d",last%);
}
return ;
}

【C】有趣的迷恋

题意:

齐心协力,我们可以以超乎想象的速度到达任何地方!现在,Fire Sisters——Karen和Tsukihi正在前往一个她们从未到达的地方——水中的小岛!

有三种不同类型的小岛,方便地,各自涂上了红,蓝,紫三色。每种颜色的小岛各自有\(a,b,c\)个。

这些小岛之间初始时互相分离。可以在小岛之间架桥,两个小岛间最多架一座桥。

但要满足:任意两个不同的颜色相同的小岛的最短距离要大于等于3(桥的长度为1)。

请你计算出不同的架桥方案有多少种。答案对998244353取模。

输入:

三个非负整数,\(a,b,c(0\leq a,b,c\leq5000)\)。

输出:

一个数,不同的架桥方案数对998244353取模的结果。

题解:

观察到一个颜色的小岛不能连向自己颜色的,也不能向同一颜色的小岛连去两条边。

也就是说,一个小岛能向另两种颜色的小岛连边,一种颜色最多连一条。

设\(f[i][j]\)表示两种颜色的小岛各有\(a,b\)个,它们之间互相连边,并满足条件的种数。

则答案等于\(f[a][b]\cdot f[b][c]\cdot f[c][a]\)。

而\(f[i][j]=f[i-1][j]+j\cdot f[i-1][j-1]\),这一点可以简单地推出。

我们使用动态规划算法求出所有可能的\(f[i][j]\)即可。

#include<cstdio>
const int Mod=;
long long f[][];
int main(){
for(int i=;i<=;++i) f[][i]=f[i][]=;
for(int i=;i<=;++i) for(int j=;j<=;++j) f[i][j]=(f[i-][j]+j*f[i-][j-])%Mod;
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%I64d",f[a][b]*f[b][c]%Mod*f[c][a]%Mod);
return ;
}

【D】

不会

【E】

二维树状数组可做。

【codeforces】【比赛题解】#869 CF Round #439 (Div.2)的更多相关文章

  1. Codeforces Round #439 (Div. 2)【A、B、C、E】

    Codeforces Round #439 (Div. 2) codeforces 869 A. The Artful Expedient 看不透( #include<cstdio> in ...

  2. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  3. CF Round #551 (Div. 2) D

    CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...

  4. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  5. CF Round #600 (Div 2) 解题报告(A~E)

    CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...

  6. Codeforces Round #439 (Div. 2) 题解

    题目链接  Round 439 div2 就做了两道题TAT 开场看C题就不会 然后想了好久才想到. 三种颜色挑出两种算方案数其实是独立的,于是就可以乘起来了. E题想了一会有了思路,然后YY出了一种 ...

  7. Codeforces Round #439 (Div. 2)

    A. The Artful Expedient 题目链接:http://codeforces.com/contest/869/problem/A 题目意思:给你两个数列,各包含n个数,现在让你从上下两 ...

  8. Codeforces Round #439 (Div. 2) E. The Untended Antiquity

    E. The Untended Antiquity 题目链接http://codeforces.com/contest/869/problem/E 解题心得: 1.1,x1,y1,x2,y2 以(x1 ...

  9. Codeforces Round #439 (Div. 2) C. The Intriguing Obsession

    C. The Intriguing Obsession 题目链接http://codeforces.com/contest/869/problem/C 解题心得:     1.由于题目中限制了两个相同 ...

随机推荐

  1. UVALive6442_Coins on a Ring

    真正的水题,可惜无法当场机智一下. 这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少? 其实是这样来考虑的,我们可以随便设置 ...

  2. STL Map和multimap 容器

    STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力.       ...

  3. 【bzoj1087】互不侵犯King

    Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...

  4. 洛谷 P1072 Hankson 的趣味题 解题报告

    P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...

  5. Linux发不出分片包的问题分析

    今日有个网络攻击模拟需求,要打分片的ip包,程序写好了,在开发机上验证也没问题,然后部署到沙盒环境之后不行,就是发不出来数据包,而不分片的数据包能够正常发送,定位过程如下 1.对比了两台机器/proc ...

  6. WEB下面路径的问题

    web 中的  /  到底代表什么? 绝对路径-以Web站点根目录为参考基础的目录路径.之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的.相对路径-以引用文件之网页所在位置为参考 ...

  7. .gitignore 无效问题

    利用.gitignore过滤文件,如编译过程中的中间文件,等等,这些文件不需要被追踪管理. 现象: 在.gitignore添加file1文件,以过滤该文件,但是通过Git status查看仍显示fil ...

  8. Casting a Classifier into a Fully Convolutional Network将带全连接的网络做成全卷积网络

    详见:http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb 假设使用标准的caffe ...

  9. Shell记录-Shell命令(定时任务)

    在Linux系统中, at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron(crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因 ...

  10. 2016/1/2 Python中的多线程(1):线程初探

    ---恢复内容开始--- 新年第一篇,继续Python. 先来简单介绍线程和进程. 计算机刚开始发展的时候,程序都是从头到尾独占式地使用所有的内存和硬件资源,每个计算机只能同时跑一个程序.后来引进了一 ...