【Codeforces】Codeforces Round #491 (Div. 2) (Contest 991)

题目

传送门: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=-1;
    if(ans>0) printf("%d\n",ans);
    else puts("-1");

}


B:B - Getting an A

分析:

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

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=300;
int a[maxn];
int main(){
    int n;scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    sort(a+1,a+1+n);
    int sum=0,ans=0;for(int i=1;i<=n;i++) sum+=a[i];
    for(int i=1;i<=n;i++){
    //    cout<<(double)(sum*1.0/n)<<endl;
        if((double)(sum*1.0/n)>=4.5) break;
        int k=5-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=0,x=n;
    while(x>=0){
        if(x>=k) sum+=k;else sum+=x; x=max(x-k,-1ll); x-=x/10;
    }
    //    printf("----  %lld  %lld\n",k,sum);
    return sum>=(n+1)/2;

}
int main(){
      cin>>n;
    ll l=0,r=n+5;
    while(l+1<r){
        ll mid=l+r>>1;
    //    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=200;
char s[maxn], s2[maxn];
int main(){
    scanf("%s%s",s+1,s2+1);
    int n=strlen(s+1);
    int ans=0;
    s[0]=‘X‘; s2[0]==‘X‘;
    for(int i=1;i<=n;i++){
        if(s[i]==‘X‘) continue;
        if(s2[i]==‘0‘ && s2[i-1]==‘0‘){
            s2[i]=‘X‘; s2[i-1]=‘X‘; s[i]=‘X‘; ans++;
        //    printf("%d 1\n",i);
            continue;
        }
        if(s2[i]==‘0‘ && s2[i+1]==‘0‘){
            s2[i]=‘X‘; s2[i+1]=‘X‘; s[i]=‘X‘; ans++;
        //    printf("%d 2\n",i);
            continue;
        }
        if(s[i+1]==‘0‘ && s2[i]==‘0‘){
            s2[i]=‘X‘; s[i+1]=‘X‘; s[i]=‘X‘; ans++;
        //    printf("%d 3\n",i);
            continue;
        }
        if(s[i+1]==‘0‘ && s2[i+1]==‘0‘){
            s2[i+1]=‘X‘; s[i+1]=‘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[15], vis[15];
ll fac[20];
set<string> s;
void split(string x, int *a)
{
    for (int i = 0; i < 10; i++) a[i] = 0;
    for (char i: x) a[i-‘0‘]++;
}
ll getcount()//去重全排列
{
    ll ans = fac[accumulate(a, a+10, 0)];
    for (int i = 0; i < 10; i++) ans /= fac[a[i]];
    return ans;
}
ll getans(string x)
{
    split(x, a);
    for (int i = 0; i < 10; i++) if (vis[i] && !a[i]) return 0;//比原来少了i数字
    sort(x.begin(), x.end());
    if (s.count(x)) return 0;//x这种子集算过了
    else s.insert(x);

    ll ans = getcount();
    if (a[0]) { a[0]--; ans -= getcount(); }//减去前导0情况
    return ans;
}
int main()
{
    fac[0] = 1; for(int i = 1; i < 20; i++) fac[i] = fac[i-1]*i;//计算阶乘
    string n; cin >> n;
    split(n, vis);
    int k = n.size();
    ll ans = 0;
    for (int i = 1; i < (1<<k); i++)//二进制枚举
    {
        string t;
        for (int j = 0; j < k; j++)
            if (i&(1<<j)) t += n[j];
        ans += getans(t);
    }
    printf("%lld\n",ans);
    return 0;
}

原文地址:https://www.cnblogs.com/noblex/p/9266043.html

时间: 2024-08-28 13:12:41

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

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

- .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wrapper iframe, .fluid-width-video-wrapper object, .fluid-width-video-wrapper embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } [

【云图】自有数据的多边形检索(云检索)

原文:[云图]自有数据的多边形检索(云检索) 摘要:记录每天的生活轨迹,分享美食心得,哪里有免费停车,制作班级通讯录等等,都可以用到云图.无论你是开发者,还是app用户,都可以用云图制作一张属于你的专属地图. --------------------------------------------------------------------------------------------------------- 一.通过坐标拾取工具得到经纬度: http://zhaoziang.com/a

【解决】UEFI+GPT模式下装系统(WIN7/WIN8)

最近在家想把联想超极本重装系统,可是发现想简单了,预装WIN8的本本用的是UEFI+GPT模式,以前老毛桃装系统那一套不好用了,所以百度了一些方案,还没试,先记着. 1. WIN8 先说装WIN8,貌似比较简单,参考: http://www.pcbeta.com/forum.php?mod=viewthread&tid=1415388 2. WIN7 预装WIN8的机子要装WIN7,有些麻烦,但是貌似找到了一个挺靠谱的教程 先制作启动U盘的PE: http://sphrbeu2012.blog.

【POJ2891】Strange Way to Express Integers(拓展CRT)

[POJ2891]Strange Way to Express Integers(拓展CRT) 题面 Vjudge 板子题. 题解 拓展\(CRT\)模板题. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 111111 ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b){x=1,y=0;return a;

【转】 mysql反引号的使用(防冲突)

转载地址:http://blog.itechol.com/space.php?uid=33&do=blog&id=6681 1.mysql语句中 反引号 [`]作用: 避免表明.字段名与mysql已存在的[保留字]冲突,引起不知名错误. 2.所以我们建表和字段时候,特别需要注意,尽量使用全拼/下划线 来设置字段和表名 3.连接不同数据库查询,一定不要加[`]反引号,否则会被解析成 单个表 4.为了区分MYSQL的保留字与普通字符而引入的符号. 举个例子:SELECT `select` FR

【BZOJ4942】[Noi2017]整数 线段树+DFS(卡过)

[BZOJ4942][Noi2017]整数 题目描述去uoj 题解:如果只有加法,那么直接暴力即可...(因为1的数量最多nlogn个) 先考虑加法,比较显然的做法就是将A二进制分解成log位,然后依次更新这log位,如果最高位依然有进位,那么找到最高位后面的第一个0,将中间的所有1变成0,那个0变成1.这个显然要用到线段树,但是复杂度是nlog2n的,肯定过不去. 于是我在考场上yy了一下,这log位是连续的,我们每次都要花费log的时间去修改一个岂不是很浪费?我们可以先在线段树上找到这段区间

【SE】Week3 : 个人博客作业(必应词典)

关于 微软必应词典客户端 的案例分析 [第一部分]  调研,评测 一.用户采访 1)   介绍采访对象的背景和需求: 被采访同学是马来西亚华裔叶能端同学,由于此前在马来西亚英语是第二语言,因此经常需要使用字典查阅单词. 2)   让采访对象使用10-30分钟必应词典的功能(附上能端同学美照一张lol) 3)   描述用户使用这个产品的过程,  用户的问题解决了么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么? 4)   用户对产品有什么改进意见? 二.软件的BUG.功能

【转】查找——图文翔解RadixTree(基数树)

本文转自:http://blog.csdn.net/yang_yulei/article/details/46371975 基数树 对于长整型数据的映射,如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题.radix树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射.借助于Radix树,我们可以实现对于长整型数据类型的路由.利用radix树可以根据一个长整型(比如一个长ID)快速查找到其对应的对象指针.这比用hash映射来的简单,也更节省空间,使用hash映射hash函数难

2017秋-软件工程第七次作业(1)-【探路者】贪吃蛇阿尔法发布展示(视频展示)

Part One [探路者]选题展示视频链接: http://www.iqiyi.com/w_19ruzx6xud.html Part Two [贪吃蛇]阿尔法发布视频截图 1视频的前半部分是介绍功能区域. 2后半部分是介绍小蛇吃单词的功能. Part Three[贪吃蛇]制作过程(核心难点突破) 1使用绘声绘影软件制作. 2消除声音中的噪音. Part Five [贪吃蛇]制作细节(素材+准备+创意构思) 1米赫同学负责构思视频制作流程.使用录屏软件进行录制.撰写脚本对录制的软件进行介绍.同时