HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂)
HDU 2276 Kiki Little Kiki 2 (位运算矩阵快速幂) ACM 题目地址:HDU 2276 Kiki Little Kiki 2 题意 : 一排灯,开关状态已知,每过一秒:第i个灯会根据刚才左边的那个灯的开关情况变化,如果左边是开的,它就会变化,如果是关的,就保持原来状态。问m秒后
HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂)
ACM
题目地址:HDU 2276 Kiki & Little Kiki 2
题意:
一排灯,开关状态已知,每过一秒:第i个灯会根据刚才左边的那个灯的开关情况变化,如果左边是开的,它就会变化,如果是关的,就保持原来状态。问m秒后的状态。
第1个的左边是最后一个。
分析:
转移不好想啊。。。
变化是这样的:
<ol> <li><code><span>原来</span><span>左边</span><span>变化</span></code></li> <li><code><span>1</span><span>1</span><span>0</span></code></li> <li><code><span>1</span><span>0</span><span>1</span></code></li> <li><code><span>0</span><span>1</span><span>1</span></code></li> <li><code><span>0</span><span>0</span><span>0</span></code></li> </ol>
然后想到 (~原来)^(左边)=变化
发现搞不成矩阵TAT...
看了别人题解后发现:(原来+左边)&2=变化,瞬间orz。
不过这样想才没错,矩阵需要的是加法。
于是构造矩阵。见大神的矩阵:
<ol> <li><code><span>"1 0 0...0 1</span></code></li> <li><code><span> 1 1 0...0 0</span></code></li> <li><code><span> 0 1 1...0 0</span></code></li> <li><code><span> 0 0 1...0 0</span></code></li> <li><code><span> ...........</span></code></li> <li><code><span> 0 0 0...1 1</span></code></li> <li><code><span>"</span></code></li> </ol>
最后要注意,如果直接矩阵乘法%2会跪,因为数据太大了。
这时候可以用位运算优化。
我们注意到:(1+1)%2和1^1结果一样,1*1和1&1结果一样,所以相乘函数改下就行了。
代码:
/* * Author: illuz <iilluzen> * Blog: http://blog.csdn.net/hcbbt * File: 2276.cpp * Create Date: 2014-08-03 22:47:12 * Descripton: */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; #define repf(i,a,b) for(int i=(a);i>= 1; } return c; } void init() { cin >> s; int len = s.length(); a.n = b.n = c.n = len; a.init(0); b.init(0); c.init(0); repf (i, 0, len - 1) { b.v[i][0] = s[i] - '0'; } a.v[0][0] = a.v[0][a.n - 1] = 1; repf (i, 1, a.n - 1) { a.v[i][i] = a.v[i][i - 1] = 1; } } void solve(int n) { c = a ^ (n); c = c * b; repf (i, 0, c.n - 1) { printf("%d", c.v[i][0]); } puts(""); } int main() { while (~scanf("%d", &n)) { init(); solve(n); } return 0; } </cmath></algorithm></iostream></cstring></cstdio></iilluzen>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Im ersten Artikel dieser Reihe haben wir die Zusammenhänge und Unterschiede zwischen künstlicher Intelligenz, maschinellem Lernen, Deep Learning, Datenwissenschaft und mehr diskutiert. Wir haben auch einige schwierige Entscheidungen hinsichtlich der Programmiersprachen, Tools und mehr getroffen, die in der gesamten Serie verwendet werden sollen. Abschließend haben wir noch ein wenig Matrixwissen eingeführt. In diesem Artikel werden wir die Matrix, den Kern der künstlichen Intelligenz, ausführlich besprechen. Aber vorher wollen wir zunächst die Geschichte der künstlichen Intelligenz verstehen. Warum müssen wir die Geschichte der künstlichen Intelligenz verstehen? In der Geschichte gab es viele KI-Booms, aber in vielen Fällen blieben die großen Erwartungen an das Potenzial der KI aus. Das Verständnis der Geschichte der künstlichen Intelligenz kann uns helfen zu erkennen, ob diese Welle der künstlichen Intelligenz Wunder bewirken wird oder nur eine weitere Blase ist, die kurz vor dem Platzen steht. uns

Eine beliebte Allzweck-Programmiersprache ist Python. Es wird in einer Vielzahl von Branchen eingesetzt, darunter Desktop-Anwendungen, Webentwicklung und maschinelles Lernen. Glücklicherweise verfügt Python über eine einfache und leicht verständliche Syntax, die für Anfänger geeignet ist. In diesem Artikel verwenden wir Python, um die Summe der rechten Diagonalen einer Matrix zu berechnen. Was ist eine Matrix? In der Mathematik verwenden wir ein rechteckiges Array oder eine Matrix, um ein mathematisches Objekt oder seine Eigenschaften zu beschreiben. Es handelt sich um ein rechteckiges Array oder eine Tabelle, die in Zeilen und Spalten angeordnete Zahlen, Symbole oder Ausdrücke enthält. Zum Beispiel -234512367574. Dies ist also eine Matrix mit 3 Zeilen und 4 Spalten, ausgedrückt als 3*4-Matrix. Nun gibt es in der Matrix zwei Diagonalen, die Primärdiagonale und die Sekundärdiagonale

