青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
數據加載中……

PKU 3492 Knapsack II

題目鏈接:http://poj.org/problem?id=3492
/*
題意:
    給出n(n <= 500)個數ai(ai <= 5000),求他們的最大不能組合數。

解法:
數論 + 最短路

思路:
    經典的組合問題Change Making Problem,這個題目有一個限制就是給
定的數小于等于5000,題目的意思很清楚,就是求一個數S,使得它不能被
任何ai的倍數所組合出來,并且它的值最大。
    那么如果這n個數的gcd不為1,必然找不到這樣的S,因為如果S不能被
它們的gcd整除,永遠不可能組合出來,這樣S就可以很大,自然也就沒有最
大的S了。
    現在討論所有ai的gcd為1的情況。對于任意的整數A,如果A能被以上的
ai組合出來,那么 B = A + k*a0 必然能被組合(只要加上k個a0即可)。于
是我們可以吧所有整數劃分成a0個等價類,等價類中的數模a0的值相同,舉
個例子,a0=3,我們可以將0,1,2,3,4,5,6劃分成(0,3,6)(1,4)(2,5)這三個
等價類,如果相同等價類中的某個數能被組合,那么比它大的所有在該等價
類中的數必然能被組合出來。所以現在只要求出每個等價類中的最小的能被
組合出來的數,然后取所有等價類中最小數的最大值L,L-a[0]就是問題的
答案(原因很簡單,因為L能被組合出來,比L大的并且在同一等價類中的數
必然能通過加上若干個a[0]來求得,于是L-a[0]就成了最大不能組合數)。
    于是問題就轉化成了如何在相同等價類中找到最小的那個能被ai組合出
來的數。可以利用最短路來求,最短路的key信息就是它本身值的大小,如果
兩個數x,y, (x + ai) % a0 == y % a0,那么我們就在x和y之前連上一條權
值為ai的邊,構圖完成后就可以從0這個點開始搜了,最后遍歷0到a[0]-1找
到最大的那個數L即可。
*/


#include 
<iostream>
#include 
<algorithm>
#include 
<queue>
using namespace std;

#define maxn 5010
#define inf 200000000

int a[500];

struct Point {
    
int val;
    
int mod_val;
    
int dis;
    Point(
int _v, int _mv, int _d) {
        val 
= _v;
        mod_val 
= _mv;
        dis 
= _d;
    }

    friend 
bool operator < (Point a, Point b) {
        
return a.dis > b.dis;
    }

}
;

int dis[maxn], nv[maxn];
priority_queue 
< Point > Q;



int gcd(int a, int b) {
    
if(b == 0)
        
return a;
    
return gcd(b, a%b);
}


