首页 > 其他分享 >【解题报告】CF DIV3 #ROUND 734 A~D1

【解题报告】CF DIV3 #ROUND 734 A~D1

时间:2022-11-25 19:38:04浏览次数:65  
标签:typedef int CF long cin ++ 734 ans DIV3


【解题报告】CF DIV2 #ROUND 707 A~D

​比赛链接​

比赛评价:
一般性,有段时间没打了,甚至忘记多组输入hh。顺便吐槽一下翻译软件确实不行,以后还是直接看英文好了

A. Polycarp and Coins

题意
给定n,要求满足【解题报告】CF DIV3 #ROUND 734 A~D1_#define,让a和b尽量接近
思路
直接三等分,然后暴力上下微调即可(懒得动脑了hh)
代码

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
#define endl '\n'

int T;
int main(){
cin>>T;
while(T--){
int n;cin>>n;
int k=n/3;
int l=max(0,k-100);
LL d=n;
int A,B;
for(int i=l;i<=k+100;i++){
int c1=n-2*i;
if(c1>=0){
if(abs(c1-i)<=d){
d=abs(c1-i);
A=c1;B=i;
}
}

}
cout<<A<<" "<<B<<endl;
}
return 0;
}

B1. Wonderful Coloring - 1

题意
给两种颜色,n个格子然后染色,每个格子有一个字母。
要求:
染成红/绿/不染色
红色和绿色数量相同
同种颜色不能出现相同字符
尽可能多染色
思路
统计字母数量,>=2的直接算一次贡献,其余的统计数量计算为cnt,贡献为cnt/2

代码

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
#define endl '\n'

int T;
map<char,int>mp;
int main(){
cin>>T;
while(T--){
string s;cin>>s;
mp.clear();
for(int i=0;s[i];i++){
mp[s[i]]++;
}
int ans=0,cnt=0;
for(int i=0;i<26;i++){
char c='a'+i;

if(mp[c]>=2)ans++;
else if(mp[c]==1)cnt++;
}

cout<<ans+cnt/2<<endl;
}
return 0;
}

B2. Wonderful Coloring - 1

题意
变成k种颜色,其他要求相同
思路
模拟乱搞,​​​参考这个视频​代码

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
#define endl '\n'

int T;
const int N=2e5+10;
int a[N],color[N],ls[N];
vector<int>num[N];//记录每个数字位置
int main(){
cin>>T;
while(T--){
int n,k;cin>>n>>k;
for(int i=0;i<=n;i++)num[i].clear(),color[i]=0;
for(int i=0;i<=n-1;i++){
cin>>a[i];
num[a[i]].push_back(i);
}
int kd=0;
for(int i=0;i<=n;i++){//枚举数
for(int j=0;j<=min(k,(int)num[i].size())-1;j++){//枚举当前数出现位置
color[num[i][j]]=kd+1;
ls[kd+1]=num[i][j];//某个颜色最后存储的位置,用于染不完了要还原
kd++;kd%=k;
}
}
for(int i=1;i<=kd;i++)color[ls[i]]=0;
for(int i=0;i<=n-1;i++)cout<<color[i]<<" ";
puts("");
}
return 0;
}

C. Interesting Story

题意
单词由abcde组成,给你一些单词让你组成文章,要求文章里某个字母数量比其他字母加起来还多。问最多用多少个单词
思路
只有五个字母,把每个字符串对abcde的贡献算出来,然后五个排序统计前缀和即可
代码

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
#define endl '\n'

int T;
const int N=2e5+10;
int a[N],b[N],c[N],d[N],e[N];
int sa[N],sb[N],sc[N],sd[N],se[N];
int ans[6];
bool cmp(int P,int Q){
return P>Q;
}
int main(){
cin>>T;
while(T--){
int n;cin>>n;
memset(a,0,sizeof a);
memset(b,0,sizeof b);
memset(c,0,sizeof c);
memset(d,0,sizeof d);
memset(e,0,sizeof e);
for(int i=1;i<=n;i++){
string s;cin>>s;
int A=0,B=0,C=0,D=0,E=0;
for(int j=0;s[j];j++){
if(s[j]=='a')A++;
if(s[j]=='b')B++;
if(s[j]=='c')C++;
if(s[j]=='d')D++;
if(s[j]=='e')E++;
}
a[i]=A-B-C-D-E;
b[i]=B-A-C-D-E;
c[i]=C-A-B-D-E;
d[i]=D-A-B-C-E;
e[i]=E-A-B-C-D;
}
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+n,cmp);
sort(c+1,c+1+n,cmp);
sort(d+1,d+1+n,cmp);
sort(e+1,e+1+n,cmp);
memset(ans,0,sizeof ans);
for(int i=1;i<=n;i++){
sa[i]=sa[i-1]+a[i];
sb[i]=sb[i-1]+b[i];
sc[i]=sc[i-1]+c[i];
sd[i]=sd[i-1]+d[i];
se[i]=se[i-1]+e[i];
if(sa[i]>0)ans[0]++;
if(sb[i]>0)ans[1]++;
if(sc[i]>0)ans[2]++;
if(sd[i]>0)ans[3]++;
if(se[i]>0)ans[4]++;
}
int res=0;
for(int i=0;i<=4;i++)res=max(res,ans[i]);
cout<<res<<endl;

}
return 0;
}

