首页 > 其他分享 >YL 模拟赛总结 4

YL 模拟赛总结 4

时间:2024-03-02 21:46:12浏览次数:22  
标签:总结 YL int dfrac long cdot 模拟 freopen dp

Problem


T1

遍历字符串,拿一个桶统计即可。

T2

当 \(x\) 为中位数时,我们应当尽量的让整个数列的和变小,然后直接在最后一个上加即可。

为了让整个数列有序,和最小的构造的数列应当是 \(0,0,\cdot \cdot \cdot,x,x,\cdot \cdot \cdot,x\),此时的和应是 \(\lfloor \dfrac{n+1}{2} \rfloor \times x\)。

因为 \(x\) 的值具有单调性,于是我们二分 \(x\) 的值,取最大值即可。时间复杂度 \(O(n \log n)\)。

但是wssb,\(\lfloor \dfrac{n+1}{2} \rfloor \times x\) 显然是 \(=S\) 的,于是答案即为 \(\dfrac{S}{\lfloor \dfrac{n+1}{2} \rfloor}\),时间复杂度 \(O(n)\)。

下面是考场二分代码。

#include<bits/stdc++.h>
#define int long long
using namespace std;

int t,n,s;

signed main(){
    //freopen("median.in","r",stdin);
    //freopen("median.out","w",stdout);
    cin>>t;
    while(t--){
        cin>>n>>s;
        int l=-1,r=s+1;
        while(l+1<r){
            int mid=(l+r)>>1;
            if((n/2+1)*mid<=s) l=mid;
            else r=mid;
        }
        cout<<l<<'\n';
    }
    return 0;
}

T3

直接记忆化即可。

#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;

int n,m;
int a[231],b[231];

namespace sol1{
    void solve(){
        int res=a[1]&b[1];
        for(int i=2;i<=n;i++) res|=(a[i]&b[1]);
        cout<<res;
    }
}
namespace sol2{ //正解
    int res=-1e9,tmp[231]={0},mem[531][531];
    void dfs(int x,int s){
        if(mem[x][s]) return;
        mem[x][s]=1;
        if(x==n+1){
            res=max(res,s); return;
        }
        for(int i=1;i<=m;i++) dfs(x+1,s|(a[x]&b[i]));
    }
    void solve(){
        dfs(1,0);
        cout<<res;
    }
}

signed main(){
    //freopen("xor.in","r",stdin);
    //freopen("xor.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=m;i++) cin>>b[i];
    if(m==1) sol1::solve();
    else sol2::solve();
    return 0;
}

T4

状态:令 \(dp_i\) 表示买前 \(i\) 个商品的最小价格。

转移:

\[dp_i=\max(dp_{i-1}+a_i,dp_{i-k}+a_i \times 2) \]

注意需要将 \(a_i\) 排序。

#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,nn,ans,ss,p,k;
int dp[200031];
int c[200031];

signed main(){
    //freopen("shop.in","r",stdin);
    //freopen("shop.out","w",stdout);
    cin>>n>>p>>k;
    for(int i=1;i<=n;i++) cin>>c[i];
    sort(c+1,c+n+1);
    for(int i=1;i<=n;i++){
        dp[i]=dp[i-1]+c[i];
        if(i>=k) dp[i]=min(dp[i],dp[i-k]+c[i]*2);
    }
    for(int i=n;i>=0;i--){
        if(dp[i]<=p){ cout<<i; break; }
    }
    return 0;
}

标签:总结,YL,int,dfrac,long,cdot,模拟,freopen,dp
From: https://www.cnblogs.com/XOF-0-0/p/18049275

