Contest link

A.Specific Tastes of Andre

Problem link

题意

构造一个长度为 \(n\) 的序列,使得每个非空子序列的和都被其长度整除。

思路

直接每个数都是 \(1\) 即可。

代码

int main()
{
int T; scanf( "%d",&T );
while ( T-- )
{
int n=read();
for ( int i=1; i<=n; i++ )
printf( "1 " );
printf( "\n" );
}
return 0;
}

B.Valerii Against Everyone

Problem link

题意

给定一个长度为 \(n(n\leq 1000)\) 的序列 \(b(b_i\leq 1e9)\) ,定义 \(a_i=2^{b_i}\) ,问 \(a\) 中是否存在两个不相交子序列的和一样。

思路

不相交首先是没用的;因为相交就把中间部分去掉即可。

如果两个串的和相等,

  1. 如果两个串不是完全等价,那么一定存在二进制中的进位,也就是必定存在两个元素相等,选这两个即可;

  2. 如果完全等价,那么显然存在两个元素相等。

所以 sort 一下,然后判断有没有相等元素即可。

代码

int main()
{
int T=read();
while ( T-- )
{
int n=read();
for ( int i=1; i<=n; i++ )
b[i]=read();
sort( b+1,b+1+n ); bool fl=0;
for ( int i=1; i<n; i++ )
if ( b[i]==b[i+1] ) { fl=1; printf( "YES\n" ); break; }
if ( !fl ) printf( "NO\n" );
}
return 0;
}

C.Engineer Artem

Problem link

题意

给定一个 \(n\times m\) 的矩阵 \(a\) ,要求给出一个矩阵 \(b\) 满足 \(b_{i,j}=a_{i,j}\) 或者 \(b_{i,j}=a_{i,j}+1\) ,使得任意相邻元素均不相同。

思路

能够 \(+1\) 就相当于能随意改变奇偶。把棋盘黑白相间染色,白色填偶数黑色填奇数即可。(反之亦然)

思路

int main()
{
int T=read();
while ( T-- )
{
int n=read(),m=read();
for ( int i=1; i<=n; i++ )
for ( int j=1; j<=m; j++ )
a[i][j]=read(); for ( int i=1; i<=n; i++ )
for ( int j=1; j<=m; j++ )
if ( (a[i][j]&1)!=((i+j)&1) ) a[i][j]++; for ( int i=1; i<=n; i++,printf("\n") )
for ( int j=1; j<=m; j++ )
printf( "%d ",a[i][j] );
}
return 0;
}

D. Powerful Ksenia

Problem link

题意

给定一个 长度为 \(n\) 的序列 \(a\) ,能够选择三个数并把它们变成它们的异或和,求是否能把整个序列变成一样,或者无解,并给出方案。

思路

分奇偶来做。首先一个显然的性质是,形如 \(a,b,b\) 的方案能恰好同化一个 \(a\) .

当 \(n\) 为奇数时,每次任选三个数操作,并把其中两个配对;这样最后只会剩下一个不同的数,把这个和其他任意两个再做一遍,根据上面的性质,一定可以完成。

当 \(n\) 为偶数时,对于 \(n-1\) 进行同奇数一样的操作,如果所有数的异或和为 \(0\) (也就是最后一个恰好和之前的相等)那么就完成了;否则是无解。

代码

int main()
{
n=read(); int sum=0;
for ( int i=1; i<=n; i++ )
a[i]=read(),sum^=a[i]; if ( n%2==0 )
{
if (sum ) { printf( "NO\n" ); return 0; }
n--;
}
printf( "YES\n%d\n",n-2 );
for ( int i=1; i<=n-2; i+=2 )
printf( "%d %d %d\n",i,i+1,i+2 );
for ( int i=1; i<=n-4; i+=2 )
printf( "%d %d %d\n",i,i+1,n );
}

E. Yurii Can Do Everything

Problem link

题意

如果一个子串是 good ,当且仅当它的头尾元素异或和等于中间元素异或和。求一个序列这样的子串个数。

思路

考虑一个满足条件的子串: \(a_l,a_{l+1},...,a_r\)

由题意得 \(a_l\oplus a_r=\sum_{i=l+1}^{r-1} a_i\) 。设 \(a_l,a_r\) 二进制中最高位为 \(k_l,k_r\) ,那么一定有 \(2^{max(k_l,k_r)+1}>\sum_{i=l+1}^{r-1} a_i\) ,所以正序逆序分别处理,并在不满足时直接跳出即可。

由于要处理正序和逆序两遍,所以每次只需要和 \(2^{k_l+1}\) 比较即可,否则会计算重复。

代码

void work( bool opt )
{
for ( int i=1; i+2<=n; i++ )
{
ll s=a[i+1]; int k=0;
for ( int j=0; j<=29; j++ )
if ( (a[i]>>j)&1 ) k=j;
if ( !opt )
{
for ( int j=i+2; j<=n; j++ )
{
if ( s==(a[i]^a[j]) ) ans++,mp[make_pair(n-j+1,n-i+1)]=1;
s+=a[j];
if ( s>=(1<<(k+1)) ) break;
}
}
else
{
for ( int j=i+2; j<=n; j++ )
{
if ( s==(a[i]^a[j]) && !mp.count({i,j}) ) ans++;
s+=a[j];
if ( s>=(1<<(k+1)) ) break;
}
} }
}

Codeforces Round #682 Div2 简要题解的更多相关文章

  1. Educational Codeforces Round 80 A-E简要题解

    contest链接:https://codeforces.com/contest/1288 A. Deadline 题意:略 思路:根据题意 x + [d/(x+1)] 需要找到一个x使得上式小于等于 ...

  2. CF Round #687 Div2 简要题解

    题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C ...

  3. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  4. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  5. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  6. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  7. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  8. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  9. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

随机推荐

  1. 进程 PCB 进程挂起

    7-1 进程定义  OS系统从只能跑一个程序到能跑多个.进程可以描述程序的执行过程. 进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程. 只有当一个程序被OS加载到内存中,cpu对其 ...

  2. pycharm远程编译

    1. 按照 https://www.cnblogs.com/xiongmao-cpp/p/7856596.html 完成配置 2. 使用步骤: (1)在本地新建代码文件或工程 (2)编写代码,完成后若 ...

  3. IDEA 使用的一些快捷键记录

    1,ctrl+tab 导航当前编辑打开的所有文件,按住Ctrl,使用backspace 可以关闭某个文件 2,ctrl+shift+alt+s 打开项目设置,alt+shift+s 打开所有设置 3, ...

  4. Natapp内网穿透服务工具

    在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口.由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP,所以 ...

  5. 渗透测试神器Cobalt Strike使用教程

    Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器.Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队 ...

  6. kali 安装redis

    wget http://download.redis.io/releases/redis-2.8.3.tar.gz    下载 tar xzf redis-2.8.3.tar.gz          ...

  7. vue路由参数的获取、添加和替换

    获取路由参数 getUrlKey(name){//获取url 参数 return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&am ...

  8. 用MindManager做完思维导图后怎么加密

    使用MindManager我们可以制作出很多简洁明了的思维导图,然而,不论是分享还是查看这些导图,我们往往需要对导图进行加密操作,尤其是制定公司或企业的下一步发展计划时,加密导图就显得很有必要了. M ...

  9. js 表格上checkbox 全选

    <table class="layui-table"> <thead> <tr> <th width="75"> ...

  10. PHP获取数组中重复值的键值

    $array = array ( 0=>'a', 1=>'b', 2=>'a', 5=>'b', 6=>'c', 40=>'d' ); $keyarr =[];$r ...