首页 > 其他分享 >2023 ICPC 网络预选赛补题 II

2023 ICPC 网络预选赛补题 II

时间:2023-10-05 09:33:06浏览次数:72  
标签:ld const int 或列 ICPC maxn 补题 2023 using

2023 ICPC 网络预选赛 II

赛时 AC 题目

M. Dirty Work

点击查看代码
#include<bits/stdc++.h>
#define ld double
using namespace std;
const int maxn=1e6+5;
int a[maxn],b[maxn];
ld p[maxn],c[maxn];
int t,n;
bool cmp(ld a,ld b)
{
	return a<b;
}
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		scanf("%d%d",&a[i],&b[i]),
		cin>>p[i],
		c[i]=1.0*(a[i]+b[i])*p[i]+1.0*a[i]*(1.0-p[i]);
		sort(c+1,c+n+1);
		for(int i=1;i<=n;i++)
			c[i]+=c[i-1];
		ld ans=0;
		for(int i=1;i<=n;i++)
		ans+=c[i];
		printf("%.12lf\n",ans);	
	}
	return 0;
}

D. Project Manhattan

点击查看代码
/*
1. 突破点:按行(或列)遍历,则每行(或列)至少选一个人。
2. 易错点:每行(或列)不是只能选一个人(这个人满足其pay为该行或列的最小值),所有的负 pay 无论是否为最小值均应被统计入答案。
*/
#include <iostream>
#define ll long long
using namespace std;
const int maxn=510;
int mi[2][maxn];
int a[maxn][maxn]; ll ans,ansi;
int n,t;
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		ans=0,ansi=0;
		for(int i=1;i<=n;i++)
		{
			mi[0][i]=1e6+1;
			for(int j=1;j<=n;j++)
			scanf("%d",&a[i][j]),
			mi[0][i]=min(mi[0][i],a[i][j]);
		}
		for(int j=1;j<=n;j++)
		{
			mi[1][j]=1e6+1;
			for(int i=1;i<=n;i++)
			mi[1][j]=min(mi[1][j],a[i][j]);
		}
		for(int i=1;i<=n;i++)
		{
			bool flag=false;
			for(int j=1;j<=n;j++)
				if(a[i][j]<0)
				{
					if(a[i][j]==mi[0][i])
					{
						if(flag) ans+=a[i][j];
						else flag=true;
					} 
					else ans+=a[i][j];
				}
			ans+=mi[0][i];	
		}
		for(int j=1;j<=n;j++)
		{
			bool flag=false;
			for(int i=1;i<=n;i++)
				if(a[i][j]<0)
				{
					if(a[i][j]==mi[1][j])
					{
						if(flag) ansi+=a[i][j];
						else flag=true;
					} 
					else ansi+=a[i][j];
				}
			ansi+=mi[1][j];
		}
		printf("%lld\n",min(ans,ansi));
	}
	return 0;
}

E. Another Bus Route Problem

点击查看代码
/*
1. 正解:以根节点 1 为起点跑 BFS。
2. 突破点:发现结论——若节点 i 被访问过,则从根节点 1 到 i 的树链上所有的节点一定已被访问过。
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
struct edge
{
	int v,next;
}e[maxn<<1];
int cnt,head[maxn];
void add(int u,int v)
{
	e[++cnt]=(edge){v,head[u]};
	head[u]=cnt;
}
int n,m,anc[maxn][25];
vector<int> gop[maxn];
void dfs(int u,int fa)
{
	anc[u][0]=fa;
	int v;
	for(int i=head[u];i;i=e[i].next)
	{
		v=e[i].v;
		if(v==fa) continue;
		dfs(v,u);
	}
}
bool vis[maxn];
queue<int> q;
int dis[maxn];
void bfs()
{
	vis[0]=true;
	q.push(1),vis[1]=true;
	dis[1]=0;
	while(!q.empty())
	{
		int u=q.front();q.pop();
		for(int i=0;i<gop[u].size();i++)
		{
			int v=gop[u][i];
			if(vis[v]) continue;
			while(!vis[v]) 
				vis[v]=true,q.push(v),
				dis[v]=dis[u]+1,
				v=anc[v][0];              
		}
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	int x;
	for(int i=1;i<n;i++)
	{
		scanf("%d",&x);
		add(i+1,x),add(x,i+1);
	}
	int u,v;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&u,&v);
		gop[u].push_back(v);
		gop[v].push_back(u);
	}
	dfs(1,0);
	for(int j=1;j<=20;j++)
		for(int i=1;i<=n;i++)
			anc[i][j]=anc[anc[i][j-1]][j-1];
	bfs();
	for(int i=2;i<=n;i++)
	cout<<(dis[i]==0?-1:dis[i])<<" ";
	return 0;
}

I. Impatient Patient

点击查看代码
/*
1. 标签:贪心 枚举.
2. 突破点:若 i 为最优转移点,则当在 i 挑战失败回到 a_i 时,一定会再从 a_i 走到 i.
*/
#include<bits/stdc++.h>
using namespace std;
const int MAXN=int(5e5+5);
int a[MAXN],x[MAXN];
int main()
{
	int n,T;
	scanf("%d",&T);
	while(T--) {
		scanf("%d",&n);
		for(int i=0;i<=n-1;i++)
			scanf("%d",&a[i]);
		for(int i=0;i<=n-1;i++)
			scanf("%d",&x[i]);
		double ans=n*1.0;
		for(int i=0;i<=n-1;i++) {
			double p=(double)x[i]/100000.0;
			double tp=(p==0.0)?MAXN*1.0:double(i-a[i]+1)/p;
			tp+=a[i];
			ans=min(ans,tp);
		}
		printf("%.12lf\n",ans);
	}
}

