CF Round #580(div2)题解报告

T1 T2

水题,不管

T3

构造题,证明大约感性理解一下

我们想既然存在解

\(|a[n + i] - a[i]| = 1\)

这是必须要满足的

既然这样,那么图必须是这样的

\(-\),是相邻的两个数中的较小的一个,\(+\)是相邻的两个数中较大的

这样分配是肯定有解的

但是当n时偶数的时候,手玩一下就会发现,不可能满足+-交替,所以无解

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<vector>
#include<ctime>
#define LL long long
#define pii pair<int,int>
#define mk make_pair
#define fi first
#define se second
using namespace std;
inline int read(){int v = 0,c = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') c = -1;ch = getchar();}while(isdigit(ch)){v = v * 10 + ch - 48;ch = getchar();}return v * c;
}
const int N = 5e5 + 3;
int a[N];
int n;
int main(){n = read();if(n & 1){int now = 0;for(int i = 1;i <= n;++i){if(!now) a[i] = i * 2 - 1,a[i + n] = i * 2;else a[i] = i * 2,a[i + n] = i * 2 - 1;now ^= 1;}printf("YES\n");for(int i = 1;i <= 2 * n;++i) printf("%d ",a[i]);  }   else printf("NO\n");return 0;
}

T4

分位考虑

这道题的关键在于给你张图,求最小环

由于点数和边数特别少,所以直接爆搜就好了

但是考虑多项式做法

最小环的本质是对于边\((u,v)\),去掉边后\((u,v)\)的最短路径\(+1\)

这可以在floyd的过程中搞一搞

