Codeforces 371C Hanburgers

Can I use Chinese? <br/>
这个题是一道二分题目 <br/>
he question is a two-point question. <br/>
题意很简单,不需要解释了 <br/>
It is very simple, do not need to explain. <br/>
但是我一直没过样例,原因是我的变量类型搞错了 <br/>
But I haven‘t had the sample because my variables are wrong. <br/>
应该是`long long`,但是我写成了`int` <br/>
It should be `long long`, but I use the `int`. <br/>
下面是代码 <br/>
Next is my code. <br/>

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int q[5]; // B C S
int c[5];
int m[5];
char s[110];
int B,C,S;
long long tot,ans;
int check(long long n)
{
    long long tmp=tot;
    if(n*c[1]>q[1])    tmp-=(n*c[1]-q[1])*m[1];
    if(n*c[2]>q[2])    tmp-=(n*c[2]-q[2])*m[2];
    if(n*c[3]>q[3])    tmp-=(n*c[3]-q[3])*m[3];
    if(tmp>=0)
        return 1;
    else
        return 0;
}
int main()
{
    cin>>s;
    for(int i=0;i<strlen(s);i++)
    {
    if(s[i]==‘B‘)    c[1]++;
    if(s[i]==‘S‘)    c[2]++;
    if(s[i]==‘C‘)    c[3]++;
    }
    cin>>q[1]>>q[2]>>q[3];
    cin>>m[1]>>m[2]>>m[3];
    cin>>tot;
    int d=tot;
    long long l=1,r=2333333333333;
    long long mid;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(check(mid))
        l=mid+1,ans=mid;
        else    r=mid-1;
    }
    cout<<ans;
    return 0;

}
        
时间: 2024-10-09 22:42:16

Codeforces 371C Hanburgers的相关文章

Codeforces 371C Hamburgers

Description Polycarpus loves hamburgers very much. He especially adores the hamburgers he makes with his own hands. Polycarpus thinks that there are only three decent ingredients to make hamburgers from: a bread, sausage and cheese. He writes down th

CodeForces 371C Hamburgers 二分

CodeForces 371C Hamburgers 二分 题意 给你一个做汉堡包的菜单,他们是由B S C,三种材料做成的,现在我们有一些材料和钱,我们想做最多的汉堡包,请问最多是多少? 解题思路 这里我们开始我们可能会想该怎么买,也就是买的策略是什么,其实我们可以不用去思考这个,理由如下: 假如我们知道最后的结果,我们是不是可以算出来我们要买的东西?答案是肯定的(在钱不浪费的情况下),再加上这个答案是线性单调的,也就是如果答案是m,那么小于m的也是一定可以做到的,这样我们就可以使用二分来枚举

CodeForces 371C Hamburgers (二分)

A - Hamburgers Time Limit:1000MS    Memory Limit:262144KB    64bit IO Format:%I64d & %I64u Description Polycarpus loves hamburgers very much. He especially adores the hamburgers he makes with his own hands. Polycarpus thinks that there are only three

【codeforces 718E】E. Matvey&#39;s Birthday

题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串s.两个位置i,j(i!=j)存在一条边,当且仅当|i-j|==1或s[i]==s[j].求这个无向图的直径,以及直径数量. 题解:  命题1:任意位置之间距离不会大于15. 证明:对于任意两个位置i,j之间,其所经过每种字符不会超过2个(因为相同字符会连边),所以i,j经过节点至多为16,也就意味着边数至多

Codeforces 124A - The number of positions

题目链接:http://codeforces.com/problemset/problem/124/A Petr stands in line of n people, but he doesn't know exactly which position he occupies. He can say that there are no less than a people standing in front of him and no more than b people standing b

Codeforces 841D Leha and another game about graph - 差分

Leha plays a computer game, where is on each level is given a connected graph with n vertices and m edges. Graph can contain multiple edges, but can not contain self loops. Each vertex has an integer di, which can be equal to 0, 1 or  - 1. To pass th

Codeforces Round #286 (Div. 1) A. Mr. Kitayuta, the Treasure Hunter DP

链接: http://codeforces.com/problemset/problem/506/A 题意: 给出30000个岛,有n个宝石分布在上面,第一步到d位置,每次走的距离与上一步的差距不大于1,问走完一路最多捡到多少块宝石. 题解: 容易想到DP,dp[i][j]表示到达 i 处,现在步长为 j 时最多收集到的财富,转移也不难,cnt[i]表示 i 处的财富. dp[i+step-1] = max(dp[i+step-1],dp[i][j]+cnt[i+step+1]) dp[i+st

Codeforces 772A Voltage Keepsake - 二分答案

You have n devices that you want to use simultaneously. The i-th device uses ai units of power per second. This usage is continuous. That is, in λ seconds, the device will use λ·ai units of power. The i-th device currently has bi units of power store

Educational Codeforces Round 21 G. Anthem of Berland(dp+kmp)

题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串. 问你第一个字符串最多包含多少个第二个字符串. 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经匹配到第二个字符串的第j位. 这样的话复杂度为26*n*m*O(fail). fail可以用kmp进行预处理,将26个字母全部处理出来,这样复杂度就变成了26*n*m. 状态转移看代码(就是一个kmp