A - Not

签到题

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){int x;cin>>x;cout<<1-x<<endl;}return 0;
}

B - Product Max

签到题

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){ll a,b,c,d;cin>>a>>b>>c>>d;cout<<max(max(a*c,a*d),max(b*c,b*d))<<endl;}return 0;
}

C - Ubiquity

正难则反,容斥原理
先只考虑满足第一个情况的方案数:10n10^n10n
那么其中肯定有不满足第二个情况和第三个情况的方案,我们只要减去这种情况即可。
满足第一个条件,不满足第二个条件的方案数是9n9^n9n
满足第一个条件,不满足第三个条件的方案数是9n9^n9n
满足第一个条件,同时不满足第二个条件和第三个条件的方案数是8n8^n8n
根据容斥原理,满足第一个条件但是不满足第二个条件或者第三个条件的方案数是9n+9n−8n9^n+9^n-8^n9n+9n−8n
因此答案是10n−(9n+9n−8n)10^n-(9^n+9^n-8^n)10n−(9n+9n−8n)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
const ll mod=1e9+7;
ll qmi(ll a,ll b)
{ll res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
int main()
{IO;int T=1;//cin>>T;while(T--){ll n;cin>>n;cout<<((qmi(10ll,n)-2*qmi(9ll,n)+qmi(8ll,n))%mod+mod)%mod<<'\n';}return 0;
}

D - Redistribution

考试的时候老想着完全背包。。
f[i]f[i]f[i]表示用3…i3 \dots i3…i这些数凑成和是iii的方案数
转移:考虑最后一个数用的是谁?
f[i]=f[i−3]+f[i−4]+⋯+f[i−i]f[i]=f[i-3]+f[i-4]+\dots+f[i-i]f[i]=f[i−3]+f[i−4]+⋯+f[i−i]

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2010;
const ll mod=1e9+7;
ll f[N];
int main()
{IO;int T=1;//cin>>T;while(T--){int s;cin>>s;f[0]=1;for(int i=3;i<=s;i++)for(int j=3;j<=i;j++)f[i]=(f[i]+f[i-j])%mod;cout<<f[s]<<'\n';}return 0;
}

E - Dist Max

考虑两个点(x1,y1)(x_1,y_1)(x1​,y1​)和(x2,y2)(x_2,y_2)(x2​,y2​)的曼哈顿距离∣x1−x2∣+∣y1−y2∣|x_1-x_2|+|y_1-y_2|∣x1​−x2​∣+∣y1​−y2​∣其实还可以进一步简化成max(∣(x1+y1)−(x2+y2)∣,∣(x1−y1)−(x2−y2)∣)max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)max(∣(x1​+y1​)−(x2​+y2​)∣,∣(x1​−y1​)−(x2​−y2​)∣)
由此将问题降维,然后就很容易解了。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
int d1[N],d2[N],n;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;d1[i]=x+y;d2[i]=x-y;}sort(d1+1,d1+1+n);sort(d2+1,d2+1+n);cout<<max(d1[n]-d1[1],d2[n]-d2[1])<<'\n';}return 0;
}

无意中看到一个知识,此题转化更专业的叫法曼哈顿距离与切比雪夫距离的转换

F - Contrast

结论:将 B 按降序排序后,B 中最多只会有一段 B[l∼r]B[l∼r]B[l∼r] 与 A[l∼r]A[l∼r]A[l∼r] 是相同的,且 A[l∼r]A[l∼r]A[l∼r] 和 B[l∼r]B[l∼r]B[l∼r] 中所有值都等于同一个数valvalval,仔细想想便可得到此结论。
把这些相等的位置记下来,然后与其他的位置交换,此位置序还需满足ai≠vala_i\ne valai​​=val,每找到一个位置就可以交换一次,如果位置不够则不可能满足题意。
还有一个判断不满足题意的方法即统计a[]b[]每个数出现的次数cnta[]cntb[],对于每一个iii满足cntai+cntbi≤ncnta_i+cntb_i\leq ncntai​+cntbi​≤n才可能构造出一组解,否则不可能满足题意。
口胡证明:对于a[]中的i需要b[]至少存在有cnta[i]个不等于i的数与之配对,即cnta[i]<=n-cntb[i],证毕。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=200010;
int a[N],b[N],n;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i];reverse(b+1,b+1+n);vector<int> p,q;int val=0,cnt=0;for(int i=1;i<=n;i++){if(a[i]!=b[i]) continue;cnt++;p.push_back(i);val=b[i];}for(int i=1;i<=n;i++){if(!cnt) break;if(a[i]==b[i]) continue;if(a[i]!=val&&b[i]!=val){cnt--;q.push_back(i);}}if(cnt) return cout<<"No\n",0;for(int i=0;i<q.size();i++) swap(b[p[i]],b[q[i]]);cout<<"Yes\n";for(int i=1;i<=n;i++) cout<<b[i]<<' ';cout<<'\n';}return 0;
}

ABC现在看来以及没有想象中那么难,自己现在都可以接受。
正式上课了,要加油哦~

AtCoder Beginner Contest 178 总结相关推荐

  1. AtCoder Beginner Contest 178 E.Dist Max

    AtCoder Beginner Contest 178 E.Dist Max 题目链接 如果我们知道一个 nnn 维的点,对每一个维度都有一个运算符的话,很明显一共有 2n2^n2n 种运算,而曼哈 ...

  2. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  3. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  4. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  5. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  6. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  7. AtCoder Beginner Contest 215 E - Chain Contestant

    AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...

  8. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

  9. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解

    Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...

最新文章

  1. 信息安全与网络安全,你分清了吗?
  2. jmeter所有版本下载地址分享
  3. 又重装了系统win8+office2013+sql2012+tfs2012+vs2010+vs2012+xna4+kinectsdk1.6+wp8sdk
  4. 被娱乐在线报道的“唐骏造假门事件”
  5. PyTorch 1.0 中文文档:torch.utils.dlpack
  6. Python/Java程序员面试必备常用问题解析与答案
  7. html 文本域 nanme,第3章 JaaScript.ppt
  8. 学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本
  9. 动态RAM和静态RAM的区别(浅学)
  10. CTS2019朝圣 x 打铁记
  11. 标准盒模型和IE盒模型
  12. python if用法
  13. [高等数学]--曲率,曲率半径-
  14. 面试题57:和为s的数字
  15. 健身运动燃烧脂肪的三个必要条件
  16. Vant-area数据
  17. ISO26262-6 2018第七章: Software architectural design
  18. Arduino与Proteus仿真实例-NTC热敏电阻驱动仿真
  19. 【LDA】动手实现LDA
  20. paddlepaddle测试安装_学习之路(1)PaddlePaddle的安装

热门文章

  1. android虚线边框_Android实现代码画虚线边框背景效果
  2. [JS-DOM]DOM概述
  3. 数据结构与算法--解决问题的方法-顺时针打印矩阵
  4. php mysql 子查询_php – MySQL查询和子查询
  5. 双向dcdc变换器simulink仿真_二极管箝位五电平变换器Simulin仿真
  6. 伦斯勒理工大学计算机专业好申请吗,2020年伦斯勒理工学院申请难度
  7. Java开发Web Service的几种解决方案
  8. 相同类方法之间调用,注解失效的问题
  9. Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树
  10. UVA - 10253 Series-Parallel Networks(递推式、记忆化搜索写法)