当前位置: 首页 > news >正文

护肤品网站建设目的东莞厚街网站建设

护肤品网站建设目的,东莞厚街网站建设,新网网站后台登陆,wordpress开比赛链接:Dashboard - Codeforces Round 855 (Div. 3) - Codeforces A:模拟 题意:给定一个字符串,问这个字符串是不是猫叫。定义是猫叫得字符串: 1:必须由大写或小写得M(m),E&…

比赛链接:Dashboard - Codeforces Round 855 (Div. 3) - Codeforces

A:模拟 

题意:给定一个字符串,问这个字符串是不是猫叫。定义是猫叫得字符串:

1:必须由大写或小写得'M(m)','E(e)','O(o)','W(w)'组成

2:字符串起始必须是M(大写或者小写都行)紧跟其后必须是E,接着是O,接着是W,然后结束。

分析:根据条件,将字符串扫一遍即可

代码:

#include <bits/stdc++.h>
#define pi acos(-1)
#define int long long
#define PII pair<int,int>
#define all(v) v.begin(),v.end()
#define INF 0x3f3f3f3f3f3f3f3f
#define fs(a) cout<<fixed<<setprecision(a)<< //fs(4)(1.0/3)=0.3333//保留a位小数
#define read() freopen("input.txt","r",stdin)
#define output() freopen("output.txt","w",stdout)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+10;
const int mod = 1e9+7;
const int Mod = 998244353;
int lowbit(int x){return x&(-x);}
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}//       a/b向上取整
int quickpow(int a,int n){int ans=1;while(n){if(n&1){ans*=a,ans%=Mod;}a*=a;a%=Mod;n>>=1;}return ans;}//快速幂
int qc(int a,int b,int p){int ans=0;while(b){if(b&1){ans+=a,ans%=p;}a*=2;a%=p;b>>=1;}return ans;}//快速乘 a*b%pinline void solve(){int n,i=0;string s;cin>>n>>s;if(n<4||(s[0]!='M'&&s[0]!='m')){cout<<"NO\n";return;}while(s[i]=='M'||s[i]=='m') i++;if(s[i]!='E'&&s[i]!='e'){cout<<"NO\n";return;}while(s[i]=='E'||s[i]=='e') i++;if(s[i]!='O'&&s[i]!='o'){cout<<"NO\n";return;}while(s[i]=='O'||s[i]=='o') i++;if(s[i]!='W'&&s[i]!='w'){cout<<"NO\n";return;}while(s[i]=='W'||s[i]=='w') i++;if(i==n) cout<<"YES\n";else cout<<"NO\n"; 
}signed main(){fast;int T;cin>>T;while(T--) solve();
}              

 B:贪心

题意: 给定一个字符串,相同字符的大小写为一个匹配对(例如:Aa)。你可以使用任意次操作,使得将大写字母改为小写字母,或者小写字母改为大写字母。问最多有多少个匹配对

分析:我们发现,尽可能的使用完操作次数,我们才会得到最大匹配对数。我们只需要记录一下相同字母对应的大小写个数,然后可以先计算原始的匹配对,再计算操作后的匹配对数。具体看代码

#include <bits/stdc++.h>
#define pi acos(-1)
#define int long long
#define PII pair<int,int>
#define all(v) v.begin(),v.end()
#define INF 0x3f3f3f3f3f3f3f3f
#define fs(a) cout<<fixed<<setprecision(a)<< //fs(4)(1.0/3)=0.3333//保留a位小数
#define read() freopen("input.txt","r",stdin)
#define output() freopen("output.txt","w",stdout)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+10;
const int mod = 1e9+7;
const int Mod = 998244353;
int lowbit(int x){return x&(-x);}
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}//       a/b向上取整
int quickpow(int a,int n){int ans=1;while(n){if(n&1){ans*=a,ans%=Mod;}a*=a;a%=Mod;n>>=1;}return ans;}//快速幂
int qc(int a,int b,int p){int ans=0;while(b){if(b&1){ans+=a,ans%=p;}a*=2;a%=p;b>>=1;}return ans;}//快速乘 a*b%p
int u[N],l[N];inline void solve(){int n,k;string s;cin>>n>>k>>s;memset(u,0,sizeof u);memset(l,0,sizeof l);for(int i=0;i<n;i++){if(isupper(s[i])) u[s[i]-'A']++;else l[s[i]-'a']++;}int ans=0;for(int i=0;i<26;i++){int minn=min(u[i],l[i]);ans+=minn;u[i]-=minn;l[i]-=minn;if(u[i]>=2){if(u[i]/2<=k) ans+=u[i]/2,k-=u[i]/2;else ans+=k,k=0;}else if(l[i]>=2){if(l[i]/2<=k) ans+=l[i]/2,k-=l[i]/2;else ans+=k,k=0;}}cout<<ans<<"\n";
}signed main(){fast;int T;cin>>T;while(T--) solve();
}              

 C:模拟+贪心(大根堆)

 

