Codeforces Round #676 (Div. 2)A-D题解

东方财富网股票API逆向分析:手把手教你破解动态参数(2024最新版) 本文详细解析了2024年东方财富网股票API的动态参数生成机制,包括回调函数、身份验证和时效控制参数的逆向工程方法。通过实战代码演示,帮助开发者破解动态参数,实现高效稳定的股票数据爬取,适用于金融数据分析和量化交易场景。 阅读详情

Codeforces Round #676 (Div. 2)A-D题解
比赛链接:https://codeforces.com/contest/1421

A题
水,贪心,位运算

题意为给定两个正整数a和b,你需要找到一个x,使得a异或x加上b异或x的值最小。输出这个最小值。

首先把a和b全部写为二进制。
对于二进制上同一位来说,如果a在这一位上与b在这一位上的值相同,也就是同为1或者同为0,我们可以让x在这一位上的值与a和b的值相同,就可以使得最后结果的这一位上变为0,满足尽可能小这一目标。
如果a和b在这一二进制为上的值一个为1,一个为0,无论我们的x在这一位上是1还是0,最后的结果在这一位上都是1。
总结后可以得到一个规律,在二进制位上a和b相同的位,最后结果为0;不相同的位,最后结果为1。与异或运算相契合,因此直接输出a异或b即可。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    int t;
    cin>>t;
    while(t--)
    {
        int a,b;
        cin>>a>>b;
        cout<<(a^b)<<endl;
    }
}

B题
构造

题意为给定一个n×\times×n的矩阵,其中(1,1)为起点S,(n,n)为终点F,其余位置均为0或者1。
从起点出发,现在0或者1中选择一个值,之后只能走当前位置相邻且与该值相等的格子。
现在你最多改变两个格子的值,从0改为1或者从1改为0,使得从起点无法有路径到达终点。

这里的话要注意到,我们的可操作次数非常少,最多只有2次,因此我们必然要改变关键的格子位置。
对于起点和终点来说,与他们相邻的分别有两个格子,这4个格子是最为关键的。
我们只需要让起点周围的两个格子的值相同,终点周围的两个格子的值相同,且起点和终点周围的格子值不相同。这样的话从起点出发就必须只能选择起点周围格子的那个值,而这个值是必然走不到终点的。

按照这种构造思路,按照起点终点周围格子值的情况再分成三种情况讨论:
1.起点周围两个格子的值相等,我们只需要将终点周围的两个格子变为与起点不同即可。
2.终点周围两个格子的值相等,我们只需要将起点周围的两个格子变为与终点不同即可。
3.不满足上述两种情况下,起点周围的两个格子一个为1一个为0,终点周围的两个格子同样一个为1一个为0,我们把起点周围的1变为0,终点周围的0变为1即可。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

string field[207];
bool right_start,down_start;
bool up_end,left_end;

int32_t main()
{
	IOS;
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i=0;i<n;i++) cin>>field[i];
		right_start=field[0][1]-'0';
		down_start=field[1][0]-'0';
		up_end=field[n-2][n-1]-'0';
		left_end=field[n-1][n-2]-'0';
		vector<pair<int,int>>ans;
		if(right_start==down_start)//如果起点的右侧和下侧两个点的值相同
		{
			if(up_end==right_start) ans.push_back({n-1,n});//将终点上侧和左侧点的值变为与起点周围不同
			if(left_end==right_start) ans.push_back({n,n-1});
		}
		else if(up_end==left_end)//如果终点上侧和左侧点的值相同
		{
			if(right_start==up_end) ans.push_back({1,2});//将起点右侧和下侧的两个点的值变为与终点周围不同
			if(down_start==up_end) ans.push_back({2,1});
		}
		else//剩余的情况就是起点周围的两个点不相同,且终点周围的两个点周围都不相同的情况
		{
			if(right_start) ans.push_back({1,2});//我们把起点周围的1变为0,只会有1次操作
			if(down_start) ans.push_back({2,1});
			if(!up_end) ans.push_back({n-1,n});//把终点周围的0变为1,同样只会有1次操作
			if(!left_end) ans.push_back({n,n-1});
		}
		cout<<ans.size()<<endl;
		for(int i=0;i<ans.size();i++) cout<<ans[i].first<<' '<<ans[i].second<<endl;
	}
}