当然,这是在边有边权的前提下
这道题目直接枚举每一条边然后bfs就好了

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<vector>
#include<ctime>
#define LL long long
#define pii pair<int,int>
#define mk make_pair
#define fi first
#define se second
const int INF = 0x3f3f3f3f;
using namespace std;
inline LL read(){LL v = 0,c = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') c = -1;ch = getchar();}while(isdigit(ch)){v = v * 10 + ch - 48;ch = getchar();}return v * c;
}
const int N = 2e5 + 3;
LL a[N];
int n,ans;
int xx[65],yy[65];
int tot,rt;
struct edge{int to;int from;int nxt;
}e[N << 1];
int head[N];
int deep[N],fa[N];
int book[N];
int vis[N];
inline void add(int x,int y){e[++tot].to = y;e[tot].nxt = head[x];e[tot].from = x;head[x] = tot;
}
inline void dfs(int x,int dep){
//  book[x] = 1;vis[x] = 1;for(int i = head[x];i;i = e[i].nxt){int y = e[i].to;if(y == rt && dep > 2) ans = min(ans,dep);else if(!vis[y]) dfs(y,dep + 1);}vis[x] = 0;
}
int main(){//freopen("A.in","r",stdin);//freopen("A.out","w",stdout);n = read();for(int i = 1;i <= n;++i) a[i] = read();for(int i = 0;i <= 62;++i){int sum = 0;for(int j = 1;j <= n;++j){if(a[j] & (1ll << i)){if(!xx[i]) xx[i] = j;else if(!yy[i]) yy[i] = j;sum++;if(sum == 3){printf("3\n");return 0;   }}}if(sum == 2) add(xx[i],yy[i]),add(yy[i],xx[i]);//printf("%d %d\n",xx[i],yy[i]);}ans = INF;for(int i = 1;i <= n;++i){dfs(rt = i,1);if(ans == 3){printf("3\n");return 0; }}if(ans > n) printf("-1\n");else printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/wyxdrqc/p/11375805.html

CF Round #580(div2)题解报告相关推荐

  1. CF Round #679 div2赛后总结

    前言 好不容易遇到一次简单的div2,竟然才A了三题,可恶的第4题,死活调不出来QAQ. 比赛地址 A 题意:给你TTT组数据,每组数据nnn个整数(nnn是偶数),分别为a1,a2,...,ana_ ...

  2. cf round #421 div2 D. Mister B and PR Shifts

    链接:http://codeforces.com/contest/820/problem/D 分析:|p[i]-i|每次只会变化1,先不考虑端点情况,就只有p[i]==i的时候变化,每次k+1的时候, ...

  3. CF Round#436 div2

    额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. ...

  4. CF1471(Round 694 div2) 题解

    CF1471A 先从最简单的情况入手:数组中只有两个数 aaa 和 bbb. 令 a=cx+d,b=mx+k(0≤d,k<x)a=cx+d,b=mx+k(0\le d,k < x )a=c ...

  5. CF1467(Round 695 div2)题解

    CF1467A 显然: nnn 为 111 时答案为 999 nnn 为 222 时答案为 989898 nnn 为 333 时答案为 989989989 当 n>3n>3n>3 时 ...

  6. 【题解报告】ZJNU综合训练(2021.1.26)

    [题解报告]ZJNU综合训练(2021.1.26) B C D F H I J M 综合训练 ZJNU综合训练(2021.1.26) B:DP+搜索 | CF 1057C C:组合数学+dp | CF ...

  7. Codeforces round 654 赛后解题报告

    Codeforces round 654 赛后解题报告 先吐槽一下怎么 A-D 都是结论题啊啊 A. Magical Sticks 我们可以先确定下来,我们一定只对于未进行过拼接的木棍拼接. 学过等差 ...

  8. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  9. CSP-2019day1题解报告

    day1题解报告 题目 T1 T2 从链想起 转为正解 T3(摘自同级大佬xez) 题目 T1传送门 T2传送门 T3传送门 T1 乍一看,这道题做过,可以用对称性做,如果他的长度过了一半,就输出1, ...

  10. 爆炸的符卡洋洋洒洒题解报告

    爆炸的符卡洋洋洒洒题解报告 标签:动态规划 题目链接 来源:牛客网 解题思路: 显而易见的背包问题 但再观察a,b的数据范围,开不了那么大的dp数组 这就启发我们去优化,由于题目要求魔力总耗的是k的倍 ...

最新文章

  1. Android studio 设置忽略文件
  2. Linux_RHEV虚拟化_基础理论KVM
  3. SHT30温湿度传感器驱动设计分析及代码实现
  4. 下列设备中 微型计算机系统必须具备的是,计算机应用基础题库
  5. Windows下怎样设置jar包开机自启动运行
  6. eclipse导入Tomcat8源码
  7. 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统
  8. Jenkins + Gitlab + Ansible--playbook 代码上线流程
  9. Reasoning about Entailment with Neural Attention-学习笔记
  10. Error creating bean with name ‘userController‘: Unsatisfied dependency expre
  11. Tomcat下找不到properties文件
  12. 结构变量的定义和引用
  13. 怎么搭建服务器集成环境配置文件,怎么搭建服务器集成环境配置文件
  14. 高德经纬度距离计算php,距离/面积计算-地图计算工具-开发指南-iOS 地图SDK | 高德地图API...
  15. 给Ubuntu配置静态IP地址
  16. Vue3.0调用PC端本地摄像头录像
  17. 【水文】2345——卸载!拜拜了您嘞
  18. 【Python基础】第十六篇 | 面向对象之高级篇
  19. 学习自旋电子学的笔记00:杂谈(闲话) OOMMF软件的安装
  20. STM32CubeMX基于HAL库实现简单串口通信

热门文章

  1. 支持x86/aarch/mips/loongarch的jogamp-2.3.2源码开源
  2. LINUX下载编译OpenAL Soft
  3. VS:无法将“char *”转换为“const wchar_t *”/不能将参数从“const char []”转换为“const wchar_t *”
  4. 电子双缝干涉,可以在穿过缝前进行探测
  5. 下载mp4v2代码的链接
  6. 纽微特记事:有了工作产出,领导吓坏了
  7. 管理感悟:派谁进行技术合作
  8. mysql sys exec_mylab_sys_exec UDF调用mysql外部系统命令(For linux)
  9. 网络请求返回数据格式_原生 Ajax 详解 - 响应数据格式
  10. python 移动平均线_如何使用NumPy计算移动平均线?