题目

传送门:QWQ

A:A - If at first you don't succeed...

分析:

按照题意模拟

代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,n;
scanf("%d%d%d%d",&a,&b,&c,&n); int ans=n-a-b+c;
if(a<c || b<c) ans=-;
if(ans>) printf("%d\n",ans);
else puts("-1"); }

B:B - Getting an A

 

分析:

显然把越小的改成5贡献越大。

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=;
int a[maxn];
int main(){
int n;scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a++n);
int sum=,ans=;for(int i=;i<=n;i++) sum+=a[i];
for(int i=;i<=n;i++){
// cout<<(double)(sum*1.0/n)<<endl;
if((double)(sum*1.0/n)>=4.5) break;
int k=-a[i]; ans++;
sum+=k;
}
printf("%d\n",ans);
}

C:C - Candies

分析:

大力二分

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
int ok(ll k){
ll sum=,x=n;
while(x>=){
if(x>=k) sum+=k;else sum+=x; x=max(x-k,-1ll); x-=x/;
}
// printf("---- %lld %lld\n",k,sum);
return sum>=(n+)/; }
int main(){
cin>>n;
ll l=,r=n+;
while(l+<r){
ll mid=l+r>>;
// cout<<l<<" "<<r<<endl; if(ok(mid)) r=mid;
else l=mid;
}
cout<<r;
}

D:D - Bishwock

 

分析:

按位从从左到右扫过去,能填进去就填进去

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=;
char s[maxn], s2[maxn];
int main(){
scanf("%s%s",s+,s2+);
int n=strlen(s+);
int ans=;
s[]='X'; s2[]=='X';
for(int i=;i<=n;i++){
if(s[i]=='X') continue;
if(s2[i]=='' && s2[i-]==''){
s2[i]='X'; s2[i-]='X'; s[i]='X'; ans++;
// printf("%d 1\n",i);
continue;
}
if(s2[i]=='' && s2[i+]==''){
s2[i]='X'; s2[i+]='X'; s[i]='X'; ans++;
// printf("%d 2\n",i);
continue;
}
if(s[i+]=='' && s2[i]==''){
s2[i]='X'; s[i+]='X'; s[i]='X'; ans++;
// printf("%d 3\n",i);
continue;
}
if(s[i+]=='' && s2[i+]==''){
s2[i+]='X'; s[i+]='X'; s[i]='X'; ans++;
// printf("%d 3\n",i);
continue;
}
}
// printf("%s\n%s\n",s+1,s2+1);
printf("%d\n",ans); }

E:E - Bus Number

分析:

https://blog.csdn.net/ZscDst/article/details/80835561

官方题解做法。。。。。

代码:

//copy from https://blog.csdn.net/ZscDst/article/details/80835561

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[], vis[];
ll fac[];
set<string> s;
void split(string x, int *a)
{
for (int i = ; i < ; i++) a[i] = ;
for (char i: x) a[i-'']++;
}
ll getcount()//去重全排列
{
ll ans = fac[accumulate(a, a+, )];
for (int i = ; i < ; i++) ans /= fac[a[i]];
return ans;
}
ll getans(string x)
{
split(x, a);
for (int i = ; i < ; i++) if (vis[i] && !a[i]) return ;//比原来少了i数字
sort(x.begin(), x.end());
if (s.count(x)) return ;//x这种子集算过了
else s.insert(x); ll ans = getcount();
if (a[]) { a[]--; ans -= getcount(); }//减去前导0情况
return ans;
}
int main()
{
fac[] = ; for(int i = ; i < ; i++) fac[i] = fac[i-]*i;//计算阶乘
string n; cin >> n;
split(n, vis);
int k = n.size();
ll ans = ;
for (int i = ; i < (<<k); i++)//二进制枚举
{
string t;
for (int j = ; j < k; j++)
if (i&(<<j)) t += n[j];
ans += getans(t);
}
printf("%lld\n",ans);
return ;
}

