Vollbit-Suche mit Go

Donuts Procon Challenge B - Tokyo 7. Schwestern https://atcoder.jp/contests/donuts-2015/tasks/donuts_2015_2

package main
import(
  "fmt"
  "bufio"
  "os"
  "strconv"
  "strings"
  "go/types"
  "go/token"
)
var rdr=bufio.NewReaderSize(os.Stdin,10000000)
func readLine()string{
  l,_,_:=rdr.ReadLine()
  return string(l)
}
func readInts()[]int{
  s:=strings.Split(readLine()," ")
  res:=[]int{}
  for i:=0;i<len(s);i++{
    i,_:=strconv.Atoi(s[i])
    res=append(res,i)
  }
  return res
}
func chmax(x,y int)int{if x>=y{return x}else{return y}}
func contains(x int,sl []int)bool{
  res:=false
  for i:=0;i<len(sl);i++{
    if sl[i]==x{
      res=true
      break
    }
  }
  return res
}
func main(){
  tmp:=readInts()
  n,m:=tmp[0],tmp[1]
  A:=readInts()
  B:=[]int{}
  I:=[][]int{}
  for i:=0;i<m;i++{
    tmp:=readInts()
    B=append(B,tmp[0])
    I=append(I,tmp[2:])
    for j:=0;j<tmp[1];j++{
      I[i][j]--
    }
  }
  //fmt.Println(n,A)
  //fmt.Println(B)
  //fmt.Println(I)
  ans:=0
  for bits:=0;bits<(1<<uint64(n));bits++{
    score:=0
    combo:=[]int{}
    for i:=0;i<n;i++{
      if (bits>>uint64(i))&1==1{
        score+=A[i] //Die Punktzahl der Person
        combo=append(combo,i)
      }
    }
    if len(combo)>9{
      continue
    }
    cnt:=0
    //bonus:=0
    for i:=0;i<m;i++{
      cnt=0
      for j:=0;j<len(combo);j++{
        if contains(combo[j],I[i]){
          cnt++
        }
      }
      if cnt>=3{
        score+=B[i]
        //bonus+=B[i]
      }
    }
    //if score==6100{fmt.Println("score",score,"combo",combo,"cnt",cnt,"B[i]",bonus)}
    ans=chmax(ans,score)
  }
  fmt.Println(ans)
}

Recommended Posts

Vollbit-Suche mit Go
Vollbit-Suche mit Python
Python Bit vollständige Suche
Bestätigen Sie die vollständige Suche
Einfache Bit-Vollsuche (Easy Set)
Python mit Go
Bit vollständige Suche und direkte Produktmenge
Hallo Welt mit allen Funktionen der Go-Sprache
Sequentielle Suche mit Python
Dichotomie mit Python
Dichotomie mit Python 3
Datenbank mit db.py durchsuchen
Löse mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (010 --014 Vollständige Suche: Bit vollständige Suche)
Zeichnen Sie die Bezier-Kurve mit Go
Betreiben Sie den Db2-Container mit Go
Erste Schritte mit Go Assembly
Erstellen / Suchen / Erstellen einer Tabelle mit PynamoDB
Stellen Sie mit GO eine Verbindung zu Postgresql her
Versuchen Sie, Parfüm mit Go zu implementieren
Ich kann nicht mit # google-map suchen. ..
Suchmaschinen arbeiten mit Python
Suche nach Twitter-Tweets mit Python
Optimieren Sie die Websuche mit Python
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Lernen mit ABC173C (Bit-Vollsuche, Kopieren einer mehrdimensionalen Liste, eine Dimension einer mehrdimensionalen Liste)
Lösen Sie Teilsummenprobleme mit der vollständigen Suche in Python
Rastersuche von Hyperparametern mit Scikit-learn
Sehen Sie sich Wale mit Kombinationsoptimierung an
Tipps zum Ausführen Gehen Sie mit Docker
Erster OSMnx ~ Mit der kürzesten Routensuche ~
Erstellen Sie mlpy mit python3.3 (64bit) (Windows 64bit)
Suchen Sie mit opencv nach phasenidentischen zusammengesetzten Wörtern
Verwenden Sie die Curl / JQ-Bibliothek mit Go
Twitter-Such-Client mit Flasche gemacht
Über etwas vollständige Suche, die häufig bei Wettkampfprofis auftritt Aus den Augen von Anfängern mit Python
Betreiben Sie den Linux-Netzwerk-Namespace mit Go
Lösen mit Ruby und Python AtCoder ABC057 C Zerlegung des Primfaktors Bit vollständige Suche