这位巨佬的博客还是比我好多了


T1 工业题

考场:

暴力挺香的,不想正解了。

题解:

$f(i,j)$ 只会得到 $f(i-1,j)$ 和 $f(i,j-1)$ 的贡献。每向右一步乘 $a$ ,向下一步乘 $b$ 。左侧竖点有$\binom{n+m-1-i}{m-1}$种走法,上侧横店有$\binom{n+m-1-i}{n-1}$种走法.

预处理阶乘和阶乘逆元以及 $a,b$ 的幂次方即可。

#include<bits/stdc++.h>
using namespace std;
const int N=11000000,mod=998244353;
long long a,b,n,m,inc[N],jc[N],am[N],bm[N],fheng[N],fshu[N],ans;
long long quick_pow(long long x,long long y)
{
long long res=1;
while(y)
{
if(y&1)
{
res=res*x%mod;
}
y>>=1;
x=x*x%mod;
}
return res;
}
long long C(int n,int m)
{
return jc[n]*inc[m]%mod*inc[n-m]%mod;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&a,&b);
a%=mod;b%=mod;
am[0]=bm[0]=jc[0]=inc[0]=1;
for(int i=1;i<=n+m;i++)
{
jc[i]=jc[i-1]*i%mod;
am[i]=am[i-1]*a%mod;
bm[i]=bm[i-1]*b%mod;
}
inc[n+m]=quick_pow(jc[n+m],mod-2);
for(int i=n+m-1;i>=1;i--)
{
inc[i]=inc[i+1]*(i+1)%mod;
}
for(int i=1;i<=n;i++)
{
scanf("%lld",&fheng[i]);fheng[i]%=mod;
}
for(int i=1;i<=m;i++)
{
scanf("%lld",&fshu[i]);fshu[i]%=mod;
}
for(int i=1;i<=n;i++)
{
ans+=fheng[i]*C(n+m-1-i,m-1)%mod*am[m]%mod*bm[n-i]%mod;
ans%=mod;
}
for(int i=1;i<=m;i++)
{
ans+=fshu[i]*C(n+m-1-i,n-1)%mod*am[m-i]%mod*bm[n]%mod;
ans%=mod;
}
printf("%lld\n",ans);
return 0;
}

T2 卡常题

考场:

灵光乍现,发现如果把y部点删去,只剩下每个y点所连的边,题目所给的图就变成了一棵基环树。

原因:x,y部点都只有 $n$ 个如果把y点变成 $n$ 条边,那么由于题目保证联通且无重边,$n-1$ 的边构成一棵树,剩下的一条边随机连接,构成环。

问题就转化成了,在一棵基环树上,选择一个点的代价为该点所连边的权值和,选择的点可以“看守”所连的边,求所有边被看守的最小代价。

题解:

考场上我按照轮流断掉环中的每一条边,每次跑 $O(n)$ 树形DP来做的,即使看到能被卡成 $O(n^2)$ 的环形数据,依然执迷不悟。

事实上断哪一条边对答案完全没有影响,因为DP所求的和所需的完全没有变。 而且如果随机选一个点作为树根,难以保证断掉的边两侧的点一定选择了之一。

所以钦定其中一个点为根,跑两次DP。

