本來這道題該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. MySql中4种批量更新的方法

    最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共有以下四种办法 1..replace into 批量更新 ...

  2. [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法

    如果是Windows下的命令行,对于有空格的文件路径要加引号,对于xcopy命令就是源路径和目标路径都要加引号 xcopy "C:\ppt" "D:\Program do ...

  3. group by 和 distinct 的区别

    SELECT fs.card_id, fs. NAME, fs.email, fs.phone_num, fs.weixin_num, fs.permission, fs.open_id FROM f ...

  4. 关于document.write(来自网络)

    对象属性: document.title                 //设置文档标题等价于HTML的<title>标签document.bgColor               / ...

  5. JavaScript 代码小片段

    1.获取对象 obj 的所有属性(自有属性和继承属性),保存到数组 lst 中 //获取对象obj的所有属性(自有属性和继承属性),保存到数组lst 中 var lst = []; function ...

  6. CentOS7下安装配置Nginx

    一:安装依赖项 1.pcre:2.openssl:3.zlib:4.gcc:可直接通过yum安装 二:创建nginx账户(可以配置nginx.conf的user为此账户) useradd nginx ...

  7. centos6 mysql 安装与配置

    MySQL简介: 由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.MySQL是一个多用户.多线程的关系型数据库管理 ...

  8. sql语句增删改查(方便你我Ta)

    又自学,把SQL的一些常用语句复习了一遍. 整理如下: 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strde ...

  9. 基于SceneControl的三维GIS开发

    在ArcGIS体系中,三维开发包括两种:基于Scene的三维开发和基于Globe的三维开发. 由上图可以看出,两种开发的接口都很相似,掌握了Scene开发会相对容易的过渡到Globe开发中. 正如上图 ...

  10. Linux常见配置文件

    一./etc 配置文件 /etc/passwd 用户数据库,其中的域给出了用户名.真实姓名.家目录.加密口令和用户的其他信息 /etc/group 类似/etc/passwd ,但说明的不是用户而是组 ...