首页 > 其他分享 >P8060 [POI2003] Sums 题解

P8060 [POI2003] Sums 题解

时间:2024-12-21 21:09:02浏览次数:3  
标签:50010 int 题解 Sums POI2003 vis long define dis

题目传送门

前置知识

同余最短路

解法

考虑同余最短路,设 \(dis_{i}\) 表示 \(\bmod a_{1}=i\) 时能被拼成的最小值,接着只需要判断是否有 \(dis_{b \bmod a_{1}} \le b\) 即可。

直接建边的空间复杂度为 \(O(nV)\) ,无法接受。但我们发现边不一定非要建出来,可以在 Dijsktra 松弛时枚举 \(a_{2 \sim n}\) 手动进行更新即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define ull unsigned long long
#define sort stable_sort 
#define endl '\n'
int dis[50010],vis[50010],a[50010],cnt=0;
void dijkstra(int s,int n)
{
	memset(dis,0x3f,sizeof(dis));
	memset(vis,0,sizeof(vis));
	priority_queue<pair<int,int> >q;
	dis[s]=0;
	q.push(make_pair(-dis[s],s));
	while(q.empty()==0)
	{
		int x=q.top().second;
		q.pop();
		if(vis[x]==0)
		{
			vis[x]=1;
			for(int i=1;i<=n;i++)
			{
				if(dis[(x+a[i])%a[1]]>dis[x]+a[i])
				{
					dis[(x+a[i])%a[1]]=dis[x]+a[i];
					q.push(make_pair(-dis[(x+a[i])%a[1]],(x+a[i])%a[1]));
				}
			}
		}
	}
}
int main()
{
// #define Isaac
#ifdef Isaac
	freopen("in.in","r",stdin);
	freopen("out.out","w",stdout);
#endif
	int n,m,b,i;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	dijkstra(0,n);
	cin>>m;
	for(i=1;i<=m;i++)
	{
		cin>>b;
		cout<<((dis[b%a[1]]<=b)?"TAK":"NIE")<<endl;
	}
	return 0;
}

标签:50010,int,题解,Sums,POI2003,vis,long,define,dis
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18621380

相关文章

  • 题解 - 冰壶比赛
    题目描述在3月29日举行的女子冰壶世锦赛决赛中,王冰玉、柳荫、岳清爽和周妍组成的中国女子冰壶队以8比6击败了冬奥会和世锦赛双冠王瑞典队,夺得了中国冰壶历史上第一枚世锦赛金牌,创造了历史。美丽、实力兼具的中国冰壶姑娘们也赢得了超高的赞誉。在冰壶比赛中,给出一个目标点......
  • 平民玩家体验《诛仙世界》进副本闪退频现?游戏问题解决当选云电脑
    嘿嘿,千盼万盼《诛仙世界》终于开服了!还有人没收到消息吗?这款游戏的虚幻5引擎非常的劲爆,对于经常玩一些3A大作的玩家都知道,这无疑是目前最好的游戏引擎,所打造出来的诛仙世界的画质也是相当顶级的。在开服的第一天,一些服务器的人数大幅激增;其中《风华绝代》的排队人数竟已超过12......
  • CF2049D 题解
    CF2049D题解题意给定一个\(n\timesm\)的数字矩阵和常数\(K\),初始位于\((1,1)\)点,只能通过向下或者向右走来到达\((n,m)\)点。存在某种操作,可以选择任意一行,将其所有列元素逆时针旋转\(1\)个单位,这个操作可以对任意行进行任意次(下面称这个操作为“旋转”)。设最后......
  • CF2049C 题解
    CF2049C题解关于MEX的构造题。题意有一个\(n\)元环,每个元素都和它的相邻元素是“朋友”。此外,额外给定一组\(x,y\),\(x\)和\(y\)彼此也是“朋友”。求一种给\(n\)个元素填数的方案,使得对于任意一个\(i\in[1,n]\),填在\(i\)这个位置的数\(a_i\),是它所有“朋友”的......
  • redis-cli (error) NOAUTH Authentication required问题解决
    1.查找redis-cli所在目录whichredis-cli2.切换到redis-cli目录3.切换到usr/bin目录执行以下命令redis-cli-hip-pport4.验证redis登录密码auth'password'5.获取redis数据......
  • Luogu P8112 [Cnoi2021] 符文破译 题解 [ 蓝 ] [ KMP ] [ 线性 dp ] [ 决策单调性 dp
    符文破译:KMP+dp的好题。暴力dp不难打出一个暴力dp:设计\(dp_i\)表示当前前\(i\)位全部完成了匹配,所需的最小分割数。转移也是简单的,我们在KMP的过程中进行dp转移,每次选取next不断跳向再前面的next,然后进行转移即可。很显然一个字符集大小为\(1\)的串就能轻松......
  • Hexo Next主题本地搜索功能不可用问题解决
    个人博客地址:HexoNext主题本地搜索功能不可用问题解决|一张假钞的真实世界。按照Next主题官网配置步骤(LocalSearch)配置后,站点的“搜索”菜单点击无响应。查看Next主题源代码({Next主题根目录}/hexo-theme-next/layout/_partials/search/index.njk),发现站点优先使用Algolia......
  • GESP202412 八级【树上移动】题解(AC)
    》》》点我查看「视频」详解》》》[GESP202412八级]树上移动题目描述小杨有一棵包含nnn个节点的树,其中节点的编号从1......
  • CF1477D Nezzar and Hidden Permutations 题解
    Description给定一张\(n\)个点\(m\)条边的简单无向图,构造两个排列\(p,q\),使得:对任意\((u,v)\inE\),\((p_u-p_v)(q_u-q_v)>0\).在此基础上,最大化\(\left|\left\{i\|\p_i\neqq_i\right\}\right|\).\(1\leqn,m\leq5\times10^5\)。Solution首先显然如果存在一个......
  • [CERC2014] Parades 题解
    感觉长脑子了。考虑在路线两端点的\(lca\)计算贡献,那么线段可以分两类:\(u\)为\(v\)祖先。\(u,v\)互不为祖先。设\(dp_i\)表示只考虑\(i\)子树内的路线时的答案。引理\(1\):若插入一条以\(i\)为\(lca\)的路径会使以\(i\)的儿子为\(lca\)的路径数量减少,......