#include<bits/stdc++.h>
using namespace std;
const int N=1100000,M=N<<1;
int n,aa,bb,cnt=1,head[N],circle[N<<1],num,c1,c2,du[N],e,f[2][N][2],ans=0x7fffffff,sam[N];
bool vis[N],used[N];
inline int read()
{
int s=0,w=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
while(isdigit(ch)){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
inline int _min(int a,int b)
{
return a<b?a:b;
}
struct bian
{
int nxt,to,w[2];
}b[M];
void add(int from,int to,bool g)
{
du[from]++;du[to]++;
b[++cnt].w[g]=aa;
b[cnt].w[g^1]=bb;
b[cnt].nxt=head[from];
b[cnt].to=to;
head[from]=cnt;
}
void findcir1(int u,int fa)
{
vis[u]=1;
for(int i=head[u],v;i;i=b[i].nxt)
{
v=b[i].to;
if(v==fa) continue;
else if(vis[v])
{
c1=u,c2=v;e=i;
return;
}
else
{
findcir1(v,u);
}
}
}
bool findcir2(int u)
{
bool ok=0;
for(int i=head[u],v;i;i=b[i].nxt)
{
if(used[i])
continue;
v=b[i].to;
circle[++num]=i;
circle[++num]=i^1;
used[i]=used[i^1]=1;
if(du[v]==2)
{
circle[num--]=0;
circle[num--]=0;
continue;
}
if(v==c1)
{
ok=1;return ok;
}
ok=findcir2(v);
if(!ok)
{
circle[num--]=0;
circle[num--]=0;
continue;
}
else
return ok;
}
return ok;
}
void DP(int x,int fa,int o)
{
int sum=0;
f[o][x][0]=0;
f[o][x][1]=sam[x];
for(int i=head[x];i;i=b[i].nxt)
{
if(i==e||(i^1)==e||b[i].to==fa)continue;
DP(b[i].to,x,o);
sum+=min(f[o][b[i].to][0],f[o][b[i].to][1]);
f[o][x][0]+=f[o][b[i].to][1];
}
f[o][x][1]+=sum;
}
int main()
{
n=read();aa=read();bb=read();
for(int i=1,u,v;i<=n;i++)
{
u=read();v=read();
add(u,v,0);
add(v,u,1);
sam[u]+=aa;
sam[v]+=bb;
}
findcir1(1,0);
findcir2(c1);
memset(used,0,sizeof(used));
DP(c1,0,0);
DP(c2,0,1);
printf("%d\n",_min(f[0][c1][1],f[1][c2][1]));
return 0;
}

T3 玄学题

$\begin{align}ans=\sum_{i=1}^{n}(-1)^{\sum_{j=1}^{m}d(i*j)}\\ans=\sum_{i=1}^{n}(-1)^{\sum_{j=1}^{m}d(i*j) \bmod 2}\end{align}$

因为奇+奇=偶,奇+偶=偶,偶+偶=偶,

所以,只有 $d(i*j)$ 为奇数,才对和式整体有贡献。

这时 $i*j$ 为完全平方数,假设i=p*q*q,那么 $j$ 是 $p*r*r$。

对于每一个 $i$,有$\sqrt{\lfloor \frac{m}{p} \rfloor}$ 个j对和式产生了贡献。

(只有能使 $-1$ 的幂增减 $1$ 的才算对和式产生了贡献)

#include<bits/stdc++.h>
using namespace std;
inline long long read()
{
long long s=0,w=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
while(isdigit(ch)){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
const int N=11000000;
long long n,m,ans,p[N];
bool flag[N];
int main()
{
n=read();m=read();
scanf("%lld%lld",&n,&m);
for(int i=1;i*i<=n;i++)
{
for(int j=1;j*i*i<=n;j++)
{
p[i*i*j]=j;
}
flag[i*i]=1;
}
int s=sqrt(m);
for(int i=1;i<=n;i++)
{
if(flag[i])
{
if(s&1)
ans--;
else
ans++;
}
else
{
int x=sqrt(m/p[i]);
if(x&1)
ans--;
else ans++;
}
}
printf("%lld\n",ans)
;
return 0;
}

这两场都好拉跨啊QWQ每一次就离正解一步之遥。

20210713考试-2021noip13的更多相关文章

  1. 20210713考试-2021noip14

    T1 队长快跑 #include<bits/stdc++.h> using namespace std; const int N=1e6+5,INF=0x7fffffff; int n,a ...

  2. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  3. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  4. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  5. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  6. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  7. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  8. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  9. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

随机推荐

  1. 直接使用!安装WordPress一键部署轻松建站教程

    关于 WordPress WordPress (opens new window)简称WP,最初是一款博客系统,后逐步演化成一款功能强大的企业级 CMS(内容管理/建站系统),目前是公认的全球最佳建站 ...

  2. Go测试技术分享(一):场景化接口Case编写

    一.前言 本人负责的支付清结算方向的测试工作,在测试项目中,会出现流程化的接口调用,请求完一个接口后,继续请求另一个接口(这里的接口可以指Http,也指rpc接口),这里以一个真实场景为例:用户在平台 ...

  3. DataGrid列显示隐藏配置

    1.列右键事件 private void data1_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { ContextMenu ...

  4. Kotlin高阶函数实战

    前言 1. 高阶函数有多重要? 高阶函数,在 Kotlin 里有着举足轻重的地位.它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle ...

  5. React Native 启动流程简析

    导读:本文以 react-native-cli 创建的示例工程(安卓部分)为例,分析 React Native 的启动流程. 工程创建步骤可以参考官网.本文所分析 React Native 版本为 v ...

  6. Python - typing 模块 —— 类型别名

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  7. 【XXE学习】XML外部实体注入

    一.XML外部实体注入介绍 1.1 XXE简介 XML外部实体注入(XML External Entity Injection)也就是人们(mian shi guan )常说的XXE啦,见名知意,就是 ...

  8. STM32—驱动DHT11数字温湿度传感器

    文章目录 DHT11模块简介 DHT11数据传输 DHT11通信时序 代码实现 相关引脚初始化 复位模块 判断响应模块 读取数据包模块 DHT11模块简介 DHT11数字温湿度传感器,用来测量环境的温 ...

  9. 痞子衡嵌入式:其实i.MXRT下改造FlexSPI driver同样支持AHB方式去写入NOR Flash

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下改造FlexSPI driver以AHB方式去写入NOR Flash. 痞子衡前段时间写过一篇 <串行NAND Fl ...

  10. 神州战神U盘安装windows10系统,启动项制作好后,在bios中识别不到自己的u盘问题

    我笔记本是神州战神,启动盘做完了后,按快捷键F2,进入boot下进行设置,找了半天没找到自己的u盘,很郁闷,捣鼓了半天才搞定,以下是我修改之后的设置: 1.把Secure Boot设置为disable ...