C题
字符串构造

题意为给定一个长度至少为3,最大为1e5的字符串S,你需要在30次操作内使得这个字符串变为回文串,且长度不超过1e6。
你可以执行两种操作,令length为字符串的当前长度
第一种操作,选择一个下标x,x在2到length-1之间(闭区间),将下标2到x的子串翻转后复制到字符串头部。
第二种操作,选择一个下标x,x在2到length-1之间(闭区间),将下标x到length-1的子串翻转后复制到字符串尾部。

注意到这个操作方式得到的字符串,有个恶心的点,如果我们选择操作2,下标选择2的话,类似字符串abcd会变成abcdcb,就因为复制的部分少了下标1的这个字符,导致无法构成回文串。
那么我们可以想到,如果原字符串是ababcd这样的形式(头部第一个字符和第三个字符相同),操作2下标选择2后,字符串是ababcdcbab,我们再执行操作2,下标选择length-1,就是ababcdcbaba回文串了。
那么我们能否将任意的字符串都构造成头部第一个字符和第三个字符相同的形式呢?我们可以通过一次简单的操作1,下标选择2,就可以得到的这样的字符串。

因此执行上述的三次操作,就可以将任意给定的字符串变为回文串,且长度变为原来的两倍加一,必然在1e6之内。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    string s;
    cin>>s;
    cout<<3<<endl;
    cout<<'L'<<' '<<2<<endl;
    cout<<'R'<<' '<<2<<endl;
    cout<<'R'<<' '<<s.size()*2-1<<endl;
}

D题
贪心,分类讨论

题意为在一个六边形的蜂房上,起点在(0,0),告诉你终点位置,并且告知朝着六个方向移动的消耗,询问最小消耗是多少。

这里先认识到,六个方向分别对应六种坐标的改变方式,先用c[]数组存储下来。
c[0]对应(+1,+1)
c[1]对应(0,+1)
c[2]对应(-1,0)
c[3]对应(-1,-1)
c[4]对应(0,-1)
c[5]对应(+1,0)
之后再根据贪心的策略可以知道,c[0]和c[3]操作,c[2]和c[5]操作这些都是不可能同时使用的,因为这样走了回头路,必然不是最优的了。

