首页 > 其他分享 >10.2 代码源 2024 CSP-S 模拟赛 Day 7

10.2 代码源 2024 CSP-S 模拟赛 Day 7

时间:2024-10-04 17:49:24浏览次数:1  
标签:10.2 return Tuple int tt tu 2024 fd Day

省流:\(55+5+0+10=70\)

简称:唐诗

T1

第一眼发现在二进制下加法不能进位,然后码了个 DP 就放那了……

DP 代码:

int S=(1<<14)|1;
fd(i,0,r[1]) f[1][i]=1;
fd(i,2,n)
{
    fd(j,0,S)
    {
        f[i][j]=f[i-1][j];
        for(int s=j;s;s=(s-1)&j)
        {
            (f[i][j]+=(s<=r[i])*f[i-1][j-s])%=mod;
        }
    }
}
ans=0;
fd(i,0,S) (ans+=f[n][i])%=mod;

正解的话,这里给一个记忆化代码:

int DP(int msk,int x)
{
    if(x<0) return 1;
    if(f[msk][x]) return f[msk][x];
    int res=0;
    fd(i,1,n)
    {
        if((r[i]>>x&1)||(msk>>i)&1)
        {
            int mask=msk;
            fd(j,1,n)
            {
                if(i==j) continue;
                if((r[j]>>x)&1) mask|=(1<<j);
            }
            (res+=DP(mask,x-1))%=mod;
        }
    }
    int mask=msk;
    fd(j,1,n) if((r[j]>>x)&1) mask|=(1<<j);
    (res+=DP(mask,x-1))%=mod;
    return f[msk][x]=res;
}

T2

就写了个暴力……

正解人类智慧+三分()

核心代码(一个大佬的):

struct Tuple {
    int a, b, t;
} s[N];

Tuple Merge(Tuple x, Tuple y) { return {x.b + y.b, x.a + y.a, 1 - x.t - y.t}; }
Tuple Move(Tuple x, int t) { return {x.a + t * 3, x.b - t * 3, x.t - t * 2}; }

vector<Tuple> tu;

inline int Calc(Tuple i) { return sum[i.a] - (sum[n] - sum[i.a]) + k * i.t; }

signed main() {
    n = read(), q = read();
    for (int i = 1; i <= n; ++i) a[i] = read();
    sort(a + 1, a + 1 + n, [&](int x, int y) { return x > y; });
    for (int i = 1; i <= n; ++i) sum[i] = sum[i - 1] + a[i];
    for (int i = 1; i <= n; ++i) s[i] = {1, 0, 0};
    for (int i = 2; i <= n; ++i) s[i] = Merge(s[i], s[i - 1]);
    Tuple tt = s[n];
    while (tt.a - 3 >= 0) tt = Move(tt, -1);
    do {
        tu.push_back(tt);
        tt = Move(tt, 1);
    } while (tt.b >= 0);
    while (q--) {
        k = read(), ans = -9E18;
        int l = 0, r = tu.size();
        while (l + 3 < r) {
        int ml = l + (r - l) / 3;
        int mr = r - (r - l) / 3;
        if (Calc(tu[ml]) > Calc(tu[mr]))
            r = mr;
        else
            l = ml;
        }
        for (int i = max(0ll, l - 1); i <= min((int)(tu.size() - 1), r + 1); ++i)
        ans = max(ans, Calc(tu[i]));
        printf("%lld\n", ans);
    }
    return 0;
}

T3

赛时没看到下标从 \(0\) 开始,然后虚空调试半天……

正解还没写……

但是给出一个 \(20\) 分的核心代码:

int check(int x)
{
    fd(i,0,n-1) in[i]=0;
    fd(i,1,m)
    {
        if((x>>(m-i))&1)
        {
            in[e[i].x]++;
            in[e[i].y]++;
        }
    }
    int res=0;
    fd(i,0,n-1) if(in[i]&1) res++;
    return res;
}

//然后这样枚举

int S=(1<<(m))-1;
bd(i,S,0)
{
    int chk=check(i);
    if(chk>maxx)
    {
            maxx=chk;
        ans=i;
    }
}
fd(i,1,m)
{
    cout<<((ans>>(m-i))&1);
}

T4

好像是个原,但是只写了 \(20\) 分的 DFS 序……

其实不用树剖的,但是赛时脑残写了个树剖……

然后还把暴力分的 \(DFS1\) 和 \(DFS2\) 搞反了,痛失 \(10\) 分……