题意:你的初始分数为0。给定一堆牌,每个牌有一定的数字,给定顺序去摸取。如果摸到非0牌,则可以选择将此牌放在自己牌堆的堆顶,或者放弃这张牌。如果摸到数字为0的牌,则自己牌堆堆顶的数字会加到你的分数里面,并且标记这张牌已经使用过,问你能得到的最大分数。

分析:根据题意,我们发现,在摸到非0牌之前,我们要将最大的数字放在堆顶,那么这是一个动态维护最大值的过程,因此我们可以使用大根堆。大根堆的pop()操作即为已经使用的牌。

代码:

#include <bits/stdc++.h>
#define pi acos(-1)
#define int long long
#define PII pair<int,int>
#define all(v) v.begin(),v.end()
#define INF 0x3f3f3f3f3f3f3f3f
#define fs(a) cout<<fixed<<setprecision(a)<< //fs(4)(1.0/3)=0.3333//保留a位小数
#define read() freopen("input.txt","r",stdin)
#define output() freopen("output.txt","w",stdout)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+10;
const int mod = 1e9+7;
const int Mod = 998244353;
int lowbit(int x){return x&(-x);}
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}//       a/b向上取整
int quickpow(int a,int n){int ans=1;while(n){if(n&1){ans*=a,ans%=Mod;}a*=a;a%=Mod;n>>=1;}return ans;}//快速幂
int qc(int a,int b,int p){int ans=0;while(b){if(b&1){ans+=a,ans%=p;}a*=2;a%=p;b>>=1;}return ans;}//快速乘 a*b%p
int a[N];inline void solve(){int n;cin>>n;priority_queue<int>q;for(int i=1;i<=n;i++) cin>>a[i];int ans=0,cnt=1;while(1){if(cnt>n) break;while(cnt<=n&&a[cnt]!=0) q.push(a[cnt++]);while(cnt<=n&&a[cnt]==0){if(!q.size()){cnt++;continue;}else{ans+=q.top();q.pop();cnt++;}}}cout<<ans<<"\n";
}signed main(){fast;int T;cin>>T;while(T--) solve();
}              

D:思维

题意:给定字符串 s,你可以移除其中两个连续的字母。问操作之后你所能得到的不同字符串的数量是多少

分析:我们发现,如果这样一组字符串:aba,那么删掉两个相邻的元素,所得的结果串是一样的。那么我们可以得出一个结论:如果s[i]==s[i+2],那么就说明有一个重复串的出现。

此外还有一个结论可以从样例得出:如果一个长度为n的串所含的不同字符个数为n,那么可以得到n-1个不同的串。因此,我们只需要减掉重复串的个数即可。

代码:

#include <bits/stdc++.h>
#define pi acos(-1)
#define int long long
#define PII pair<int,int>
#define all(v) v.begin(),v.end()
#define INF 0x3f3f3f3f3f3f3f3f
#define fs(a) cout<<fixed<<setprecision(a)<< //fs(4)(1.0/3)=0.3333//保留a位小数
#define read() freopen("input.txt","r",stdin)
#define output() freopen("output.txt","w",stdout)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+10;
const int mod = 1e9+7;
const int Mod = 998244353;
int lowbit(int x){return x&(-x);}
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}//       a/b向上取整
int quickpow(int a,int n){int ans=1;while(n){if(n&1){ans*=a,ans%=Mod;}a*=a;a%=Mod;n>>=1;}return ans;}//快速幂
int qc(int a,int b,int p){int ans=0;while(b){if(b&1){ans+=a,ans%=p;}a*=2;a%=p;b>>=1;}return ans;}//快速乘 a*b%p
int a[N];inline void solve(){int n;string s;cin>>n>>s;int ans=0;for(int i=0;i<n-2;i++){if(s[i]==s[i+2]) ans++;}cout<<n-ans-1<<"\n";
}signed main(){fast;int T;cin>>T;while(T--) solve();
}              

 E:思维