我们可以列出这样的组合方式:
1.(+1,0)和(-1,0)中的一种与(0,+1)和(0,-1)中的一种组合,直接横纵坐标割裂开走到终点。
2.(+1,+1)与(+1,0)或者(0,+1)组合,处理终点横纵坐标均大于0的情况,此处必然要优先使用(+1,+1)否则横坐标或者纵坐标中必然有一个是无法被另一个操作改变的。
3.(-1,-1)与(-1,0)或者(0,-1)组合,处理终点横纵坐标均小于0的情况,此处必然要优先使用(-1,-1)否则横坐标或者纵坐标中必然有一个是无法被另一个操作改变的。(后面的情况都是如此,不再赘述)
4.(+1,+1)与(0,-1)组合,处理终点横坐标不小于0,且纵坐标不大于横坐标的情况
5.(+1,+1)与(-1,0)组合,处理终点纵坐标不小于0,且横坐标不大于纵坐标的情况
6.(-1,-1)与(+1,0)组合,处理终点纵坐标不大于0,且横坐标不小于纵坐标的情况
7.(-1,-1)与(0,+1)组合,处理终点横坐标不大于0,且纵坐标不小于横坐标的情况
除了上述的两两组合外,其他所有的两两组合均存在前面讨论的回头路情况,不是最优。并且上述的两两组合中再增加任何一个不同的第三种操作,同样会形成回头路。因此讨论上述情况即可。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
	IOS;
	int t;
	cin>>t;
	while(t--)
	{
		ll x,y;
		cin>>x>>y;
		ll c[6];
		for(int i=0;i<6;i++) cin>>c[i];
//		c[0]对应(+1,+1)
//		c[1]对应(0,+1)
//		c[2]对应(-1,0)
//		c[3]对应(-1,-1)
//		c[4]对应(0,-1)
//		c[5]对应(+1,0)
		ll ans=0;
		if(x>0) ans+=x*c[5];//直接选择c[2]或者c[5],再使用c[1]或者c[4]所需要的消耗
		else ans-=x*c[2];
		if(y>0) ans+=y*c[1];
		else ans-=y*c[4];
		if(x>=0&&y>=0)//处理终点横纵坐标均大于0的情况
		{
			ll temp=min(x,y)*c[0];
			if(x>y) temp+=(x-y)*c[5];
			else temp+=(y-x)*c[1];
			ans=min(ans,temp);
		}
		if(x<=0&&y<=0)//处理终点横纵坐标均小于0的情况
		{
			ll temp=-max(x,y)*c[3];
			if(x<y) temp+=(y-x)*c[2];
			else temp+=(x-y)*c[4];
			ans=min(ans,temp);
		}
		if(x>=0&&y<=x) ans=min(ans,c[0]*x+c[4]*(x-y));//处理终点横坐标不小于0,且纵坐标不大于横坐标的情况
		if(y>=0&&x<=y) ans=min(ans,c[0]*y+c[2]*(y-x));//处理终点纵坐标不小于0,且横坐标不大于纵坐标的情况
		if(y<=0&&x>=y) ans=min(ans,-c[3]*y+c[5]*(x-y));//处理终点纵坐标不大于0,且横坐标不小于纵坐标的情况
		if(x<=0&&y>=x) ans=min(ans,-c[3]*x+c[1]*(y-x));//处理终点横坐标不大于0,且纵坐标不小于横坐标的情况
		cout<<ans<<endl;
	}
}

SAP 调用Ftp服务器 FTP(File transfer protocol)是一种标准的网络协议,可以用于在互联网上传递文件。SAP系统中可通过系列配置和提供的些标准函数,用于查看、更新、下载FTP服务器上的文件。提示:以下是本篇文章正文内容,下面案例可供参考。 阅读详情

相关推荐

STM32/GD32以太网开发避坑指南:ZLG EPORTM模块调试实战(含YT8512H配置)

本文针对STM32/GD32平台使用ZLG EPORTM模块进行以太网开发时遇到的常见问题,提供了详细的调试实战指南。重点解析了从传统PHY驱动迁移到YT8512H芯片的核心步骤,包括软件复位延时、RMII时钟配置等关键陷阱,并分享了LWIP集成与稳定性验证的实用经验,帮助开发者高效避坑。

rice5的博客 1161

Codeforces Round #676 (Div. 2)