D1. Domino (easy version)

题意
放多米诺骨牌,给nxm网格,nxm偶数。要求k个多米诺骨牌横着放,其他竖着放。问能不能放下nxm/2个(其实就是铺满)
思路
​​​参考这个视频​​​ 我们知道如果是2x2的正方形,那么铺起来就比较方便,两个横的或者两个竖的,那么我们将情况先转化成这种偶数x偶数的情况处理
如果有奇数行,那么最后一行必须铺m/2个横着的。如果有奇数列,那么最后一列必须铺n/2个竖着的。
对于偶数成偶数的,因为横放竖放都是两两配对的,所以和k的奇偶性要相同
代码

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
#define endl '\n'

int T;
int main(){
cin>>T;
while(T--){
int n,m,k;cin>>n>>m>>k;
int ls=0;
if(n&1){n--;ls+=m/2;}
if(m&1)m--;
if(ls>k)puts("NO");
else{
ls+=(n*m)/2;
if(ls<k||(ls&1)!=(k&1))puts("NO");
else puts("YES");

}
}
return 0;
}

反思

A:

没啥说的,网再快些

B:

记得开多组输入!!!记得少用翻译软件!!!B2用了奇妙翻译,想半天没写出来呜呜。

C:

有数量对比要求,联想到做差求贡献然后看正负

D:

铺地转类问题联想到两个,把情况处理成偶数x偶数,状态压缩DP


标签:typedef,int,CF,long,cin,++,734,ans,DIV3
From: https://blog.51cto.com/u_15891800/5887541

相关文章

  • WCF必知必会以及与Webapi的区别
    快速阅读介绍wcf中的信息交换模式MEP以及数据在传输过程中的序列化,endpont的介绍和wcf的三种实例模式以及安全模式以及和Webapi的简单对比wcf介绍支持跨平台,多种协议tcp,......
  • CF804E The same permutation
    首先当\(n\equiv\left\{\begin{matrix}2,3\end{matrix}\right\}\pmod4\)时,无解,因为每次操作一定会改变逆序对奇偶性。那就只剩两种情况先考虑\(n\equiv0\pmod......
  • CF1539E Game with Cards
    把最终答案看成一段\(0\),一段\(1\)的一个串。如果说我们的答案中有一段\(0\)(\(1\)同理)。那么所有\(0\)的数都满足所有第一个范围,这段\(0\)前面的\(1\)代......
  • CF1707D Partial Virtual Trees
    首先真子集这一限制比较麻烦,我们可以尝试把这个限制给去除掉。具体地,令\(G(i)\)表示答案,\(F(i)\)为用\(i\)步使得\(U={1}\)且不要求真子集这一限制的方案数。考虑......
  • CF786C Till I Collapse
    TillICollapseLuoguCF786CCodeforces786C题面翻译将\(n\)个数划分成\(m\)段使得每中不同数字的个数\(\lek\)。对于每个\(k\)满足\(1\lek\len\)求出最......
  • CF1251E2
    非常神的贪心,先要发现以下两个性质:要花钱收买的一些人,那么肯定是在一开始就收买他们。按照\(m\)升序排序,那么处理\(m=x\)时,\(m=1\simx-1\)的人一定都投了票,不管是......
  • CF1141 Div3 欢乐信心赛
    非常轻松的比赛,连我这样的菜鸡也感到充满力量。A用类似于质因数分解的操作搞一搞即可。B将环复制一遍。C可以发现\(q\)就是差分数组。那么差分数组之和最大的地方......
  • [数学记录][sosdp]CF449D Jzzhu and Numbers
    前几天做arc时连做两道高维前缀和,今天去看dp题单时发现这东西居然叫sosdp,来刷一下板子。粘一篇找到的blog,感觉引入那里非常自然!linktoCF|linktoLuogu给......
  • TemplateSyntaxError: 'staticfiles' is not a registered tag library. Must be one
    django.template.exceptions.TemplateSyntaxError:'staticfiles'isnotaregisteredtaglibrary.Mustbeoneof:在settings.py中添加:TEMPLATES=[{......
  • C#上位机之—Winform之间实现WCF通讯简单示例
    WCF是微软弄的一组数据通信的开发接口,即windows通讯接口。和TCP类似需要IP地址和端口号,服务端提供一些函数接口,客户端可进行调用,支持多个客户端。不太懂理论,直接看应用吧。......