题意:给定两个字符串和k,字符串可以将下标 和|i−j|=k和|i−j|=k+1 得两个字符 ,ai,aj 发生交换

分析:通过手撸样例可以发现:如果当n=5,k=3的时候,满足条件的点为:[1,4],[1,5],[2,5]。然后你会发现:点1,2,4,5的位置可以任意交换。位置3则不能交换。所以思路很显然了。

首先判断两个字符串中包含的字符数是否相同,再判断不能交换位置的点上的字符是否相同。

代码:

#include <bits/stdc++.h>
#define pi acos(-1)
#define int long long
#define PII pair<int,int>
#define all(v) v.begin(),v.end()
#define INF 0x3f3f3f3f3f3f3f3f
#define fs(a) cout<<fixed<<setprecision(a)<< //fs(4)(1.0/3)=0.3333//保留a位小数
#define read() freopen("input.txt","r",stdin)
#define output() freopen("output.txt","w",stdout)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int N=2e5+10;
const int mod = 1e9+7;
const int Mod = 998244353;
int lowbit(int x){return x&(-x);}
int up(int a,int b){return a<0?a/b:(a+b-1)/b;}//       a/b向上取整
int quickpow(int a,int n){int ans=1;while(n){if(n&1){ans*=a,ans%=Mod;}a*=a;a%=Mod;n>>=1;}return ans;}//快速幂
int qc(int a,int b,int p){int ans=0;while(b){if(b&1){ans+=a,ans%=p;}a*=2;a%=p;b>>=1;}return ans;}//快速乘 a*b%pinline bool pd(string a,string b){map<char,int>mp1,mp2;for(int i=0;i<a.size();i++) mp1[a[i]]++;for(int i=0;i<b.size();i++) mp2[b[i]]++;for(auto x:a){if(mp1[x]!=mp2[x]) return false;}return true;
}inline void solve(){int n,k;string s,t;cin>>n>>k>>s>>t;if(!pd(s,t)){cout<<"NO\n";return;}bool ok=true;for(int i=0;i<n;i++){if(i<k&&n-i-1<k&&s[i]!=t[i]){ok=false;break;}}if(ok) cout<<"YES\n";else cout<<"NO\n";
}signed main(){fast;int T;cin>>T;while(T--) solve();
}              

http://www.yayakq.cn/news/426913/

相关文章:

  • 想象力做网站上海网站改版哪家好
  • 手机怎么做淘客网站wordpress 指定首页
  • 织梦修改网站标题杭州优化商务服务公司
  • 有关做甜点的网站wordpress添加自定义按钮
  • 用织梦做网站调用乱码达州城乡建设网站
  • 网站动态图标加强公司门户网站建设方案
  • 郑州高端网站建设网站底部备案号代码
  • 免费自助建站快速自助建站做网站通过什么赚钱吗
  • 企业网站备案名称域名 空间 wordpress
  • 电商网站开发怎么样网页制作软件有哪些
  • 5自己建网站如何弄微信小程序
  • 专做婴儿的网站网上商城推广文案
  • 网站的布局设计网站怎么引蜘蛛
  • 食品企业网站建设方案深圳返利网站开发
  • 网站上关键词的推广怎么做seo综合查询工具
  • php 网站开发文档怎么写芜湖炎黄做的网站
  • 吴江做网站公司福田网站建设有限公司
  • 佛山专业的网站建设公司免费网站注册
  • 一个网站一年的费用wordpress用户名不对
  • 美丽寮步网站建设dw制作网站模板
  • 建网站必须要服务器吗买医疗产品的网站建设
  • 制作网站中英文字体不能为佛山网络营销推广
  • 建立网站的工具安庆网站建设兼职
  • 北京网站建设价格低wordpress主题谷歌字体
  • 从零开始学建设网站大连app网站建设
  • 贵州网站建设kuhugz惠州市网站建设企业
  • 龙岗企业网站制作公司市场营销策划公司
  • 图片网站优化wordpress插件丢失
  • 网站建设公司网站建设公司银川哪里做网站
  • 桂林网站开发m0773菏泽网站建设公司排名