标签:ld,const,int,或列,ICPC,maxn,补题,2023,using
From: https://www.cnblogs.com/shyiaw/p/17731661.html

相关文章

  • 2023-10-4 使用Arduino为esp8266烧录ps4 5.05适合的固件
    2023-10-4使用Arduino为esp8266烧录ps45.05适合的固件其实这是个伪需求,但都在我琢磨所有之后才发现,goldhen2.1之后的大版本对于505来说都是没什么实质意义,反而会引起死机等情况。想玩的游戏等降级补丁即可。当然本文记录如何通过arduino烧录你想要的插件1.解决:1-1.A......
  • 2023.10.4
    今天没做多少,就做了一题,主要是因为下午去医院看牙,花了不少时间,人太多,在那里等了挺久做题目的时候遇到了一些和libc库有关的问题,本来问了学长,后来突然有了想法去查了些东西,自己把问题解决了,学到了不少东西明天预计要忙学校的作业,可能会学的比较少......
  • 2023年全国职业院校技能大赛(高职组)windows维护&Ubuntu维护
    Windows系统维护在物联网系统中通常会发生一些安全问题,作为物联网工程师需对系统进行安全维护和性能优化配置。任务要求:Ø 帐户登录安全设置,此安全设置确定 OS 是否在此计算机每次验证帐户凭据时进行审核。要求开启成功、失败选项的编辑界面截屏,另存为 A-14-1.jpg。答:......
  • 2023.10.4——每日总结
    学习所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,上午学习+休息,下午学习+休息;我了解到的知识点:1.休息明日计划:学习+休息......
  • CSP 2023 & HNCPC2023 游记
    2023-9-3开学前一天,文化课心态爆炸。下午刷了一套S组初赛润了。2023-9-4学校要求\(7:10\)到校。然后白天全都是入学教育,就是在会议厅听讲座。精神状态被老师折磨死了。然后晚上考试,大寄。基础爆搜分没拿。辛亏没作业,\(22:30\)睡觉。2023-9-5常规\(7:25\)到校。......
  • 题解 P9701【[GDCPC2023] Classic Problem】
    题如其名,确实挺经典的。我们称边权在输入中给定的边为特殊边,其它边为平凡边。称特殊边涉及到的点为特殊点,其它点为平凡点。显然,对于连续的若干平凡点\([l,r]\),他们内部的最优连边方式就是连成一条链,花费\(r-l\)的代价。我们先把这样的代价加到答案中,然后将极长连续平凡点缩成......
  • 2023-10-03-周二
    吾日三省吾身titlecontent简单评价这一天只能说差强人意今天运动了吗?0,woc,还没运动学习还满意否0.5会不会又emo了0今日学习任务titlecontent学习ELF文件格式0.8安卓开发0.1突然想起来了我一上午感觉萎靡不振,像吸毒了一样......
  • 题解 P9695【[GDCPC2023] Traveling in Cells】
    显然,询问的答案即为\(x\)所在的极长的满足颜色均在\(\mathbb{A}\)内的连续段的权值和。如果我们能维护对颜色的单点修改,以及求出某个位置所在极长连续段的左右端点\(l,r\),只需要树状数组即可求出答案。一个朴素的想法是对每种颜色开一棵线段树,单点修改是平凡的,极长连续段左......
  • 题解 P9702【[GDCPC2023] Computational Geometry】
    这题一看就不是计算几何,考虑区间DP。设凸多边形的\(n\)个顶点依次为\(P_1,P_2,\cdots,P_n\)。设\(f_{i,j}\)在\(i<j\)时表示\(P_i,P_{i+1},\cdots,P_{j-1},P_j\)组成的多边形的直径的平方,在\(i>j\)时表示\(P_i,P_{i+1},\cdots,P_n,P_1,\cdots,P_{j-1},P_j\)组......
  • SWERC 2022-2023 - Online Mirror (Unrated, ICPC Rules, Teams Preferred)
    Preface纯纯的智商场,只能说老外的出题风格和国内的比赛差异还是挺大的这场开局被签到题H反杀后灰溜溜地下机,结果后面的题出的都还挺顺的等到最后徐神把J过掉后我们都以为D是个大分类讨论(实际上机房里的学长们都是用分类讨论过的),就不想写了挂机到结束后面看题解发现确实是分类......