Codeforces Round #499 (Div. 2)
作者:互联网
题目链接:Codeforces Round #499 (Div. 2)
A:肯定从小到大开始放最优。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
int n,k,pre,res,cnt; string str;
signed main(){
cin>>n>>k;
cin>>str; sort(str.begin(),str.end());
for(int i=0;i<n&&cnt<k;i++){
if(str[i]>pre+1) cnt++,res+=str[i]-'a'+1,pre=str[i];
}
if(cnt==k) cout<<res;
else cout<<-1;
return 0;
}
B:可以暴力枚举能不能过x天,当然这个具有二分性,二分更快。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=110;
int n,m,a[N],l,r,vis[N];
int cmp(int a,int b){return a>b;}
inline int check(int mid){
memset(vis,0,sizeof vis); int res=0;
for(int i=1;i<=m;i++) vis[a[i]]++; sort(vis+1,vis+101,cmp);
for(int i=1;i<=100;i++){
if(!vis[i]) continue; res+=(vis[i]/mid);
}
return res>=n;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i]; r=m;
while(l<r){
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l;
return 0;
}
C:也是具有二分性的,二分之后,暴力判断即可。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e3+10;
int n,m; double a[N],b[N];
inline bool check(double mid){
double tot=m+mid;
for(int i=1;i<=n;i++){
double up=tot/a[i];
if(tot-m<up) return 0; tot-=up;
double down=tot/b[(i==n?1:i+1)];
if(tot-m<down) return 0; tot-=down;
}
return tot>=m;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
double l=0,r=2e9;
for(int i=1;i<=100;i++){
double mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid;
}
if(l>1e9) return puts("-1"),0;
printf("%.10lf\n",l);
return 0;
}
E:贝祖定理,贝祖定理可知若 a1x1+a2x2+…+an*xn==c,则 c|gcd(a1,a2,a3…an);
所以ans=(gcd*(0->k-1))%k;
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,gd; set<int> res;
signed main(){
cin>>n>>k;
for(int i=1,x;i<=n;i++) cin>>x,gd=__gcd(gd,x);
for(int i=0;i<k;i++) res.insert((gd*i)%k);
cout<<res.size()<<'\n';
for(int x:res) cout<<x<<' ';
return 0;
}
青烟绕指柔!
发布了459 篇原创文章 · 获赞 240 · 访问量 2万+
私信
关注
标签:cin,int,Codeforces,long,mid,Ofast,499,str,Div 来源: https://blog.csdn.net/weixin_43826249/article/details/104071912