Eine Matrix ist eine Menge von Zahlen, die in Zeilen und Spalten angeordnet sind. Eine Matrix mit m Zeilen und n Spalten wird als mXn-Matrix bezeichnet, und m und n werden als ihre Dimensionen bezeichnet. Eine Matrix ist ein zweidimensionales Array, das in Python mithilfe von Listen oder NumPy-Arrays erstellt wird. Im Allgemeinen kann die Matrixmultiplikation durch Multiplikation der Zeilen der ersten Matrix mit den Spalten der zweiten Matrix erfolgen. Dabei sollte die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix sein. Eingabe- und Ausgabeszenario Angenommen, wir haben zwei Matrizen A und B. Die Abmessungen dieser beiden Matrizen betragen 2X3 bzw. 3X2. Die resultierende Matrix nach der Multiplikation hat 2 Zeilen und 1 Spalte. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

In diesem Artikel erfahren Sie, wie Sie die Determinante einer Matrix mithilfe der Numpy-Bibliothek in Python berechnen. Die Determinante einer Matrix ist ein Skalarwert, der die Matrix in kompakter Form darstellen kann. Es ist eine nützliche Größe in der linearen Algebra und hat zahlreiche Anwendungen in verschiedenen Bereichen, darunter Physik, Ingenieurwesen und Informatik. In diesem Artikel besprechen wir zunächst die Definition und Eigenschaften von Determinanten. Anschließend lernen wir, wie man Numpy zur Berechnung der Determinante einer Matrix verwendet, und sehen anhand einiger Beispiele, wie es in der Praxis verwendet wird. Die Determinante einer Matrix ist ein Larwert, der zur Beschreibung der Eigenschaft verwendet werden kann

Der Benutzer muss die Reihenfolge der beiden Matrizen sowie die Elemente beider Matrizen eingeben. Vergleichen Sie dann die beiden Matrizen. Zwei Matrizen sind gleich, wenn beide Matrixelemente und -größen gleich sind. Wenn die Matrizen gleich groß, aber nicht gleich in den Elementen sind, werden die Matrizen als vergleichbar, aber nicht gleich dargestellt. Wenn die Größen und Elemente nicht übereinstimmen, können die Anzeigematrizen nicht verglichen werden. Das folgende Programm ist ein C-Programm, das verwendet wird, um zu vergleichen, ob zwei Matrizen gleich sind: #include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] ; In

Eine Matrix ist eine zweidimensionale Anordnung von Zahlen, die in Zeilen und Spalten angeordnet sind. Python verfügt über keinen Datentyp zur Darstellung von Matrizen, wir können jedoch verschachtelte Listen oder NumPy-Arrays als Matrizen verwenden. Sehen Sie sich die folgenden Eingabe- und Ausgabeszenarien an, um zu erfahren, wie Sie die ersten und letzten Spaltenelemente einer Matrix austauschen. Eingabe-Ausgabe-Szenario Angenommen, wir haben eine 3X3-Matrix, die durch eine Liste von Listen dargestellt wird. Die Ausgabematrix ist die resultierende Matrix aus dem Austausch der ersten und letzten Spaltenelemente. Eingabematrix:[1,3,4][4,5,6][7,8,3]Ausgabematrix:[4,3,1][4,5,6][3,8,7]Betrachten wir eine andere Eine Matrix, deren Zeilen und Spalten ungleich sind. Eingabematrix:

Im Social-Media-Bereich ist der Matrix-Account-Backflow eine gängige Strategie. Durch die Umleitung des Traffics zwischen verschiedenen Accounts können sich Fans gegenseitig ergänzen und ihre Aktivität steigern. Der Rückfluss zwischen Matrixkonten erfordert eine sorgfältige Planung und Ausführung und ist keine einfache Angelegenheit. In diesem Artikel wird ausführlich erläutert, wie eine Umkehrung zwischen verschiedenen Konten implementiert wird und welche Bedeutung die Matrixumkehr hat. 1. Wie storniere ich das Konto in der Matrix? Unter den Matrixkonten ist es entscheidend, ein Hauptkonto auszuwählen, das zur Hauptverkehrsquelle und Plattform für die Veröffentlichung von Kerninhalten wird. Bei der Inhaltsplanung geht es darum, entsprechende Inhaltspläne auf der Grundlage von Kontomerkmalen und Zielgruppen zu formulieren, um eine gleichbleibende Qualität und einen gleichbleibenden Stil der Inhalte sicherzustellen. 3. Empfehlen und liken Sie sich gegenseitig: Bewerben und liken Sie sich gegenseitig zwischen Matrix-Konten und führen Sie die Fans durch angemessene Layouts und Arrangements.

PHP ist eine in der Website-Entwicklung weit verbreitete Skriptsprache. Aufgrund ihrer leistungsstarken Funktionen und Flexibilität ist sie für viele Entwickler das Werkzeug der Wahl. Allerdings hat PHP auch einige Probleme beim Umgang mit Gleitkommaoperationen, insbesondere wenn es um Präzision und Genauigkeit geht. In diesem Artikel werden PHP-Gleitkomma-Betriebsprobleme analysiert und einige Lösungen vorgeschlagen. Außerdem werden spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, diese Probleme besser zu verstehen und zu lösen. Problemanalyse In PHP sind Gleitkommazahlen ein Datentyp, der zur Darstellung von Dezimalzahlen verwendet wird.
