首页 > 其他分享 >Educational Codeforces Round 88

Educational Codeforces Round 88

时间:2023-08-02 17:44:07浏览次数:39  
标签:Educational return int Codeforces long cin 88 ans mod

A. Berland Poker

先尽可能的吧小丑给一个人,在把剩下的小丑尽可能的平分,最后计算差值即可。

#include <bits/stdc++.h>

using namespace std;

void solve() {
    int n, m, k, t;
    cin >> n >> m >> k, t = n / k;
    int a = min(m, t);
    m -= a, k--;
    int b = (m + k - 1) / k;
    cout << a - b << "\n";
    return;
}

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int T;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

B. New Theatre Square

因为只有\(1\times1,1\times2\)两种白色瓷砖,所以每一行单独 dp 求一下就好了。

#include <bits/stdc++.h>

using namespace std;

void solve() {
    int n, m, a, b, res = 0;
    cin >> n >> m >> a >> b;

    string g;
    for (int i = 1; i <= n; i++) {
        cin >> g;
        vector<int> f(m + 1);
        for (int j = 1; j <= m; j++) {
            if (g[j - 1] == '*') f[j] = f[j - 1];
            else {
                f[j] = f[j - 1] + a;
                if (j - 2 >= 0 && g[j - 2] == '.')
                    f[j] = min(f[j], f[j - 2] + b);
            }
        }
        res += f[m];
    }
    cout << res << "\n";
    return;
}

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int T;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

C. Mixing Water

其实混合只有两种情况

  1. \(x\)杯热水,\(x\)杯凉水,温度一定\(\frac{h + c }{ 2}\)
  2. \(x+1\)杯热水,\(x\)杯凉水,水温是\(T_x=\frac{(x+1)h+xc}{2x+1}\),并且\(T_x\in(\frac{h+c}{2},h],T_x>T_{x+1}\)

知道这些之后其实很好做了,如果\(t\le \frac{h+c}{2}\)答案一定是 2,否则可以二分答案。

其实对于第二种情况如果解\(T_x=t\)可以解出\(x=\frac{t-h}{h+c-2t}\),但是涉及到取证的问题,比较简单的做法是计算\(x-,x,x+1\)取最优解即可。

#include <bits/stdc++.h>

using namespace std;

#define int long long
typedef long double ld;

void solve() {
    int c, h, T;
    cin >> h >> c >> T;
    if (c + h >= T * 2) {
        cout << "2\n";
        return;
    }
    int x = (T - h) / (h + c - 2 * T );
    ld v = LDBL_MAX;
    int res = -1;
    for (int i = max(0ll, x - 1); i <= x + 1; i++) {
        ld vi = abs(ld((i + 1) * h + i * c) / ld(2 * i + 1) - ld(T));
        if( vi < v ) v = vi , res = 2*i+1;
    }
    cout << res << "\n";
    return;
}

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int T;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

D. Yet Another Yet Another Task

首先如果没有删除操作的话,实际上就是非常简单最大子串和。

Bob实际上为了最优解,删除的一定子区间的内的最大值。

发现\(a\)的值域其实很小,我们考虑枚举最大值\(k\),然后不选大于最大值的值,即把\(a_i>k\)的值置为\(-\infty\),这样的话,求出最大子串和之后减去\(k\)就是当前情况下的最优解。

#include <bits/stdc++.h>

using namespace std;

#define int long long


int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, res = 0;
    cin >> n;
    vector<int> a(n);
    for (auto &i: a) cin >> i;
    for( int k = 0 ; k <= 30 ; k ++ ){
        auto b = a;
        for( auto & i : b )
            if( i > k ) i = INT_MIN;
        int ans = 0 , cnt = 0;
        for( const auto & i : b ){
            cnt += i;
            if( cnt < 0 ) cnt = 0;
            ans = max( ans , cnt );
        }
        res = max( res , ans - k );
    }
    cout << res << "\n";
    return 0;
}

E. Modular Stability

在本地找规律就会发现,当\(a_1\)确定时,\(a_i\)一定是\(a_1\)的倍数。所以答案就是

\[\sum C_{\frac{n}{a_1}-1}^{k-1} \]

#include <bits/stdc++.h>

using namespace std;

#define int long long

const int mod = 998244353;

vector<int> fact, invFact;

int power(int x, int y) {
    int ans = 1;
    while (y) {
        if (y & 1) ans = ans * x % mod;
        y >>= 1, x = x * x % mod;
    }
    return ans;
}

