首页 > 其他分享 >春季赛模拟1

春季赛模拟1

时间:2023-02-11 16:56:18浏览次数:42  
标签:2110526 int typedef long maxn 春季 模拟 define

三个签到一个提答,6

A.签到题

之前考过的,不知道咋网络流证明

点击查看代码


#include <bits/stdc++.h>
typedef long long ll;typedef unsigned long long ull; typedef double db;typedef long double ldb;
#define fre(x) freopen(#x ".in","r",stdin),freopen(#x ".out","w",stdout)
#define Rep(i,a,b) for(int i=a;i<=b;++i) 
#define Dwn(i,a,b) for(int i=a;i>=b;--i)
#define pii pair<int,int>
#define mair make_pair
#define fir first
#define sec second
using namespace std;

const int maxn=1e6+10;

int n,m,K,C;

bool vis[maxn];
int ins[maxn];

void solve(){
	cin>>n>>m>>K>>C;int x,y;
	Rep(i,1,K){ cin>>x>>y; ++ins[x],++ins[y+n]; }
	n+=m;m=0;
	Rep(i,1,n)m+=(ins[i]%C!=0);
	cout<<m<<"\n";
}

int main (){ fre(qiandao);ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);return solve(),0; }

B.M弟娃

区间加全局max

点击查看代码


#include <bits/stdc++.h>
typedef long long ll;typedef unsigned long long ull; typedef double db;typedef long double ldb;
#define fre(x) freopen(#x ".in","r",stdin),freopen(#x ".out","w",stdout)
#define Rep(i,a,b) for(int i=a;i<=b;++i) 
#define Dwn(i,a,b) for(int i=a;i>=b;--i)
#define pii pair<int,int>
#define mair make_pair
#define fir first
#define sec second
using namespace std;

const int maxn=3e5+10;

struct Seg{
	struct Tree{ int val,lazy; }tr[maxn<<2];
	void Pushup(int rt){ tr[rt].val=max(tr[rt<<1].val,tr[rt<<1|1].val); }
	void Update(int rt,int w){ tr[rt].val+=w,tr[rt].lazy+=w; }
	void Pushdown(int rt){ if(tr[rt].lazy)Update(rt<<1,tr[rt].lazy),Update(rt<<1|1,tr[rt].lazy),tr[rt].lazy=0; }
	void Modify(int rt,int l,int r,int s,int t,int w){
		if(s>t)return;
		if(s<=l && t>=r)return Update(rt,w);
		int mid=(l+r)>>1;Pushdown(rt);
		if(s<=mid)Modify(rt<<1,l,mid,s,t,w);
		if(t>mid)Modify(rt<<1|1,mid+1,r,s,t,w);
		Pushup(rt);
	}
}T;

int n,m;

struct Graph{
	struct eg{ int from,to,next; }e[maxn*2];
	int len,head[maxn];
	void lqx(int from,int to)
	{ e[++len].from=from,e[len].to=to,e[len].next=head[from],head[from]=len; }
	int siz[maxn],son[maxn],dep[maxn],top[maxn],dfn[maxn],rk[maxn],Te,fa[maxn];
	void Dfs1(int u){
		siz[u]=1;dep[u]=dep[fa[u]]+1;
		for(int i=head[u];i;i=e[i].next){
			int v=e[i].to;if(v==fa[u])continue;
			fa[v]=u;Dfs1(v);siz[u]+=siz[v];
			if(!son[u] || siz[v]>siz[son[u]])son[u]=v;
		}
	}
	void Dfs2(int u,int tp){
		top[u]=tp;dfn[u]=++Te;rk[Te]=u;
		if(son[u])Dfs2(son[u],tp);
		for(int i=head[u];i;i=e[i].next){
			int v=e[i].to;if(v==fa[u] || v==son[u])continue;
			Dfs2(v,v);
		}
	}
	int Lca(int u,int v){
		while(top[u]!=top[v]){
			if(dep[top[u]]<dep[top[v]])swap(u,v);
			u=fa[top[u]];
		}
		return dep[u]<dep[v] ? u : v;
	}
	int Fa(int u,int k){
		if(k<=0)return u;
		while(k){
			int len=min(k,dep[u]-dep[top[u]]);
			u=rk[dfn[u]-len];k-=len;
			if(!k)break;
			--k;u=fa[u];
		}
		return u;
	}
}G;

