Codeforces Round #676 (Div. 2) E待补

“楼下一个男人病得要死,那间隔壁的一家唱着留声机,对面是弄孩子。楼上有两人狂笑;还有打牌声。河中的船上有女人哭着她死去的母亲。人类的悲欢并不相通,我只觉得他们吵闹。”

A - XORwice

把a和b看成二进制数处理,不难发现只要a,b某位都是1我们就有办法把它消掉,否则答案该位一定是a+b(0,1)该位的值

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;int T=1;cin>>T;while(T--){int a,b;cin>>a>>b;int res=0;for(int i=30;i>=0;i--)if(!(a>>i&1)&&(b>>i&1)||(a>>i&1)&&!(b>>i&1)) res+=1<<i;cout<<res<<'\n';}return 0;
}

B - Putting Bricks in the Wall

我们只要让g[1][2]g[2][1]的值相等并且不等于g[n][n-1]g[n-1][n]的值即可,最多操作3步。

懒得想了,直接枚举(24=162^4=1624=16),应该有更好写的写法。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=210;
char g[N][N];
int main()
{IO;int T=1;cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;i++) cin>>g[i]+1;if(g[1][2]=='0'&&g[2][1]=='0'&&g[n][n-1]=='0'&&g[n-1][n]=='0') cout<<2<<'\n'<<1<<' '<<2<<'\n'<<2<<' '<<1<<'\n';else if(g[1][2]=='1'&&g[2][1]=='0'&&g[n][n-1]=='0'&&g[n-1][n]=='0')cout<<1<<'\n'<<2<<' '<<1<<'\n';else if(g[1][2]=='0'&&g[2][1]=='1'&&g[n][n-1]=='0'&&g[n-1][n]=='0')cout<<1<<'\n'<<1<<' '<<2<<'\n';else if(g[1][2]=='1'&&g[2][1]=='1'&&g[n][n-1]=='0'&&g[n-1][n]=='0')cout<<0<<'\n';else if(g[1][2]=='0'&&g[2][1]=='0'&&g[n][n-1]=='1'&&g[n-1][n]=='0')cout<<1<<'\n'<<n-1<<' '<<n<<'\n';else if(g[1][2]=='1'&&g[2][1]=='0'&&g[n][n-1]=='1'&&g[n-1][n]=='0')cout<<2<<'\n'<<2<<' '<<1<<'\n'<<n<<' '<<n-1<<'\n';else if(g[1][2]=='0'&&g[2][1]=='1'&&g[n][n-1]=='1'&&g[n-1][n]=='0')cout<<2<<'\n'<<2<<' '<<1<<'\n'<<n<<' '<<n-1<<'\n';else if(g[1][2]=='1'&&g[2][1]=='1'&&g[n][n-1]=='1'&&g[n-1][n]=='0')cout<<1<<'\n'<<n<<' '<<n-1<<'\n';else if(g[1][2]=='0'&&g[2][1]=='0'&&g[n][n-1]=='0'&&g[n-1][n]=='1')cout<<1<<'\n'<<n<<' '<<n-1<<'\n';else if(g[1][2]=='1'&&g[2][1]=='0'&&g[n][n-1]=='0'&&g[n-1][n]=='1')cout<<2<<'\n'<<1<<' '<<2<<'\n'<<n<<' '<<n-1<<'\n';else if(g[1][2]=='0'&&g[2][1]=='1'&&g[n][n-1]=='0'&&g[n-1][n]=='1')cout<<2<<'\n'<<1<<' '<<2<<'\n'<<n-1<<' '<<n<<'\n';else if(g[1][2]=='1'&&g[2][1]=='1'&&g[n][n-1]=='0'&&g[n-1][n]=='1')cout<<1<<'\n'<<n-1<<' '<<n<<'\n';else if(g[1][2]=='0'&&g[2][1]=='0'&&g[n][n-1]=='1'&&g[n-1][n]=='1')cout<<0<<'\n';else if(g[1][2]=='1'&&g[2][1]=='0'&&g[n][n-1]=='1'&&g[n-1][n]=='1')cout<<1<<'\n'<<1<<' '<<2<<'\n';else if(g[1][2]=='0'&&g[2][1]=='1'&&g[n][n-1]=='1'&&g[n-1][n]=='1')cout<<1<<'\n'<<2<<' '<<1<<'\n';else    cout<<2<<'\n'<<1<<' '<<2<<'\n'<<2<<' '<<1<<'\n';}return 0;