int inv(int x) {
    return power(x, mod - 2);
}

void init(int n) {
    fact = vector<int>(n + 1), invFact = vector<int>(n + 1);
    fact[0] = 1, invFact[0] = inv(1);
    for (int i = 1; i <= n; i++)
        fact[i] = fact[i - 1] * i % mod, invFact[i] = inv(fact[i]);
}

int C(int x, int y) {
    assert(x >= y);
    return fact[x] * invFact[x - y] % mod * invFact[y] % mod;
}

int32_t main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n, k, res = 0;
    cin >> n >> k;
    if (n < k) {
        cout << "0\n";
        return 0;
    }
    init(n);
    for (int i = 1; i * k <= n; i++)
        res = (res + C(n / i - 1, k - 1)) % mod;
    cout << res;
    return 0;
}

证明可以去看看原题链接给的题解

标签:Educational,return,int,Codeforces,long,cin,88,ans,mod
From: https://www.cnblogs.com/PHarr/p/17601348.html

相关文章

  • Codeforces Round 889 (Div. 2) A-E
    传送门,不用谢。A给出排列每次可以交换两个数字,求最少多少次使得排列为错排。考虑在原位的数字个数为\(cnt\)则答案显然为\((cnt+1)>>1\)B求一个最大区间满足其中说有数字被\(n\)整除极其有趣,注意到样例解释具有迷惑性。考虑一个序列\([l,r]\)为答案那么从中可以看出\(1|n......
  • 1853 Round 887 (Div. 2)
    Desorting定义一次操作为选定一个\(i\),令\(a_{1\simi}\)自增,\(a_{i+1\simn}\),自减,求使得整个序列无序的最小操作次数若序列一开始就无序,输出\(0\)否则找到相邻两数差值最小的位置,在这个位置不断使用操作,可以证明这是最优方案#include<bits/stdc++.h>usingna......
  • 1851 Round 888 (Div. 3)
    EscalatorConversations判断两人台阶是否为\(k\)的倍数且在\((0,m)\)内即可#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intT; scanf("%d",&T); for(intn,m,k,H;T;--T){ scanf("%d%d%d%d",&n,&m,&a......
  • 1848 Round 885 (Div. 2)
    VikaandHerFriends给定一张网格图,Vika在\((x,y)\)处,她的\(k\)个朋友分别在\((x_{1\simk},y_{1\simk})\)处,每次所有人都必须移动到相邻各格子,询问Vika能否永远逃离她烦人的朋友考虑对格子进行黑白染色,每次移动一定会变换格子颜色,那么只有相同颜色的人才会碰......
  • 1855 Round 889 (Div. 2)
    DaltontheTeacher给定序列\(a_{1\simn}\),定义一次操作为交换序列中的某两个数,求使得\(\foralli,a_i\not=i\)的最少操作次数对于所有数据,\(n\leq10^5\)计算出\(a_i=i\)的位置数量\(sum\),若\(sum\)为偶数,则让其两两配对交换即可;否则会剩下一个数,在其他......
  • 万邦阿里巴巴中国站获得1688商品评论 API 返回值说明
    onebound.1688.item_review公共参数请求地址:console.open.onebound.cn/console/ind…名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[ye......
  • 请求示例curl获取淘宝1688京东等电商平台商品详情数据API接口,批量采集
    获得页面使用命令:curlhttp://curl.haxx.se这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将只显示文件头部,即HTML文档的header。要全部显示,请加参数......
  • 如何用python语言获得淘宝1688京东商品详情数据API 返回值说明
    前言item_get-获得商品详情搜索商品接口,可以通过关键词请求接口拿到商品列表页面的商品标题,商品价格,商品优惠价,商品视频,商品图片,商品sku属性,商品sku属性描述,发货地,库存,商品销量,店铺优惠券,店铺促销信息等页面上有的数据均可以拿到,以上的数据可以用于行业数据分析,商品搬家业务,商品......
  • Python语法API调试,淘宝1688拼多多商品详情测试接口
    Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C语言或C++(或者......
  • 淘宝天猫1688拼多多京东API接口,亲测有效
    Api接口也就是所谓的应用程序接口,api接口的全称是ApplicationProgramInterface,通过API接口可以实现计算机软件之间的相互通信,开发人员可以通过API接口程序开发应用程序,可以减少编写无用程序,减轻编程任务,API同时也是一种中间件,为各种不同平台提供数据共享。根据单个或分布式平台......