\(\LARGE{唐}\)

标签:10.2,return,Tuple,int,tt,tu,2024,fd,Day
From: https://www.cnblogs.com/whrwlx/p/18446951

相关文章

  • 【刷题笔记】2024.10.4 test
    2024.10.4test虹色的北斗七星思路题目要求\[maxn-minn-len\]的最大值,其中\(maxn\)为区间的最大值,\(minn\)为区间的最小值,\(len\)为区间的长度注意性质,最优的状态一定是区间的左右端点为最大值和最小值时。因为,如果区间左右端点不为最大值或最小值,那么区间长度就可以继续......
  • The 2024 CCPC Shandong Invitational Contest and Provincial Collegiate Programmin
    Preface传说中被杭电1h十题的比赛,结果打到结束也只会10题这场开局就不太顺,一个Easy题C卡到2h的时候才出,虽然中期题基本都能想到但还是出的很慢最后1h讨论了下L的大致做法发现了几个关键性质后觉得写不完了,遂摆烂滚去打炉石了A.Printer签到,二分答案大力检验即......
  • 羊城杯2024WP
    羊城杯-2024webweb2进题信息搜集一下,dirsearch发现了login路由可访问,先随便点一下,发现了一个文件读取:http://139.155.126.78:30148/lyrics?lyrics=Rain.txt我尝试了一下:http://139.155.126.78:30148/lyrics?lyrics=../../../../../../../../etc/passwd发现可以读取:本以为是任意文......
  • [DMY]2024 CSP-S 模拟赛 Day 7
    题目T1T2T3T4当前分数这场打成一坨了。几乎写的全是暴力。赛时开T1,不太会正解,先写了个暴力丢到那儿。胡了一个\(\mathcal{O}(n^2)\)的做法,但是样例假了,照着手推一遍发现错的很彻底。已经过了1h,于是去看T2。T2还是先写出来了暴力思路。感觉这东西......
  • 【题解】Solution Set - NOIP2024集训Day42 博弈论
    【题解】SolutionSet-NOIP2024集训Day42博弈论https://www.becoder.com.cn/contest/5574https://www.cnblogs.com/CloudWings/p/17813917.html「中山市选2009」谁能赢呢?一道经典的「二分图博弈」在棋盘问题上的应用。https://www.luogu.com.cn/article/h8a79k3i......
  • 10.4 代码源 2024 CSP-S 模拟赛 Day 9
    省流:\(100+0+0+0=100\)简称:唐诗T1先写了个暴力,然后在想怎么优化,然后想了个区间DP但是写的时候又不会了……然后发现如果这一块数的二进制每一位都有一个数的这一位为\(0\)或者都相同,那么这些数合并起来一定最优,然后双指针搞,复杂度\(O(30n)\)。(这么绕口)赛后听别人说有......
  • [DMY]2024 CSP-S 模拟赛 Day 9
    T2调了1h没调出来,丢了一坨没分的shi扔了。我想放一下作为开头:include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inlineintread(){intw=1,s=0;charch=getchar();while(!isdigit(ch)){if(ch'-')w=-1;ch=getchar();}while(isdigit(ch)){s=s10+(ch-......
  • # 20222423 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1知识回顾本周内容主要通过学习了解到缓冲区溢出攻击的基本原理,同时也复习和加深了对于计算机中有关栈、堆、缓冲区等知识的印象。另外通过动手实践,掌握学习了解了以下知识:基本的汇编语言如(mov、push、pop、call等),弄够理解其基本功能知道esp、eip、ebp等寄存......
  • day9[探索 InternLM 模型能力边界]
    BadCase1:模型服务来源https://opencompass.org.cn/arena您的输入10月中旬去北京穿什么衣服模型Ainternlm2.5-20b-chat模型BDoubao-pro-32k/240828(字节豆包)模型A输出||模型B输出|||其他补充|xxxx|BadCase2:模型服务来......
  • 【训练记录】2024年莆田市高中信息学奥赛国庆集训CSP-S提高组(第四天场外)
    训练情况rk#1\(100+100+100+100=400\)赛后反思因为满分AK了,就不需要反思了A题显然我们想要选的最多,我们优先选\(a_i\)小的,所以我们对\(a_i\)从小到大排序,再求一个前缀和,再使用二分即可#include<bits/stdc++.h>#defineintlonglongusingnamespaces......