hdu 4849 最短路 西安邀请赛 Wow! Such City!
http://acm.hdu.edu.cn/showproblem.php?pid=4849
会有非常多奇怪的Wa的题。当初在西安就不知道为什么wa,昨晚做了,由于一些Sb错误也wa了非常久。这会儿怎么写都会AC。
。。。
收获:
1、还是基本都构思好在去写程序,由于当时没过。昨晚心里有阴影。敲得非常慢,并且最開始各种取模以防止漏掉,太保守了......以后一定先估算是不是须要取模防止TLE,当然时间够的话还是适当多取个模防止莫名其妙的错误、、
2、假设出错,注意參数是不是对的,最開始写好之后。由于m和n写混。例子卡了,,最后换了还有一个版本号的最短路,还是由于一个变量写混了,WA了非常久
3、以后比赛期间假设时间还有并且不知为什么没过。考虑自己又一次写吧,给别人看代码排错还是不太easy搞出来的。
4、数据大的时候 开数组果断都long long吧
5、最重要的----假设RE 。先看数组有没有开错--我最開始由于键盘按键错位。,少敲了个0。一直RE,其次,也是很重要的,初始化。不要太懒直接memset。我
up=MAXN*MAXN,然后TLE了非常久,,,以及时间跑的非常长。,。
843MS AC
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm> using namespace std;
#define ll long long
#define INF 0x03F3F3F3F
const int N = 1234567+10;
const int MAXN=1000+30;
const int MOD1=5837501;
const int MOD2=9860381;
const int MOD3=8475871;
ll x[N],y[N],z[N];
ll c[1010][1010];
ll lowcost[MAXN];
int vis[MAXN];
int n,m; void calC()
{
int up=n*n;
for(int k=0;k<2;k++)
z[k]=( x[k]*90123 + y[k] ) % MOD3 +1;
for(int k=2;k<up;k++)
{
x[k]=( 12345+ x[k-1]* 23456 +x[k-2]*34567 + (x[k-2]*45678)%MOD1 *x[k-1] %MOD1 )%MOD1;
y[k]=( 56789+ y[k-1]* 67890 +y[k-2]*78901 + (y[k-2]*89012)%MOD2 *y[k-1] %MOD2 )%MOD2;
z[k]=( x[k]*90123 + y[k] ) % MOD3 +1;
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(i == j){c[i][j]=0;continue;}
c[i][j]=z[i*n+j];
}
}
void Dij()
{
memset(vis,0,sizeof(vis));
for(int i=0;i<=n;i++)
lowcost[i]=INF;
vis[0]=1;
for(int i=0;i<n;i++)
lowcost[i]=c[0][i];
lowcost[0]=0;
int pre=0,mmin=INF;
for(int i=1;i<n;i++)
{
mmin=INF;
for(int j=0;j<n;j++)
if(vis[j] == 0 && lowcost[pre]+c[pre][j]<lowcost[j])
{
lowcost[j]=lowcost[pre]+c[pre][j];
}
for(int j=0;j<n;j++)
{
if(vis[j] == 0 && lowcost[j]<mmin)
{
mmin=lowcost[j];
pre=j;
}
}
vis[pre]=1;
}
}
int solve()
{
int mmin=INF,tmp;
for(int i=1;i<n;i++)
{
tmp=lowcost[i]%m;
if( tmp< mmin )
mmin=tmp;
}
return mmin;
}
int main()
{
//freopen("hdu4849.txt","r",stdin);
while(scanf("%d%d%I64d%I64d%I64d%I64d",&n,&m,&x[0],&x[1],&y[0],&y[1])!=EOF)
{
calC();
Dij();
printf("%d\n",solve()); }
return 0;
}
再贴还有一个版本号1515MS AC
-----可见人家吉大的模板还是效率非常高的,吉大的仅仅花了一半时间。,。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm> using namespace std;
#define ll __int64
const ll INF = 0x03F3F3F3F;
//const ll INF = 0x3f3f3f3f3f3f3f3f;
const int N = 1010*1010+1000;
const int MAXN=1000+30;
const int MOD1=5837501;
const int MOD2=9860381;
const int MOD3=8475871;
ll x[N],y[N],z[N];
ll c[1010][1010];
ll lowcost[MAXN];
int vis[MAXN];
int n,m; void calC()
{
// x[0]%=5837501,x[1]%=5837501;
// y[0]%=9860381,y[1]%=9860381;
int up=(n)*(n);/////////
for(int k=0;k<2;k++)
z[k]=(( x[k]*90123 ) %MOD3 + y[k] ) % MOD3 +1;
for(int k=2;k<up;k++)
{
x[k]=( ( 12345+ (x[k-1]* 23456 )%MOD1 )%MOD1 +( (x[k-2]*34567)%MOD1 + ((x[k-2]*45678)%MOD1 )*x[k-1] %MOD1 )%MOD1)%MOD1;
y[k]=(( 56789+ (y[k-1]* 67890 )%MOD2 )%MOD2 +((y[k-2]*78901)%MOD2 +((y[k-2]*89012)%MOD2 )*y[k-1] %MOD2 )%MOD2)%MOD2;
z[k]=(( x[k]*90123 ) %MOD3 + y[k] ) % MOD3 +1;
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(i == j)c[i][j]=0;
else
c[i][j]=z[i*n+j];
}
}
void Dij()
{
for(int i=0;i<=n;i++)
lowcost[i]=INF;
for(int i=0;i<n;i++)
{
lowcost[i]=c[0][i];
vis[i]=0;
}
lowcost[0]=0;vis[0]=1;
int u=0;
for(int i=0;i<n-1;i++)
//while(1)
{
int mmin=INF;
for(int j=0;j<n;j++)
if(!vis[j] && lowcost[j]<mmin)
{
u=j;
mmin=lowcost[j];
}
// if(mmin == INF)break;
vis[u]=1;
for(int k=0;k<n;k++)
{
if(!vis[k] && lowcost[u]+c[u][k]<lowcost[k])
lowcost[k]=lowcost[u]+c[u][k]; }
}
} int solve()
{
int mmin=INF,tmp;
for(int i=1;i<n;i++)
{
tmp=lowcost[i]%m;
if( tmp< mmin )
mmin=tmp;
}
//mmin=min(mmin,lowcost[i]%m);
return mmin;
}
int main()
{
//freopen("hdu4849.txt","r",stdin);
while(scanf("%d%d%I64d%I64d%I64d%I64d",&n,&m,&x[0],&x[1],&y[0],&y[1])==6)
{
calC();
Dij();
printf("%d\n",solve()); }
return 0;
}
hdu 4849 最短路 西安邀请赛 Wow! Such City!的更多相关文章
- HDU 4849 Wow! Such City!陕西邀请赛C(最短路)
HDU 4849 Wow! Such City! 题目链接 题意:依照题目中的公式构造出临接矩阵后.求出1到2 - n最短路%M的最小值 思路:就依据题目中方法构造矩阵,然后写一个dijkstra,利 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 5521 最短路
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU-4849 Wow! Such City!,最短路!
Wow! Such City! 题意:题面很难理解,幸亏给出了提示,敲了一发板子过了.给出x数组y数组和z数组的求法,并给出x.y的前几项,然后直接利用所给条件构造出z数组再构造出C数组即可,C ...
- 计蒜客 39272.Tree-树链剖分(点权)+带修改区间异或和 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest E.) 2019ICPC西安邀请赛现场赛重现赛
Tree Ming and Hong are playing a simple game called nim game. They have nn piles of stones numbered ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- hdu 4848 搜索+剪枝 2014西安邀请赛
http://acm.hdu.edu.cn/showproblem.php?pid=4848 比赛的时候我甚至没看这道题,事实上不难.... 可是说实话,如今对题意还是理解不太好...... 犯的错误 ...
- 计蒜客 39280.Travel-二分+最短路dijkstra-二分过程中保存结果,因为二分完最后的不一定是结果 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest M.) 2019ICPC西安邀请赛现场赛重现赛
Travel There are nn planets in the MOT galaxy, and each planet has a unique number from 1 \sim n1∼n. ...
随机推荐
- ny47 过河问题
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- 随笔记:Python于Windows下初实践,及使用Connector/Python连接MySQL
有一同事要离职了,我负责交接一个用Python同步数据的项目. 之前木有做过Python,周休,做个简单的查询数据库,小练一下手. 包含: 安装 连接.查询MySQL 列表 元组 for循环 whil ...
- Python2 获取两日期之间的每一天
import datetime def getEveryDay(begin_date,end_date): date_list = [] begin_date = datetime.datetime. ...
- js异步加载的解决方案
默认情况javascript是同步加载的,javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,如何解决这个问题呢,接下来将为你详细介绍下异步加载js三种实 ...
- egret请求参数
egret的文档还不错,不过http请求参数的文档居然没有,于是自己摸索了一下, 发现原来是直接传字符串参数就可以了.于是封装了一个类,方便使用. class RequestParam { publi ...
- vim同时打开多个文件进行编辑
在A文件中用:tabedit B 就打开了B文件,然后用gt来切换进入A 或B文件中: 如果打开多个,就用 1gt ,2gt来切换至不同的文件:返回上一个文件用gT
- C语言 · 实现strcmp函数 · 字符串比较
蓝桥杯练习场上碰到两个此类题了: 算法提高 11-1实现strcmp函数 时间限制:1.0s 内存限制:256.0MB 问题描述 自己实现一个比较字符串大小的函数,也即实现strcm ...
- FusionCharts JavaScript API - Functions 常用方法整理笔记
FusionCharts JavaScript API - Functions Home > FusionCharts XT and JavaScript > API Reference ...
- java继承2——类与继承(转)
一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在pu ...
- uboot中log处理
位图或logo和开机显示画面,是两个完全不同的东西. logo显示uboot相关信息,如版本号等. 开机画面是用户下载到固定位置后uboot加载的. 1.开机画面 在uboot中使用splash sc ...