int main() {
    
int n;
    
int i;
    
while(scanf("%d"&n) != EOF) {
        
int G = 0;
        
for(i = 0; i < n; i++{
            scanf(
"%d"&a[i]);
            
if(!i)
                G 
= a[0];
            
else
                G 
= gcd(G, a[i]);
        }

        
if(G != 1{
            printf(
"INF\n");
            
continue;
        }


        sort(a, a 
+ n);
        
for(i = 0; i < a[0]; i++{
            dis[i] 
= inf;
        }

        dis[
0= 0;
        nv[
0= 0;
        
while(!Q.empty()) {
            Q.pop();
        }

        Q.push(Point(
000));

        
while(!Q.empty()) {
            Point id 
= Q.top();
            Q.pop();
            
for(i = 0; i < n; i++{
                
int nex = (id.mod_val + a[i]) % a[0];
                
if(id.dis + a[i] < dis[nex]) {
                    dis[nex] 
= id.dis + a[i];
                    nv[nex] 
= id.val + a[i];
                    Q.push(Point(nv[nex], nex, dis[nex]));
                }

            }

        }

        
int Max = 0;
        
for(i = 0; i < a[0]; i++{
            
if(dis[i] != inf && nv[i] > Max) {
                Max 
= nv[i];
            }

        }

        printf(
"%d\n", Max - a[0]);
    }

    
return 0;
}

posted on 2011-04-05 19:01 英雄哪里出來 閱讀(1298) 評論(0)  編輯 收藏 引用 所屬分類: 數學

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲视频综合在线| 亚洲在线观看免费| 欧美日韩成人在线视频| 久久国产精品久久精品国产| 亚洲欧美日本国产专区一区| 亚洲一区欧美激情| 亚洲欧美国产日韩天堂区| 日韩亚洲视频| 亚洲欧美日韩综合| 狂野欧美一区| 欧美激情无毛| 国产精品午夜春色av| 亚洲一区二区3| 亚洲国内自拍| 欧美第一黄网免费网站| 欧美国产日韩二区| 亚洲国产综合视频在线观看| 一区二区三欧美| 午夜精品免费视频| 久久免费视频在线观看| 欧美日本在线| 国产在线播放一区二区三区| 亚洲黄色成人久久久| 亚洲欧美一区在线| 欧美.com| 亚洲欧美激情视频| 欧美韩国在线| 狠狠久久五月精品中文字幕| 一本到高清视频免费精品| 久久久久久久久综合| 亚洲伦理中文字幕| 久久免费高清| 国产偷国产偷亚洲高清97cao| 亚洲精品在线视频| 久久精品国产亚洲5555| 一本一本久久a久久精品牛牛影视| 久久精品欧洲| 国产视频一区在线| 亚洲尤物在线| 亚洲精品免费电影| 美国十次成人| 影音先锋中文字幕一区| 欧美专区在线观看| 亚洲私人影院在线观看| 欧美精品七区| 亚洲精品日日夜夜| 久久综合九色综合欧美狠狠| 亚洲一区二区三区在线观看视频| 欧美国产精品中文字幕| 亚洲国产成人在线| 免费看成人av| 久久亚洲图片| 亚洲第一精品福利| 久久―日本道色综合久久| 亚洲欧美国产精品va在线观看| 欧美日本在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 欧美一级播放| 国产精品视频一区二区高潮| 99视频精品免费观看| 亚洲福利在线视频| 欧美凹凸一区二区三区视频| 亚洲国产三级在线| 欧美国产精品劲爆| 欧美福利电影在线观看| 久久亚洲欧美| 亚洲人成网在线播放| 欧美二区在线观看| 久久亚洲风情| 亚洲经典自拍| 亚洲乱码国产乱码精品精天堂 | 国产一区二区三区在线观看网站 | 亚洲蜜桃精久久久久久久| 欧美成人视屏| 99国产麻豆精品| 日韩视频免费观看高清完整版| 欧美精品在线观看一区二区| 99视频一区二区三区| 日韩午夜电影av| 国产精品免费网站| 久久婷婷麻豆| 欧美精品久久一区| 午夜日韩电影| 久久在线免费观看视频| 亚洲日韩中文字幕在线播放| 日韩视频免费在线| 国产欧美日韩免费| 欧美国产先锋| 国产精品久久午夜| 免费在线一区二区| 欧美激情无毛| 久久久久国产精品www| 免费在线观看成人av| 亚洲午夜未删减在线观看| 欧美在线一二三| 99亚洲视频| 欧美在线1区| av不卡在线观看| 欧美一区二区观看视频| 亚洲肉体裸体xxxx137| 亚洲女同在线| 日韩午夜高潮| 久久成人免费视频| 国产精品99久久99久久久二8| 欧美一级大片在线免费观看| 亚洲精品欧洲| 久久久久久免费| 性欧美1819sex性高清| 欧美成人综合网站| 久久国产福利| 国产精品国产精品| 亚洲青涩在线| 永久免费视频成人| 亚洲欧美另类在线观看| 一区二区三区高清在线| 久久免费观看视频| 久久精品国产99| 欧美体内she精视频在线观看| 蜜桃av一区二区| 国产日韩一区欧美| 在线一区二区三区四区五区| 亚洲三级色网| 久久精品在这里| 久久精品二区亚洲w码| 国产精品久久久久久影院8一贰佰| 亚洲国产精品福利| 亚洲国产成人av好男人在线观看| 亚洲欧美日韩中文视频| 欧美精品一区二区三区一线天视频 | 亚洲精品在线三区| 亚洲福利视频一区| 久久国产高清| 久久久精品国产免大香伊| 国产欧美日韩在线播放| 亚洲制服av| 午夜精品久久久久影视| 欧美日一区二区在线观看 | 久久国产直播| 久久久久久亚洲精品杨幂换脸| 国产精品美女主播| 亚洲视频电影图片偷拍一区| 亚洲最新视频在线播放| 欧美日韩在线看| 一区二区三区久久久| 亚洲欧美综合v| 国产精品呻吟| 久久精品国产综合| 亚洲大胆视频| 一区二区三区欧美视频| 国产精品99免视看9| 亚洲午夜成aⅴ人片| 欧美在线一级va免费观看| 国产一区二区三区最好精华液| 久久精品成人一区二区三区| 免费成人av在线看| 亚洲精品乱码久久久久久日本蜜臀 | 欧美影院在线播放| 国产日产欧美a一级在线| 欧美有码在线视频| 欧美夫妇交换俱乐部在线观看| 亚洲乱亚洲高清| 欧美色图首页| 欧美在线日韩精品| 亚洲国产精品99久久久久久久久| 亚洲美女一区| 国产精品久久一卡二卡| 久久国产精品一区二区三区四区 | 久久精品国产69国产精品亚洲 | 亚洲人成网站精品片在线观看| 一区二区高清在线观看| 国产视频亚洲精品| 欧美精品不卡| 亚洲欧美日韩系列| 欧美高清hd18日本| 亚洲尤物视频网| 亚洲国产精品一区二区第一页 | 亚洲另类自拍| 国产一区二区欧美日韩| 欧美激情免费观看| 亚洲欧美日韩成人| 亚洲欧洲精品一区二区精品久久久| 国产精品免费观看视频| 久久九九免费| 一区二区三区免费看| 免费高清在线一区| 亚洲欧美三级在线| 亚洲精品日韩激情在线电影 | 欧美日韩综合不卡| 老司机精品视频一区二区三区| 亚洲色图自拍| 亚洲国产精彩中文乱码av在线播放| 亚洲综合激情| 亚洲精品美女免费| 激情欧美一区二区三区| 欧美日韩一区二区三区高清| 久久免费黄色| 久久精品最新地址| 欧美中文字幕在线播放| 亚洲一区二区三| 一本色道久久综合一区|