void Sol(int u,int v){
	int lf=G.Lca(u,v);
	if(u==v)return T.Modify(1,1,n,1,n,1);
	if(lf!=u && lf!=v){
		T.Modify(1,1,n,G.dfn[u],G.dfn[u]+G.siz[u]-1,1);
		T.Modify(1,1,n,G.dfn[v],G.dfn[v]+G.siz[v]-1,1);
	}else{
		if(u!=lf)swap(u,v);
		int kf=G.Fa(v,G.dep[v]-G.dep[u]-1);
		T.Modify(1,1,n,1,n,1);
		T.Modify(1,1,n,G.dfn[kf],G.dfn[kf]+G.siz[kf]-1,-1);
		T.Modify(1,1,n,G.dfn[v],G.dfn[v]+G.siz[v]-1,1);
	}
}

void solve(){
	cin>>n>>m;
	Rep(i,2,n){ int x,y;cin>>x>>y;G.lqx(x,y),G.lqx(y,x); }
	G.Dfs1(1),G.Dfs2(1,1);
	while(m--){
		int x,y;
		cin>>x>>y;Sol(x,y);
		cout<<T.tr[1].val<<"\n";
	}
}

int main (){ fre(magic);ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);return solve(),0; }

C.变异大老鼠

最短路树唯一,就是一树上背包。

点击查看代码
#include <bits/stdc++.h>
typedef long long ll;typedef unsigned long long ull; typedef double db;typedef long double ldb;
#define fre(x) freopen(#x ".in","r",stdin),freopen(#x ".out","w",stdout)
#define Rep(i,a,b) for(int i=a;i<=b;++i) 
#define Dwn(i,a,b) for(int i=a;i>=b;--i)
#define pii pair<int,int>
#define mair make_pair
#define fir first
#define sec second
using namespace std;

const int maxn=3e2+10;

int n,m,K;

struct Graph{
	struct eg{ int from,to,next,dis; }e[maxn*maxn];
	int len,head[maxn];
	void lqx(int from,int to,int dis)
	{ e[++len].from=from,e[len].to=to,e[len].next=head[from],head[from]=len;e[len].dis=dis; }
	ll dis[maxn];int pre[maxn];bool vis[maxn];
	priority_queue<pii>q;
	void Dij(){
		memset(dis,0x3f,sizeof(dis));
		dis[1]=0;q.emplace(0,1);
		while(!q.empty()){
			int u=q.top().sec;q.pop();
			if(vis[u])continue;
			vis[u]=true;
			for(int i=head[u];i;i=e[i].next){
				int v=e[i].to;
				if(dis[u]+e[i].dis<dis[v]){ dis[v]=dis[u]+e[i].dis;pre[v]=u;q.emplace(-dis[v],v); }
			}
		}
	}
}G;

double P[maxn][maxn],f[maxn][maxn],g[maxn],tmp[maxn];

struct Tree{
	vector<int>E[maxn];
	void lqx(int u,int v){ E[u].emplace_back(v);/*cerr<<u<<" "<<v<<"\n";*/ }
	void Dfs(int u){
		if(E[u].empty()){ Rep(i,1,K)f[u][i]=P[u][i]; return; }
		for(auto v : E[u])Dfs(v);
		Rep(i,0,K)tmp[i]=g[i]=0;
		for(auto v : E[u]){
			Rep(i,0,K)Rep(j,0,K-i)
				tmp[i+j]=max(tmp[i+j],g[i]+f[v][j]);
			Rep(i,0,K){ g[i]=max(g[i],tmp[i]);tmp[i]=0; }
		}
		int siz=E[u].size();
		Rep(i,1,K)g[i]/=siz;
		Rep(i,0,K)Rep(j,0,K-i)f[u][i+j]=max(f[u][i+j],P[u][i]+(1-P[u][i])*g[j]);
	}
}T;

