Codeforces Round #662 (Div. 2)

就写了两个题,以为要掉分,结果早上起来发现还上分了(说明wtcl

A - Rainbow Dash, Fluttershy and Chess Coloring

无论边长是奇数还是偶数,考虑每次操作最外层的一圈,一个人操作一圈的一般,然后另一个人就能够把这一圈涂满,而且还能继续操作最外圈。每次2人操作后问题变成边长-2的情况。稍微思考一下就可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int main()
{IO;int T;cin>>T;while(T--){cin>>n;if(n&1)cout<<(n-3)/2+2<<endl;elsecout<<(n-2)/2+2<<endl;}return 0;
}

B - Applejack and Storages

统计4的倍数和2的倍数。其中既是4的倍速也是2的倍数只看做4的倍数。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int mp[N];
int n,q;
int main()
{IO;cin>>n;int x=0,y=0;for(int i=1;i<=n;i++){int a;cin>>a;mp[a]++;if(mp[a]%2==0) y++;//加完后是2的倍数if(mp[a]%4==0) x++,y-=2; //加完后是4的倍数(要把二的倍数减去)}cin>>q;while(q--){char op;int a;cin>>op>>a;if(op=='+'){mp[a]++;if(mp[a]%2==0) y++;if(mp[a]%4==0) x++,y-=2;}else{if(mp[a]%2==0) y--;//减之前是2的倍数 2的倍数减小一个if(mp[a]%4==0) x--,y+=2;//减之前是4的倍数 4的倍数减小一个,2的倍数最终应该增加一个(由于上面减了一个要加二个这点wa了2发)mp[a]--;}if(x>=1&&y>=2||x>=2) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

C - Pinkie Pie Eats Patty-cakes

最小距离最大?二分?,做题的时候我就发现二分的check函数好像不容易写。如果能够写出check函数其实好像不用二分直接答案就出来了。
果不其然,群友说这就是个贪心题,后来想了想果然是。1111222233334445566789
比如上述序列,构造方式如下:
1234569
123457
123468
123
如果是11111222233334445566789
123469
12346
12357
12458
13
因此有以下贪心

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=100010;
int mp[N],n;
int main()
{IO;int T;cin>>T;while(T--){cin>>n;int mx=0;memset(mp,0,sizeof mp);for(int i=1;i<=n;i++){int a;cin>>a;mp[a]++;mx=max(mx,mp[a]);}int cnt=0;for(int i=0;i<N;i++)if(mp[i]==mx) cnt++;cout<<cnt+(n-cnt*mx)/(mx-1)-1<<endl;}return 0;
}

D-Rarity and New Dress

悬线dp?第一次听说,一定要把这题补了
解法一:二分抄代码题解
维护菱形中间点,先求上下最长,维护左右最长(不能超过上下最长)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define debug(x) cout<<#x<<": "<<x<<" "
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2010;
int n,m;
ll ans;
int u[N][N],d[N][N],l[N][N],r[N][N];
int h[N][N];
char s[N][N];
int main()
{IO;cin>>n>>m;for(int i=1;i<=n;i++) cin>>s[i]+1;// 预处理for(int j=1;j<=m;j++){for(int i=1;i<=n;i++){if(s[i][j]==s[i-1][j]) u[i][j]=u[i-1][j]+1;else u[i][j]=1;}for(int i=n;i;i--){if(s[i][j]==s[i+1][j]) d[i][j]=d[i+1][j]+1;else d[i][j]=1;}for(int i=1;i<=n;i++) h[i][j]=min(d[i][j],u[i][j]);}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(s[i][j]==s[i][j-1]) l[i][j]=min(l[i][j-1]+1,h[i][j]);else l[i][j]=1;}for(int j=m;j;j--){if(s[i][j]==s[i][j+1]) r[i][j]=min(r[i][j+1]+1,h[i][j]);else r[i][j]=1;}}// 求答案for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)ans+=min(l[i][j],r[i][j]);cout<<ans<<endl;return 0;
}

解法二:
这个菱形可以看成4个等腰直角三角形,维护等腰直角三角形(即菱形中心点)
f[i][j]表示s[i][j]为直角顶点最大等腰直角三角形。4次dp

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define debug(x) cout<<#x<<": "<<x<<" "
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2010;
int n,m;
ll ans;
int f1[N][N],f2[N][N],f3[N][N],f4[N][N];
char s[N][N];
int main()
{IO;cin>>n>>m;for(int i=1;i<=n;i++) cin>>s[i]+1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){f1[i][j]=1;if(s[i][j]==s[i-1][j]&&s[i][j]==s[i][j-1]) f1[i][j]=min(f1[i-1][j],f1[i][j-1])+1;}for(int i=1;i<=n;i++)for(int j=m;j;j--){f2[i][j]=1;if(s[i][j]==s[i-1][j]&&s[i][j]==s[i][j+1]) f2[i][j]=min(f2[i-1][j],f2[i][j+1])+1;}for(int i=n;i;i--)for(int j=1;j<=m;j++){f3[i][j]=1;if(s[i][j]==s[i+1][j]&&s[i][j]==s[i][j-1]) f3[i][j]=min(f3[i+1][j],f3[i][j-1])+1;}for(int i=n;i;i--)for(int j=m;j;j--){f4[i][j]=1;if(s[i][j]==s[i+1][j]&&s[i][j]==s[i][j+1]) f4[i][j]=min(f4[i+1][j],f4[i][j+1])+1;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) ans+=min(min(f1[i][j],f2[i][j]),min(f3[i][j],f4[i][j]));cout<<ans<<endl;return 0;
}

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

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

相关文章

.NET微服务方案调查

.NET Core就是专门针对模块化的微服务架构而设计&#xff0c;调查下大家选择.NET微服务情况&#xff0c;如果你有微服务方面的需求可以找我哦&#xff0c;可加我微信geffzhang&#xff1a;相关文章&#xff1a;Service Fabric 与Ocelot 的集成Ocelot简易教程&#xff08;二&…

Loj#116-[模板]有源汇有上下界最大流

正题 题目链接:https://loj.ac/p/116 题目大意 nnn个点mmm条边的一张图&#xff0c;每条边有流量上下限制&#xff0c;求源点到汇点的最大流。 解题思路 先别急着求上面那个&#xff0c;考虑一下怎么求无源点汇点的上下界可行流。 可以考虑先把下限流满&#xff0c;这样就会…

【Trie】最长异或路径(ybtoj Trie-3/luogu 4551)

正题 ybtoj Trie-3 luogu 4551 题目大意 给你一棵树&#xff0c;让你找一条路径&#xff0c;使这条路径的亦或值最大 解题思路 对于每个数存下到根节点的亦或值&#xff0c;然后拿这些数去Trie中跑最大亦或 因为相同部分亦或后为0&#xff0c;所以得出结果就是最大路径亦或…

Codeforces Round #663 (Div. 2)

2020/8/9晚上断网了&#xff0c;本来不想打就顺便看看题目&#xff0c;发现能做几个&#xff0c;然后就交了。&#xff08;做完1、2两题才敢交&#xff09;最终做了3个题tcl。 A - Suborrays 脑筋急转弯题目。位运算OR运算结果只会变大不会变小&#xff0c;直接正序输出就可 …

【每日一题】7月16日题目精讲—点权和

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 给你一棵树&#xff0c;最开始点权为0&#xff0c;每次将与一个点x树上距离<1的所…

中国开源年会 COSCon 2018 今起接受报名!

大会官网二维码名片&#xff1a;点击文末左下角阅读原文&#xff0c;直达报名链接写在大会前开源 20 年&#xff0c;我们遇到了什么问题&#xff1f;‍围绕开源的方式来开发软件项目&#xff0c;正在走向业界的主流。随着开源的崛起&#xff0c;相应的问题也来了&#xff1a;Re…

【Trie】阅读理解(luogu 3879/ybtoj Trie-4)

正题 luogu 3879 ybtoj Trie-4 题目大意 给你n篇文章&#xff0c;还有m个单词&#xff0c;问你这些单词在哪几篇文章中出现过 解题思路 对文章中的单词建Trie&#xff0c;然后那查询的单词去匹配 代码 #include<map> #include<vector> #include<cstdio> …

P6222-「P6156 简单题」加强版【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P6222 题目大意 给出kkk&#xff0c;TTT组询问给出nnn求 ∑i1n∑j1n(ij)kgcd(i,j)μ(gcd(i,j))2\sum_{i1}^n\sum_{j1}^n(ij)^k\times gcd(i,j)\times \mu(gcd(i,j))^2i1∑n​j1∑n​(ij)kgcd(i,j)μ(gcd(i,j))2 解题思路 开…

Codeforces Round #664 (Div. 2)

写了三个题结果C fst了O.0 A - Boboniu Likes to Color Balls 回文串&#xff0c;最多有球是一个奇数个。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<cstdio> #include<iostream> #include<algorithm> using namespace std…

2020 年百度之星·程序设计大赛 - 初赛一

2020 年百度之星程序设计大赛 - 初赛一 [toc] 6743 Drink 题解&#xff1a; 每一种饮料求一个卡路里&#xff0c;取最小值 第一看以为是背包&#xff0c;其实出题人在第二层 代码&#xff1a; #include<iostream> #include<cstdio> #include<string> #i…

.Net Core应用框架Util介绍(四)

上篇介绍了Util Angular Demo的目录结构和运行机制&#xff0c;本文介绍Util封装Angular的基本手法及背后的动机。Angular应用由Ts和Html两部分构成&#xff0c;本文介绍第一部分。Angular Ts的封装Ts是Angular的代码部分&#xff0c;用于编写页面逻辑。依赖注入( Dependency I…

【AC自动机】AC自动机(二次加强版)(luogu 5357)

正题 luogu 5357 题目大意 给你若干单词和一个字符串&#xff0c;让你查询每个单词在字符串中出现的次数 解题思路 AC自动机模板 先把单词丢进去&#xff0c;然后拿字符串去跑&#xff0c;每到一个点累计答案 因为数据较大&#xff0c;所以要先存起来&#xff0c;跑完后按…

Educational Codeforces Round 93 (Rated for Div. 2)

A - Bad Triangle 选出三个序列使之不能组成三角形。先把差距最大的选了&#xff0c;枚举中间值。两边之和不大于第三边。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<iostream> #include<algorithm> using namespace std; const i…

P4198-楼房重建【线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P4198 题目大意 nnn条线&#xff0c;开始时第iii条是(i,0)(i,0)(i,0)的一个点。 每次有操作把第xxx条线变成(x,0)(x,0)(x,0)到(x,y)(x,y)(x,y)。然后求从(0,0)(0,0)(0,0)能看到几条线。 解题思路 把线变成斜率的话就是对于每…

2020牛客暑期多校训练营(第四场)

2020牛客暑期多校训练营&#xff08;第四场&#xff09; 这场属实有点难受 文章目录A Ancient DistanceB Basic Gcd Problem题目代码&#xff1a;C Count New StringD Dividing StringsE EliminateF Finding the Order题意&#xff1a;题解&#xff1a;代码&#xff1a;G Geome…

《C# 程序员的自我修养》送书活动结果公布

截止到9月28日24&#xff1a;00 &#xff0c;本次送书活动《C# 程序员的自我修养》共收到150多位同学参与回复。以下5位同学将获赠书籍一本&#xff1a;夏树、Damon、水墨清华、天天、kang以上同学请加小二微信领取赠书小二微信&#xff1a;geffzhang.NET社区新闻&#xff0c;深…

【AC自动机】单词(luogu 3966/ybtoj AC自动机-2)

正题 luogu 3966 ybtoj AC自动机-2 题目大意 给你n个单词&#xff0c;让你查询这写单词分别在这n个单词中出现过多少次 解题思路 先用AC自动机建好图&#xff0c;然后每个点的权值为1&#xff0c;然后向nx传递 代码 #include<cstdio> #include<cstring> #inclu…

AtCoder Beginner Contest 175总结

这次做了ABCE~ A - Rainy Season 懒得想直接分类讨论 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #include<string> #include<iostream> using namespace std; int main() {string s;cin>>s;int res0;if(s[0]R&&s[1]R&&a…

P5607-[Ynoi2013]无力回天NOI2017【线性基,线段树,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P5607 题目大意 nnn个数字的序列&#xff0c;mmm次操作 区间[l,r][l,r][l,r]异或上一个值vvv询问区间[l,r][l,r][l,r]中选出一些数来异或的最大异或和 解题思路 最大异或和的话只能是线性基了&#xff0c;但是线性基的区间修…

牛客算法周周练15

牛客算法周周练15 文章目录A 数列下标B 可持久化动态图上树状数组维护01背包C 璀璨光滑D 树上求和E 算式子A 数列下标 题意很明确&#xff0c;再看看数据&#xff0c;所以我们直接两重循环&#xff0c;用数组b来记录右边第一个大的数的下标 代码&#xff1a; #include<bit…