相关文章

  • YL 模拟赛总结 3
    ProblemT1累加燃烧度,除以\(m\)即为答案。需要开unsigned__int128,差评。T2若有\(a,b\)满足\(a-c=c-b\),化简此式可得\(a+b=2c\),说明\(a+b\)必须为偶数。于是我们倒序求一遍后缀偶数个数\(os_i\)和奇数个数\(js_i\);然后枚举每一个\(i\),若它是奇数,则它可以和它......
  • 2023-2024第一学期的助教工作总结(教务处老师助教)
    一.帮助老师整理开会后的电子版例会总结,整理各类考试试卷以及完成各类文档二.助教工作的每周时长不定,具体安排是整理电子版例会总结和整理考试试卷三.目前我自己的助教工作还处在初阶阶段,主要是帮助老师处理事情,老师平时很忙,平时帮助老师处理一些小事情,也为老师腾出时间来更......
  • 数学之概率题目总结
    前言如有错误,欢迎各位dalao指出。前置芝士:概率T1题目传送门可以看见,标签是入门,一定非常水。显然,要让小D获胜,我们只需要选出\(max(v,w)\rightarrow6\)这一段的任意一个值即可获胜,注意特判一下\(max(v,w)>6\)的情况就行了。还是比较水。T2题目传送门老师抽我起......
  • 0/1分数规划总结
    前言最近在搞什么树套树,博弈论,啥啥啥的,时间实在紧迫,就先拿0/1规划开刀。0/1分数规划是什么实际上是一类问题。顾名思义,0/1即对于\(n\)个物品,选择或者不选择。分数,即对于每个物体,有两个属性\(a_i,b_i\),选出物品的价值就是\(\dfrac{\suma_i\timesd_i}{\sumb_i\tim......
  • 每日总结
    1.在java中,数组是一个对象,不是一种原生类,对象所以存放在堆中,又因为数组特性,是连续的。2.用户不能调用构造方法,只能通过new关键字自动调用。这句话是错误的。在类内部可以用户可以使用关键字this.构造方法名()调用(参数决定调用的是本类对应的构造方法)在子类中用户可以通过......
  • Linux_Centos_yum报错总结
    ​此篇适用于yum报错【尝试其他镜像】并且【curl外网】不通的情况,此时一般考虑是网络的问题一,出现的报错信息: 此时测试curl/pingwww.baidu.com会发现无法连通 二,解决方法:1,首先查看dns的配置文件/etc/resolv.conf检查这里的nameserver这里有时候会因为第二个网卡......
  • YL 模拟赛总结 15
    ProblemT1感觉是最难的。考虑贪心。首先对牛的按左端点进行排序,然后对于每只鸡去考虑匹配哪头牛。具体地,开一个小根堆,然后对于每只鸡\(t_i\),将\(a_i\let_i\)的牛放入堆中,此时堆中存放的是候选的牛。然后对于堆中的牛,将\(b_i<t_i\)的牛弹出。此时堆中的牛均是合法的......
  • YL 模拟赛总结 14
    Problem省流:三道题写了tjT1见tj。T2见tj。T3见tj。T4二分求出左右端点即可。#include<bits/stdc++.h>usingnamespacestd;intn,q;intp[200031];intmain(){//freopen("haybales.in","r",stdin);//freopen("haybales.out",&quo......
  • YL 模拟赛总结 13
    ProblemT1略。T2略。T3考虑对于每一头向北的牛,计算它能够挡住/被挡住几头向东的牛。一头向北的牛\(i\)能够被向东的牛\(j\)挡住的条件是:\(x_i<x_j\)且\(y_i<y_j\)(\(x_i,y_i\)分别表示牛\(i\)的\(x\)坐标与\(y\)坐标);\(l_j\)没有被更新(\(l_i\)表示第......
  • YL 模拟赛总结 12
    ProblemT1略。T2最理想的情况当然是奇偶交替,每个数单独成为一组。考虑不理想的情况:偶数个数\(>\)奇数个数,此时需要可以先奇偶交替,再将最后剩下的偶数单独分为一组,答案为奇数个数\(\times\2+1\)。奇数个数\(>\)偶数个数,此时再分出两种情况:若奇数个数\(-\)......