【Codeforces】Codeforces Round #491 (Div. 2) (Contest 991)的更多相关文章

  1. 【Codeforces】Codeforces Round #492 (Div. 2) (Contest 996)

    题目 传送门:QWQ A:A - Hit the Lottery 分析: 大水题 模拟 代码: #include <bits/stdc++.h> using namespace std; ...

  2. 【转】Java HashMap 源码解析(好文章)

    ­ .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wra ...

  3. 【BZOJ2754】喵星球上的点名(AC自动机)

    [BZOJ2754]喵星球上的点名(AC自动机) 题面 BZOJ 题解 友情提示:此题请不要在cogs上提交,它的数据有毒 对于点名串构建\(AC\)自动机 然后把名字丢进去进行匹配, 大力统计一下答 ...

  4. 【SPOJ】Distinct Substrings/New Distinct Substrings(后缀数组)

    [SPOJ]Distinct Substrings/New Distinct Substrings(后缀数组) 题面 Vjudge1 Vjudge2 题解 要求的是串的不同的子串个数 两道一模一样的题 ...

  5. 【BZOJ4071】八邻旁之桥(线段树)

    [BZOJ4071]八邻旁之桥(线段树) 题面 BZOJ权限题,洛谷链接 题解 既然\(k<=2\) 那么,突破口就在这里 分类讨论 ①\(k=1\) 这...不就是中位数吗.... 直接把所有 ...

  6. 【BZOJ4736】温暖会指引我们前行(Link-Cut Tree)

    [BZOJ4736]温暖会指引我们前行(Link-Cut Tree) ##题面 神TM题面是UOJ的 题解 LCT傻逼维护最大生成树 不会的可以去做一做魔法森林 #include<iostrea ...

  7. 【BZOJ5502】[GXOI/GZOI2019]与或和(单调栈)

    [BZOJ5502][GXOI/GZOI2019]与或和(单调栈) 题面 BZOJ 洛谷 题解 看到位运算就直接拆位,于是问题变成了求有多少个全\(0\)子矩阵和有多少个全\(1\)子矩阵. 这两个操 ...

  8. LuoguP3834 【模板】可持久化线段树 1(主席树)|| 离散化

    题目:[模板]可持久化线段树 1(主席树) 不知道说啥. #include<cstdio> #include<cstring> #include<iostream> ...

  9. 【BZOJ5138】[Usaco2017 Dec]Push a Box(强连通分量)

    [BZOJ5138][Usaco2017 Dec]Push a Box(强连通分量) 题面 BZOJ 洛谷 题解 这题是今天看到萝卜在做然后他一眼秒了,我太菜了不会做,所以就来做做. 首先看完题目,是 ...

随机推荐

  1. 安装基础版的kinetic

    没有gui工具 sudo apt-get install ros-kinetic-ros-base

  2. [原]visual studio 将(无扩展名)文件以某种(C++)方式阅读(映射)

    工具 选项 文本编辑器 文件扩展名 选择“将无扩展····”后面设置一下就可以

  3. 插件uaredirect.js实现电脑版跳转到手机版网站

    一.介绍 这段时间,有好多朋友问我,跳转到手机版的那个JS是怎么写的.其实这个JS也不是我写的,是百度siteapp下的一款跳转的产品,使用起来很方便.你可以用这款JS跳转到手机版,也可以跳转到任何你 ...

  4. js 面试题总结 3

    console.log(a); // undefined function fn() { console.log(a); // undefined } fn(); console.log(a); 创建 ...

  5. [html5]HTML5中<section>和<article>的区别

    一.section元素 从字面理解就是区块.部分的意思,相对于article元素更加广泛,每个区块都可以使用,比如页面里的导航菜单.文章正文.文章的评论等. 1.section元素用于对网站或应用程序 ...

  6. 使用触发器定义 WPF 控件的行为

    Expression Studio 4.0   其他版本 Expression Studio 3.0 Expression Studio 2.0   此主题尚未评级 - 评价此主题   在应用程序的生 ...

  7. .net core部署到linux

    1.Install the .NET SDK 我的服务器是腾讯云的Ubuntu 16 注册Microsoft密钥和订阅源 wget -q https://packages.microsoft.com/ ...

  8. freemarker多个checkbox一个以上被选中示例

    <tr> <td class="handColumn" colspan="5" > <#list deptHandNotConta ...

  9. @Query 注解实现查询(二十四)

    为了节约时间使得各位看官看起来更加简单舒适,这一节把测试方法和测试代码放在一起. 测试方法: // ------------------------------------ 使用 @Query 注解 ...

  10. do-while语句和while的区别

    do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件.其实就是,代码在刚开始执行的时候,都是要先走一遍do循环体内的代码,然后在与while里面的条件进行判断,成 ...