本來這道題該100的,沒想到考試沒想最短路,直接跑暴力了

實際上這道題有原題跳樓機

那道題在模x的意義下統計答案

現在,我們要統計n個數的答案

30pts為提高組原題

剩下70pts,可以記dis[i]表示在模a[1]意義下為i,由a[2]~a[n]可以組合而成的最小數

則i介於0~a[1]-1 ,由於a[1]很小,不會爆炸

每一次從i~(i+a[j])%a[1]連邊權為a[j]的邊,代表我們需要a[j]的代價將模a[1]意義下為i的最小值轉變為(i+a[j])%a[1]

跑完最短路之後,我們就對dis[0~a[1]-1]取max,max為在模i意義下最小不能表示出來的數+i

所以答案為max-i

代碼:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll n,h[1000010],nxt[1000020],v[1000020],w[1000020],ec,vis[1000020],d[1000010],x[10];

void add(ll a,ll b,ll c){v[++ec]=b;w[ec]=c;nxt[ec]=h[a];h[a]=ec;}

struct no{

ll d,x;

bool operator <(const no &rhs)const{

return d>rhs.d;

}

};

void dij(ll s){

priority_queueq;

q.push((no){0,s});

for(ll i=0;i<=1000000;i++)d[i]=LONG_LONG_MAX/3;

d[s]=0;

while(!q.empty()){

no x=q.top();q.pop();

if(vis[x.x])continue;

vis[x.x]=true;

for(int i=h[x.x];i;i=nxt[i])

if(d[v[i]]>d[x.x]+w[i]){

d[v[i]]=d[x.x]+w[i];

q.push((no){d[v[i]],v[i]});

}

}

}

int main(){

freopen(“sequence.in”,“r”,stdin);

freopen(“sequence.out”,“w”,stdout);

scanf("%lld",&n);

for(ll i=1;i<=n;i++)

scanf("%lld",&x[i]);

if(n==2){

printf("%lld",x[1]*x[2]-x[1]-x[2]);

return 0;

}

ll ans=0;

for(ll i=0;i<x[1];i++)

for(ll j=2;j<=n;j++)

add(i,(i+x[j])%x[1],x[j]);

dij(0);

for(ll i=0;i<x[1];i++)

ans=max(ans,d[i]);

printf("%lld\n",ans-x[1]);

}

jzoj5864的更多相关文章

随机推荐

  1. 网页flash播放代码

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" hei ...

  2. Template msg

    http://blog.csdn.net/xiejiawanwei2_bb/article/details/40680493 {{first.DATA}} 日期:{{Day.DATA}} 报警类型:{ ...

  3. iOS.Compiler

    1. 在Xcode4.6下创建的工程, 在Xcode5下build&run, 然后提示以下error. 难不成要在Xcode5下重新创建工程? Xcode cannot run using t ...

  4. Netty 源码 NioEventLoop(一)初始化

    Netty 源码 NioEventLoop(一)初始化 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) Netty 基于事件 ...

  5. Linux下JDK应该安装在哪个位置

    在百度知道上看到的回答觉得不错:https://zhidao.baidu.com/question/1692690545668784588.html 如果你认为jdk是系统提供给你可选的程序,放在op ...

  6. 让kbmmw 4.8 支持ios 64

    随着xe8 的出来,其开始支持IOS 64 的编译了(不支持也没办法,从今年2月开始不支持ios 64 的应用 就不允许入住apple appstore,霸气呀).相信不少同学迫不及待的开始了ios6 ...

  7. origin里用c语言编程

    学习自白东升老师的origin8.0课程. 其实是originC语言.origin中大多绘图和处理功能都是originC语言完成的,可以同时按下ctrl和shift然后点击相应的功能,就会出现每个按钮 ...

  8. Andfix热修复技术使用

    AndFix,全称是Android hot-fix.是阿里开源的一个Android热补丁框架,允许APP在不重新发版本的情况下修复线上的bug.支持Android 2.3 到 6.0. andfix的 ...

  9. (转)mmap和shm共享内存的区别和联系

    共享内存的创建 根据理论: 1. 共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制.共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用 ...

  10. hdu 2149

    题目 巴什博奕(Bash Game) 巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一 ...