2019年华南理工大学程序设计竞赛(春季赛) B 修仙时在做什么?有没有空?可以来炼丹吗?(思维建图搜索)
https://ac.nowcoder.com/acm/contest/625/B
分析:
全部的状态只有1<<18 个 , 所以我们可以预处理 f[u][j] , 然后建立出全部的u可以转移的状态的状态图;
有优先队列去搜索
这里需要注意一个坑点 , 数组f[i][j] , 是不能开到long long ,这样会爆内存;可是 f[i][j-1]* f[i][j-1] 这个操作会爆int ,所以我们需要将
f[i][j-1]* f[i][j-1] 变成long long 1ll*f[i][j-1]* f[i][j-1] 然后再去 mod
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = <<;
const int mod = ;
const int INF = 0x3f3f3f3f; bool vabook[maxn],vis[maxn];
int f[maxn][];
int fa[maxn];
int dis[maxn];
struct no
{
int v;
int val;
bool operator < (const no &x) const
{
return x.val<val;
}
}P;
vector<no>G[maxn];
priority_queue<no> que;
int main()
{
int n;scanf("%d",&n);
bool T=;
int x ;
for(int i= ; i<=n ; i++)
{
scanf("%d",&x);
if(vabook[x]) T=;
vabook[x]=;
}
if(T) {puts("");return ;} ///如果给出的数有重复出现 , 肯定是0更优 for(int i= ; i<maxn ; i++) ///预处理出全部的 f[i][j]
{
f[i][]=i;
for(int j= ; j< ; j++)/// a^4=a^2 * a^2 , a^8=a^4*a^4;
{
f[i][j] = (1ll*f[i][j-]* f[i][j-]) %mod;///先转化为 long long 再去mod
} }
for(int u= ; u<maxn ; u++)
{
for(int j= ; j< ; j++)
{
int v=u^(<<j);
x = max(u,v);
G[u].push_back({v , f[x][j]+});///建立一个图 , 把u 可以转去的状态于价值都记录
}
if(vabook[u])///这是我拥有的点
{
fa[u]=u;
dis[u]=;
que.push({u,});
}
else
{
fa[u]=-;
dis[u]=INF;
}
}
ll ans=0x3f3f3f3f;
//DJ最短路
while(!que.empty())
{
P=que.top();
que.pop();
int u=P.v;
if(P.val>=ans) break;///如果当前的状态最小的价值都小过ans , 就不用跟新了
if(vis[u]) continue;
vis[u]=;
for(int i= ; i<G[u].size() ; i++)
{
int v=G[u][i].v;
int w=G[u][i].val; if(fa[v]!=- && fa[v]!=fa[u])
{
ans=min(ans,1ll*(dis[v]+w+dis[u]));
//ans%=mod;
} if(dis[v] > w+dis[u])
{
dis[v]=w+dis[u];
fa[v]=fa[u]; que.push({v,dis[v]});
}
}
}
printf("%lld\n",ans%mod);
return ;
}
2019年华南理工大学程序设计竞赛(春季赛) B 修仙时在做什么?有没有空?可以来炼丹吗?(思维建图搜索)的更多相关文章
- A NB群友 【记忆化搜索】(2019年华南理工大学程序设计竞赛(春季赛))
冲鸭!去刷题:https://ac.nowcoder.com/acm/contest/625/A 题目描述 CC是著名的算法竞赛选手,他不仅人长得帅,而且技术了得,自然而然就有了许多粉丝. 为了能帮助 ...
- 2019年华南理工大学程序设计竞赛(春季赛)-C-六学家的困惑
题目链接:https://ac.nowcoder.com/acm/contest/625/C 题意:给定两个字符串,每次只能从两个字符串的两端取字符,求依次取字符后所构成的数字最大为多少. 思路:思路 ...
- 2019年华南理工大学程序设计竞赛(春季赛)-H-Parco_Love_GCD
题目链接:https://ac.nowcoder.com/acm/contest/625/H 题意:给定n个数(<=1e9)的序列,其中n<=5e5,求该序列所有子序列的对应的gcd对1e ...
- C 六学家的困惑 【YY】 (2019年华南理工大学程序设计竞赛(春季赛))
冲鸭,去刷题:https://ac.nowcoder.com/acm/contest/625/C 小六喜欢两全其美的事情,今天就正好有一个这样的机会. 小六面前有两根管子,管子里面放满了数字为1到9的 ...
- 2019年华南理工大学程序设计竞赛(春季赛) K Parco_Love_String(后缀自动机)找两个串的相同字串有多少
https://ac.nowcoder.com/acm/contest/625/K 题意: 给出Q 个询问 i , 求 s[0..i-1] 与 s[i...len-1] 有多少相同的字串 分析: 给出 ...
- 2019年华南理工大学程序设计竞赛(春季赛)A NB群友
https://ac.nowcoder.com/acm/contest/625/A 题意:给出一个区间范围 , 求有多少个数的每一位的积是在这个区间里面的 分析:没错了 ,就是记忆化暴力搜索 ,不断的 ...
- 2018华南理工大学程序设计竞赛 H-对称与反对称
H-对称与反对称 题目描述 给出一个N*N的方阵A.构造方阵B,C: 使得A = B + C.其中 B为对称矩阵,C为反对称矩阵. 对于方阵S中的任意元素,若(S)ij = (S)ji,则称S为对称矩 ...
- “景驰科技杯”2018年华南理工大学程序设计竞赛 B. 一级棒!(并查集)
题目链接:https://www.nowcoder.com/acm/contest/94/B 题意:在一棵有 n 个节点的树上,有两种操作,一个是把 u 到 v 的路径走一遍,另一个是查询 u 到 f ...
- “景驰科技杯”2018年华南理工大学程序设计竞赛 A. 欧洲爆破(思维+期望+状压DP)
题目链接:https://www.nowcoder.com/acm/contest/94/A 题意:在一个二维平面上有 n 个炸弹,每个炸弹有一个坐标和爆炸半径,引爆它之后在其半径范围内的炸弹也会爆炸 ...
随机推荐
- code1074 食物链
开3*n的并查集,其中x用来连接与x同类的,x+n用来连接x吃的,x+2*n用来连接x被吃的. 1 x y时,如果 x吃y 或 x被y吃,那么为假话, 否则x与y同类,x吃的y也吃,x被吃的y也被吃: ...
- ubuntu下学习linux
---恢复内容开始--- 查看当前正在运行的进程(ps命令, grep 搜索命令) ps -ef # -e 显示所有进程,环境变量 -f 全格式 也可以用: ps -e -f # 显示所有关于java ...
- [GO]匿名字段的同名字段操作
package main import ( "fmt" ) type Person struct { name string sex byte age int } type Stu ...
- 从jvm运行机制来分析 String对象负值
测试1: 代码 public class Test { public static void main(String[] args) { String s1="aaa"; f(s1 ...
- 32 取一个整数a从右端开始的4-7位
题目:取一个整数a从右端开始的4-7位 public class _032FetchDigit { public static void main(String[] args) { fetchDigi ...
- CodeForces 540A Combination Lock (水题)
题意:给定一个串数,表示一种密码锁,再给定一串密码,问你滑动最少的次数,把第一行变成第二行. 析:很简单么,反正只有0-9这个10个数字,那么就是把每一个数从正着滑和倒着滑中找出一个最小的即可,正着滑 ...
- Altera SOPC FrameBuffer系统设计教程
Altera SOPC FrameBuffer系统设计教程 小梅哥编写,未经授权,严禁转载或用于任何商业用途 在嵌入式系统中,LCD屏作为最友好的人机交互方式,被大量的应用到了各个系统中.在基于ARM ...
- sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别(转)
sqlite数据库存储table1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不 ...
- Android-自定义RadioButton
1.控件RadioButton需要用RadioGroup包裹起来,才能使用2.RadioButton必须设置ID才能实现单选功能3.RadioGroup有方向(垂直方向 和 水平方向)默认是垂直方向 ...
- Reporting Service服务SharePoint集成模式安装配置(3、4、安装sharepoint 2010必备组件及产品)
Reporting Service服务SharePoint集成模式安装配置 第三步和第四部 第三步 安装sharepoint 2010必备组件 1.安装SharePoint2010必备组件,执行Pre ...