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

news/2024/10/4 18:00:40

省流:\(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;elsel = 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{唐}\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

第八届2024御网杯WP

WEBinput_data使用工具https://github.com/kost/dvcs-ripper./rip-svn.pl -u http://101.200.58.4:10005/.svn下载下来.svn目录然后查看结构发现几个文件cd进去目录,然后cat 文件名字即可看到 flag{5674938f-803d-4c41-8f84-a77f5164bb4f}Flag: flag{5674938f-803d-4c41-8f84…

给PbootCMS增加换行标签br=1

在 PbootCMS 中,如果你需要在前端显示一个包含换行符的简介字段,并且希望这些换行符能够正确显示为 HTML 中的换行,可以通过自定义解析器来实现这一功能。以下是详细的步骤: 步骤 1: 修改 ParserController.php 文件打开文件: 打开 \apps\home\controller\ParserControlle…

pbootcms如何显示按文章内容搜索,而不是搜索标题

在 PbootCMS 中,默认情况下搜索功能通常是基于文章标题进行的。如果你想让搜索功能基于文章内容进行,可以通过以下步骤实现: 步骤 1: 修改搜索表单 在搜索表单中添加一个隐藏字段 field,并将它的值设为 content。这样可以让系统知道搜索时应该针对文章内容进行匹配。 修改后…

PbootCMS文章列表序号怎么写?

根据你提供的信息,我们可以进一步了解如何使用 pboot:list 标签,并结合 [list:n]、[list:i] 和 [list:id] 进行一些实用的功能实现。下面是一些具体的示例和应用场景: 1. 显示列表序号 假设我们需要显示一个列表,并且希望序号从 0 开始:html{pboot:list num=10} <li>…

PbootCMS隐藏指定 scode 的菜单各种条件判断和标签

{pboot:nav} <li {pboot:if([nav:scode] == 2 || [nav:scode] == 4 || [nav:scode] == 6)}style="display: none;"{/pboot:if}><a href="[nav:link]">{nav:name}</a> </li> {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站…

PbootCMS判断导航从第几个开始各种条件判断和标签

{pboot:nav} {pboot:if([nav:i] > 2)} <li><a href="[nav:link]">{nav:name}</a></li> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。…

PbootCMS导航栏 logo 居中判断各种条件判断和标签

{pboot:nav} <a href="[nav:link]">{nav:name}</a> {pboot:if([nav:i] == 3)} <img src="{pboot:sitelogo}" /> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HT…

PbootCMS判断列表页有无内容,无内容返回提示各种条件判断和标签

{pboot:if({page:rows} > 0)} <div class="page"><a href="{page:index}">首页</a><a href="{page:pre}">上一页</a>{page:numbar}<a href="{page:next}">下一页</a><a href="{…