A. XORwice 题意 输入a和b,求 (????⊕????) + (????⊕????) (x为任意值) 的最小值。 题解 要使(????⊕????) + (????⊕????)最小,言外之意就是将a和b转化为二进制下的公共的1部分被异或,答案其实就是a^b。 int main() { int t; cin >> t; while(t--) { int a,b; cin >> a >> b; cout << (a^b) <&lt

张小生的先生的博客 568

从零搭建Arduino仿真开发环境:SimulIDE与IDE配置全攻略

本文详细介绍了如何从零搭建Arduino仿真开发环境,涵盖SimulIDE与Arduino IDE的配置全流程。通过仿真模拟环境,开发者可以零成本试错,快速验证电路设计和程序逻辑,特别适合初学者和便携开发需求。文章提供了软件安装、环境配置、项目实战及问题排查的完整指南,帮助读者高效掌握Arduino仿真开发技巧。

weixin_29284657的博客 518

C语言,求两正整数的最大公约数算法

1.题目分析 题目:求两正整数的最大公约数。 (1).辗转相除法(又名欧几里德法)C语言中用于计算两个正整数a,b的最大公约数和最小公倍数,实质它依赖于下面的定理: a b=0 gcd(a,b) = gcd(b,a mod b) b!=0 根据这一定理可以采用函数嵌套调用和递归调用形式进行求两个数的最大公约数和最小公倍数,现分别...

weixin_42022728的博客 5519

成本150元的高性能RDP协议瘦客户机

云终端市场是一个跨度很大的市场。既有数千元的品牌的瘦客户机,也有几百元的瘦客户机,还有200-300元的支持RDP协议的多用户云终端。但是200-300元的多用户终端,在显示性能上不尽人意,一般用于地产中介门店,工厂产线的电子看板等场合。有没有性能更好,价格更低的方案呢? 答案是有。 这个方案就是 二手的x86 瘦客户机 + DoraOS瘦客户机系统免费版(仅支持RDP)。 首先我们看硬件,在某宝搜索 升腾C92 ,找到最低配置的( CPU:J1800,内存:2G,硬盘:8G)。价格都在150以内。

云飞扬的桌面云 7411

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

Codeforces Round #676 (Div. 2) B

B. Putting Bricks in the Wall 原题链接 题面 Pink Floyd are pulling a prank on Roger Waters. They know he doesn’t like walls, he wants to be able to walk freely, so they are blocking him from exiting his room which can be seen as a grid. Roger Waters has a square

qq_52519330的博客 185

【C++】auto关键字(C++11,超详细解析,小白必看系列)

本文详细解析了C++中的“auto”关键字,介绍了其定义、基本用法、限制和高级用法,特别是与范围for循环和Lambda表达式结合的应用。

m0_73494049的博客 6万+

Codeforces Round #676 (Div. 2) A - D个人题解(E题待补)

1421A. XORwice 题目链接:Click Here cpp // Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> #define ms(a, b) memset(a, b, sizeof a) using namespace std; typedef long long ll; ll n, m, _; void solve() { cin >> n >> m; co

mds123456的博客 316

【Bug已解决】openclaw max turns reached / Tool calls exceeded limit — OpenClaw 最大轮次超限解决方案

OpenClaw 在执行过程中达到最大轮次限制任务未完成,本质是 --max-turns 设置过小或任务过于复杂。文中给出增加轮次、--continue 继续、分步执行等完整方案。

一键难忘的博客 5505

Matlab R2018b简体中文版完整安装图文教程(附安装包下载)

目 录 一、安装过程 二、下载地址 matlab R2018b安装包如下所示,包括主程序和补丁文件两部分。 一、安装过程 双击安装包中的setup.exe。 选择使用文件安装MIYAO,点击下一步。 接受协议,选择是,点击下一步。 输入序列号:09806-07443-53955-64350-21751-41297,点击下一步。 修改安装路径,点击下...

智慧空间实验室 1万+

Codeforces Round #676 (Div. 2) A - D个人题解(E题待补)

1421A. XORwice 题目链接:Click Here // Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> #define ms(a, b) memset(a, b, sizeof a) using namespace std; typedef long long ll; ll n, m, _; voi...

橘嘉禾 67

Python 爬虫实战:微信搜一搜内容深度爬取(含搜索结果解析与企业级架构设计)

在信息爆炸的时代,微信搜一搜已成为海量信息获取的重要入口。无论是个人知识探索,还是企业舆情监控,掌握微信搜一搜内容的深度爬取能力具有巨大价值。本文将从基础原理到企业级实现,全面解析微信搜一搜爬虫的开发过程。

yansideyucsdn的博客 2455

Codeforces Round #676 (Div. 2) D. Hexagons

Codeforces Round #676 (Div. 2) D. Hexagons (贪心&思维) 思路:对某一个范围的点的进行考虑,比如C1,C2C_1,C_2C1​,C2​ 夹角区域的点,显然C4,C5C_4,C_5C4​,C5​两种操作不用考虑,然后因为C3,C6C_3,C_6C3​,C6​相互抵消,肯定至多考虑一种,所以六个操作变成了三个操作,然后又因为C2C_2C2​操作等价于C1+C3C_1+C_3C1​+C3​,所 以只需比较两者花费,若C1+C3C_1+C_3C1​+C3​较小,

Harris-H的博客 577

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Codeforces Round #676 (Div. 2)题解

Problem - A - Codeforces 题目大意:给定数a和b,请你找出一个数x,使得a^x + b^x的值最小,输出最小值. 思路:为了使两个数异或之后的和尽可能地小,那么只有当两个数同一位上都是1的时候才会变小,此时x该位上可以为1,如果a,b该位上不相等,那么x为1或者为0都不影响结果.那么可以发现,ax+bx的最小值就是a^b的值. #include<bits/stdc++.h> using namespace std; #define rep(x,y,z) for(i

qq_53629286的博客 160

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Codeforces Round #676 (Div. 2)-D. Hexagons(模拟)

Codeforces Round #676 (Div. 2)-D. Hexagons Lindsey Buckingham told Stevie Nicks “Go your own way”. Nicks is now sad and wants to go away as quickly as possible, but she lives in a 2D hexagonal world. Consider a hexagonal tiling of the plane as on the pictu

weixin_45434743的博客 202

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Codeforces Round #675 (Div. 2)、Codeforces Round #676 (Div. 2)

Codeforces Round #675 (Div. 2)、Codeforces Round #676 (Div. 2) A. XORwice # include <iostream> # include <cstdio> void solve() { int a, b; scanf("%d%d", &a, &b); int x = a & b; int ans = (a ^ x) + (b ^ x); printf("%d\n", ans)

星宇康的博客 297

Codeforces Round #676 (Div. 2) A~E个人题解

Codeforces Round #676 (Div. 2)的全部个人题解

qq_53446104的博客 240

【解题报告】Codeforces Round #354 (Div. 2)

简略的解题报告。

TRiddle的博客 657

A. XORwice(思维)Codeforces Round #676 (Div. 2)

原题链接: https://codeforces.com/contest/1421/problem/A 测试样例 input 6 6 12 4 9 59 832 28 14 4925 2912 1 1 output 10 13 891 18 6237 0 Note For the first test case Sana can choose x=4 and the value will be(6⊕4)+(12⊕4)=2+8=10(6⊕4) + (12⊕4) = 2+8 = 10(6⊕4)+(12⊕

pursuit的博客 636

Codeforces Round #724 div.2 A-F题解

视频讲解:TBD A. Omkar and Bad Story 题目大意 如果数组 bbb 中任意两个元素之差的绝对值 ∣bi−bj∣|b_i-b_j|∣bi​−bj​∣ 都在数组 bbb 中至少出现一次,则称数组 bbb 是好数组。 给定一个包含 n(2≤n≤100)n(2 \leq n \leq 100)n(2≤n≤100) 的数组 a(−100≤ai≤100)a(-100 \leq a_i \leq 100)a(−100≤ai​≤100) ,问是否能向 aaa 中添加整数,使其变成一个不超过 3003

月阁 963

Codeforces Round 676 完整题解

A.XORwice 题意: 给定a,b,你可以随机选择一个数x,求(a⊕x)+(b⊕x)的最小值。 题解: 在二进制上每一位考虑,如果某一位都是1或0,那么x的这一位就是0,如果一个是1,一个是0,那么他x不管怎么选这一位都会留下。这个过程跟异或是一样的,所以就是a^b。 int main() { for(scanf("%d",&_);_;_--){ a=rd();b=rd(); printf("%lld\n",a^b); } return 0

CallmeChallenger的博客 486

Codeforces Round #676(Div. 2) A,B,C,D

文章目录A. XORwiceB. Putting Bricks in the WallC. PalindromifierD. Hexagons A. XORwice 要使值最小,我们要尽可能将1变成0,如果一个位上ai与bi不同,那么无论x这位取什么都没有影响,如果同为0,那么取0,如果同为1,取1。 #include <iostream> #include <stdio.h> #include <cstring> #include <algorithm> u

hhhcbw的博客,欢迎各位来访 198

Codeforces Round #676 (Div. 2)(A-D)

A. XORwice(思维+位运算) B. Putting Bricks in the Wall(思维+构造) C. Palindromifier(思维+构造) D. Hexagons(思维+变形矩阵)

代码笔记本 289
上一篇: 2020浙江省ACM省赛后记
下一篇: Codeforces Round #678 (Div. 2)A-E题解
StandNotAlone
博客等级 码龄7年 338粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值