void solve(){
	cin>>n>>m>>K;
	Rep(i,1,m){ int u,v,w;cin>>u>>v>>w;G.lqx(u,v,w),G.lqx(v,u,w); }
	G.Dij();Rep(i,2,n)if(G.pre[i])T.lqx(G.pre[i],i);
	Rep(i,1,n)Rep(j,1,K)cin>>P[i][j];
	T.Dfs(1);double ans=f[1][K];
	Rep(i,1,K)ans=max(ans,f[1][i]);
	cout<<fixed<<setprecision(6)<<ans<<"\n";
}

int main (){ fre(arrest);ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);return solve(),0; }

D.朝鲜时蔬

题解写的很好,不复读了,直接粘了。

对于\((4,3)\)的做法,另一种式子是

\[\left [ \frac{x^n}{n!} \right ] \frac{ 1 }{ 1-x } ( F(x)^3-3F(x^2)F(x)+2F(x^3) ) \]

\[\binom{n}{3}-3 \sum_{1}^{n-3}(i+1)[2 \mid n-3-i] + 2\left \lfloor \frac{n}{3} \right \rfloor \]

题解截图



![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163236026-1554628637.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163239362-179157304.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163242734-523825846.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163245525-331334255.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163250302-1253030002.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163255498-1289974963.png)
![image](/i/l/?n=23&i=blog/2110526/202302/2110526-20230211163259515-1721718121.png)

标签:2110526,int,typedef,long,maxn,春季,模拟,define
From: https://www.cnblogs.com/Delov/p/17112000.html

相关文章

  • 乱搞专题:模拟退火
    初始一个温度\(T\),每次温度乘一个\(<1\)的实数,直到温度比较小。每次进行一次转移,假设新方案比原方案优\(\Delta\)(差则为负),就以\(e^\frac{\Delta}{T}\)的概率接受方......
  • 页面替换算法模拟网页
    PageReplaceSimulation基于ASP.NET开发的页面替换算法模拟网页生成三种置换算法的比较:FIFO先进先出OPT理想型淘汰LRU最近最久未使用项目地址:https://github.co......
  • 夜神模拟器在Windows系统下的安装教程艺术鉴赏课
    欢迎你们到美丽的浙江工作旅游定居买房买车相亲寻亲探亲认亲看朋友看老师看同学,网上的那个浙江某男子是我,今天我给大家带来的课是如何在windows系统上安装夜神模拟器。老......
  • 第一章_枚举和模拟问题
    目录1枚举问题_例题1.1abc问题1.2反序数1.3对称平方数12枚举问题_习题2.1与7无关的数2.2百鸡问题1枚举问题_例题1.1abc问题#include<cstdio>intmain(){......
  • canvas模拟鼠标拉框;画折线;(基于VUE)
    <template><divref="mouseDiv"style="background-color:transparent;width:100%;height:100%;position:absolute;top:0;left:0;z-index:2023;"><div......
  • 省选模拟28
    说句闲话学了会儿头插dp,转移是这样写的,\(Chen\_jr\)锐评:插头你还短路,你不烧谁烧于是脑子烧坏了来补题解(!is_d)&&(!is_r)&&mp[i+1][j]&mp[i][j+1]//needtomake......
  • vue模拟列表数据
    vue模拟列表数据<template><divclass="home"><el-containerstyle="height:100vh;border:1pxsolid#eee"><el-asidewidth="auto"......
  • CSS 3.0实现模拟手机信号加载动画
    给大家分享一个用CSS3.0实现的模拟手机信各异的加载动画,效果如下: 以下是代码实现,欢迎大家复制、粘贴和收藏。<!DOCTYPEhtml><htmllang="en"><head><metach......
  • 4、一个银行 ATM 机模拟系统
    #通过Python编程完成一个银行ATM机模拟系统,具备如下功能:##(1)登陆验证:用户输入用户名密码登陆,检测用户名是否存在以及用户名密码是否匹配;用户名密码共有三次输入......
  • 【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例|附代码数
    原文链接:http://tecdat.cn/?p=22862 最近我们被客户要求撰写关于风险价值VaR的研究报告,包括一些图形和统计输出。风险价值(VaR)是一种统计数据,用于量化公司、投资组......