C - Palindromifier

abcdef→(edcb)abcdef→edcbabcdef(edcba)→edcbabcdefedcba(bcde)abcdef \to (edcb)abcdef\to edcbabcdef(edcba)\to edcbabcdefedcba(bcde)abcdef(edcb)abcdefedcbabcdef(edcba)edcbabcdefedcba(bcde)
只要三步直接搞出来,可以配合代码和上述例子食用

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;int T=1;//cin>>T;while(T--){string s;cin>>s;int n=s.size();cout<<3<<'\n';cout<<"L "<<n-1<<'\n';cout<<"R "<<n-1<<'\n';cout<<"R "<<2*n-1<<'\n';}return 0;}

D - Hexagons

六个方向分别让坐标的变化:
c1:(x+1,y+1)c_1:(x+1,y+1)c1:(x+1,y+1)
c2:(x,y+1)c_2:(x,y+1)c2:(x,y+1)
c3:(x−1,y)c_3:(x-1,y)c3:(x1,y)
c4:(x−1,y−1)c_4:(x-1,y-1)c4:(x1,y1)
c5:(x,y−1)c_5:(x,y-1)c5:(x,y1)
c6:(x+1,y)c_6:(x+1,y)c6:(x+1,y)

不难发现操作c2+c6=c1c_2+c_6=c_1c2+c6=c1c3+c5=c4c_3+c_5=c_4c3+c5=c4
因此从两方面考虑是否使用c1c_1c1c4c_4c4操作
如果不使用那么只通过单独进行横坐标±1和纵坐标±1到达目的地直接算即可。
如果使用那么首先使得最终向x坐标和向y坐标移动的步数(dx=dy)相等,于是考虑先通过横坐标±1或者纵坐标±1操作使最终dx=dy,然后再通过c1c_1c1或者c4c_4c4操作使之到达目的地。
不过注意等效操作c2+c6=c1c_2+c_6=c_1c2+c6=c1c3+c5=c4c_3+c_5=c_4c3+c5=c4取代价更小的。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
ll c[10];
int main()
{IO;int T=1;cin>>T;while(T--){ll x,y;cin>>x>>y;for(int i=1;i<=6;i++) cin>>c[i];ll res=8e18;ll now=0;// +x 6// -x 3// +y 2// -y 5// 不用c1和c4if(x>=0&&y>=0)now=c[6]*x+c[2]*y;else if(x>=0&&y<0)now=c[6]*x+c[5]*(-y);else if(x<0&&y>=0)now=c[3]*(-x)+c[2]*y;elsenow=c[3]*(-x)+c[5]*(-y);res=min(res,now);// 使用c1和c4if(x>y){now=0;now+=c[5]*(x-y);if(x>=0) now+=min(c[1],c[2]+c[6])*x;else now+=min(c[4],c[3]+c[5])*(-x);res=min(res,now);now=0;now+=c[6]*(x-y);if(y>=0) now+=min(c[1],c[2]+c[6])*y;else now+=min(c[4],c[3]+c[5])*(-y);res=min(res,now);}else{now=0;now+=c[3]*(y-x);if(y>=0) now+=min(c[1],c[2]+c[6])*y;else now+=min(c[4],c[3]+c[5])*(-y);res=min(res,now);now=0;now+=c[2]*(y-x);if(x>=0) now+=min(c[1],c[2]+c[6])*x;else now+=min(c[4],c[3]+c[5])*(-x);res=min(res,now);}cout<<res<<'\n';}return 0;
}

吐槽一波,这题debug了半天竟然是上限搞小了,自己一般开101810^{18}1018结果有数据的答案比该值还大,最终把最大值开到8×10188×10^{18}8×1018才过的。。。

刚刚看了一波别人的题解,发现D题只需要把所有等效操作的代价取个最小值即可,没必要这样讨论,嗨自己还是太菜了

E - Swedish Heroes

这题好像是dp,以后回补的!

最近学业压力有点重,而且快期中考试了。。。这周六还有校赛,希望能打出好成绩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YbtOJ#883-最大的割【带修线性基】

正题 题目链接:http://www.ybtoj.com.cn/contest/118/problem/3 解题思路 给出nnn个点&#xff0c;mmm次动态插入一条无向边询问&#xff1a;割掉一些边使得图中至少两点不连通&#xff0c;并且割掉的边异或和最大。 询问之间相互独立 1≤n≤500,1≤m≤10001\leq n\leq 500,…

.NETCore 简单且高级的库 csredis v3.0.0

前言.NETCore 从1.0发布历经坎坷&#xff0c;一开始各种库缺失到现在的部分完善&#xff0c;走到今天实属不易。比如 redis-cli SDK 简直是坑出不穷。过去 .net 最有名望的 ServiceStack.Redis 早已沦为商业用途&#xff0c;在 .NETCore 中使用只能充值&#xff1b;后来居上的 …

1003 Express Mail Taking

题意&#xff1a; 有m个快递&#xff0c;放在n个快递柜里&#xff08;成顺序排布&#xff09;&#xff0c;从1号快递柜出发&#xff0c;每次要先到k号快递柜输入密码&#xff0c;然后才可以取指定的快递柜取货品&#xff0c;都取完后再回起点&#xff0c;问最短距离是多少 题…

序列区间

题目大意 给你n个数&#xff0c;问你有多少个区间满足∏ilrai∑ilraik\frac{\prod_{il}^r a_i}{\sum_{il}^r a_i}k∑ilr​ai​∏ilr​ai​​k 解题思路 原始等同于∏ilraik⋅∑ilrai\prod_{il}^r a_ik\cdot\sum_{il}^r a_i∏ilr​ai​k⋅∑ilr​ai​ 先枚举起点&#xff0c;…

github开源项目免费使用Azure PipeLine

微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看.今天要介绍的是做Azure devops的ci部分:Azure Pipeline. VSTS升级到Azure Devops之后对开源开发者带来…

YbtOJ#752-最优分组【笛卡尔树,线段树】

正题 题目链接:http://www.ybtoj.com.cn/problem/752 题目大意 nnn个人&#xff0c;每个人有cic_ici​和did_idi​分别表示这个人所在的队伍的最少/最多人数。 然后要求将这些人分成编号连续的若干队使得队伍最多&#xff0c;并且求分队方案数。 1≤n≤1061\leq n\leq 10^61≤…

牛客小白月赛 27部分题解

已做BCDEFGJ B.乐团派对 刚开始想了个贪心&#xff0c;结果不对然后直接转头想dp了。 将能力值排序。 首先我们先分出来一组&#xff0c;能力值最大的分出来一组人数是ana_nan​即下标是n−an1→nn-a_n1\to nn−an​1→n分出来一组&#xff0c;目前还剩n−ann-a_nn−an​个人…

如何向微软 Docs 和本地化社区提交翻译贡献

Docs &#xff08;docs.microsoft.com&#xff09;是微软新版的文档网站&#xff0c;重新规划了各项技术栈的文档结构&#xff0c;看起来比 MSDN 可读性更好。虽然 Docs 提供了各种语言的版本&#xff0c;但大多是机器翻译&#xff0c;某些中文文档基本读不下去。因此微软鼓励社…

【线段树】生日

题目大意 给你一个序列&#xff0c;让你进行以下操作&#xff1a; 修改一个区间的数查询区间不同数字个数 解题思路 因为数字个数很少&#xff0c;可以直接用bitset存&#xff0c;然后套线段树 code #include<bitset> #include<cstdio> #include<cstring>…

ICPC 2019-2020 North-Western Russia Regional Contest 补题部分

已做A、M&#xff0c;E和H思路已经有了没调AC 已补BEJH 最终已完成ABEJHM B - Bad Treap 大佬题解 感觉这题就很玄学。。。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<c…

【dfs】数字

题目大意 给出x&#xff0c;问你不小于x&#xff0c;且由相同个数的4和7组成的最小的数 解题思路 对于奇数位和大于当前位数最大数的直接特判掉 对于其他的dfs枚举&#xff0c;因为如果一个位置放得比原数大&#xff0c;那么后面的都确定了&#xff0c;所以是O(n)的 code #…

【dfs】飞行棋

题目大意 给你一个n*m的网格&#xff0c;现在让你往里面填1~k&#xff08;有的位置已经填了&#xff09;&#xff0c;使其满足所有从(1,1)到(n,m)的路径不会经过相同的数字&#xff08;只能往下或往右&#xff09;&#xff0c;求方案数 解题思路 对于k<nm-1的&#xff0c;…

API测试工具SoapUI Postman对比分析

最近公司要引入API测试工具&#xff0c;经过调查和了解&#xff0c;最终决定在SoapUI 和 Postman两种工具之间做一个选择&#xff0c;两种工具在业界都很有名&#xff0c;相信很多人两种工具也都曾使用过。SoapUISoapUI是一个开源测试工具&#xff0c;通过soap/http来检查、调用…

[POI2008]STA-Station

之前都看过有换根dp&#xff0c;一直不知道是啥意思&#xff0c;本来弱弱树形dp都不太熟悉&#xff0c;不过今天工数课的时候突然想看一下&#xff0c;写个板子题练练吧。 对于我的理解&#xff0c;换根的题目一般是根不确定&#xff0c;而求得答案与根是谁有关&#xff0c;而…

Reports

试题hduoj 题意&#xff1a; 如果相邻的任意两个数相同的话&#xff0c;则输出NO&#xff0c;反之输出YES。 题解&#xff1a; 水题 我队友做的 代码&#xff1a; #include<bits/stdc.h> #define inf 1<<30 #define maxn 200000 using namespace std; int k…

【结论】分肉

题目大意 有两个数x,y&#xff0c;一轮中&#xff0c;如果x≤yx\leq yx≤y&#xff0c;那么xx,y-x&#xff0c;否则x-y,yy&#xff0c;回答经过k轮后较小的数 解题思路 可以发现xy是保持不变的&#xff0c;且x−yx2−x−y,x2>xy(x>y)x-yx\times 2-x-y,x\times 2>xy(…

在 Windows 上可以用 Docker 吗?| 洞见

简介Docker&#xff0c;或者准确一点说&#xff0c;容器技术&#xff0c;在近几年里几乎成为了应用分发和集群部署的默认技术了。背景部分&#xff0c;如果感兴趣&#xff0c;请参考闲谈集群管理模式一文。Docker 生态的成熟还有赖于其周边工具和实践模式的兴起。比如&#xff…

泰勒及洛朗展开学习笔记

2020-1024996 最近太忙了&#xff0c;今天好像没有写题&#xff0c;不过研究了一下数学hh。 2020.10.24今天又有工数课&#xff0c;我又没听&#xff0c;我记得上节工数课我看了换根dp&#xff0c;哦&#xff1f;好吧我没听过工数&#xff0c;那没事了&#xff0c;不过这次不敢…

【结论】串串串(nowcoder 20107-A)

正题 nowcoder 20107-A 题目大意 给你两个01串&#xff0c;有若干询问&#xff0c;每次询问两段长度相等的字串不同位数的奇偶性 解题思路 因为只用判断奇偶性&#xff0c;所以同时修改两个字符是不会改变结果的&#xff0c;那么可以直接将字串修改为只有0/1个1的串&#xf…

SmartSql For Asp.Net Core 最佳实践

常规操作安装 SmartSqlInstall-Package SmartSql安装 SmartSql.DIExtensionInstall-Package SmartSql.DIExtension配置SmartSqlConfig.xml写库&#xff08;Write&#xff09;必选 唯一节点读库&#xff08;Read&#xff09;可选 多节点配置PostgresqlPostgresql 客户端 NpgsqlI…