TZOJ--5480: 孤衾易暖 // POJ--3735 Training little cats (矩陣快速冪)

5480: 孤衾易暖?

時間限制(普通/Java):1000MS/3000MS ? ? 內存限制:65536KByte

描述

哇,好難,我要放棄了(扶我起來,我還能A

寒夜縱長,孤衾易暖,鐘鼓漸清圓。

生活也許有些不如意的地方,但是沒有什么是擁有一只貓不能解決的,我最喜歡蘇格蘭折耳貓。

現在我有n只小貓,我要訓練這些貓去滿足我奇奇怪怪的需求。

就是要讓他們去得到魚,這樣他們才會快樂。剛開始他們是沒有魚的

我對這些貓有3種訓練要求:

第一種要求為get x,意為讓第x只貓咪得到一條;

第二種要求為eat x,意為讓第x只貓咪吃掉它所有的魚;

第三種要求為exchange x y,意為讓第x只貓咪和第y只貓咪交換他們的魚。

人們經常都是復讀機,貓也不例外,你給他們設定某組操作,讓他們重復就好了。

他們需要重復執行某組操作(含有k個要求)m次,求最后它們都有多少只魚。

輸入

?

?

輸入包括多組樣例,讀到文件結尾。

輸入的第一行為三個整數n,m,k,代表有n只貓,要重復的次數m和k個要求組成的操作。

接下來有k行,每一行都有一個訓練方式(m≤1,000,000,000,?n≤100,?k≤100)。

輸出

對于每個樣例都在一行上輸出n個數,代表每只貓有多少只魚。

樣例輸入

3 1 6
get 1
get 2
get 2
exchange 1 2
get 3
eat 2

樣例輸出

?2 0 1

提示

第一只貓得到1條魚,第2只貓得到1條魚,第2只貓得到1條魚,交換1和2的魚數。

第1只貓現在有2條魚,第2只貓現在有1條魚。第三只貓有一條魚,然后第二只貓的魚被吃完。

所以第1只貓現在有2條魚,第2只貓現在有0條魚,第三只貓有1條魚。而且只有一次,故輸出2 0 1。

題目來源

TOJ

?

題目鏈接:http://tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=5480

http://poj.org/problem?id=3735

兩個題目是一樣的,只不過一個英文題面一個中文題目

按照題目要求構造出矩陣,重復的次數用矩陣快速冪計算

對于題目要求的三種操作,可以按照下面的方法構造矩陣

第一種要求為get x,意為讓第x只貓咪得到一條;

即x的位置+1

第二種要求為eat x,意為讓第x只貓咪吃掉它所有的魚;

即x的位置歸0

第三種要求為exchange x y,意為讓第x只貓咪和第y只貓咪交換他們的魚。

即swap(x,y)

?

#include <bits/stdc++.h>
using namespace std;
#define LL __int64
struct A{LL data[111][111];int n;void ini(int nn){//初始化全0矩陣 n=nn;memset(data,0,sizeof(data));}void dw(int nn){//單位矩陣 ini(nn);for(int i=0;i<=n;i++)data[i][i]=1;}A(){n=2;memset(data,0,sizeof(data));}
};
int n;
A operator* (A a,A b)//矩陣乘法,重載乘號 
{A ans;for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){if(a.data[i][j]==0)continue;for(int k=0;k<=n;k++){ans.data[i][k]+=a.data[i][j]*b.data[j][k];}}}return ans;
}
A operator^ (A a,int k)//矩陣次冪 
{A ans;ans.dw(n);while(k){if(k&1)ans=ans*a;a=a*a;k>>=1;}return ans;
}
int main(){int m,k,x,y;A T;char ch[15];while(~scanf("%d%d%d",&n,&m,&k)){T.dw(n);while(k--){scanf("%s",ch);if(ch[0]=='g'){scanf("%d",&x);T.data[0][x]++;}else if(ch[0]=='e'){if(ch[1]=='x'){scanf("%d %d",&x,&y);for(int i=0;i<=n;i++){swap(T.data[i][x],T.data[i][y]);}}else {	scanf("%d",&x);for(int i=0;i<=n;i++){T.data[i][x]=0;}}}}T=T^m;printf("%I64d",T.data[0][1]);for(int i=2;i<=n;i++){printf(" %I64d",T.data[0][i]);}puts("");}
}

  

?

轉載于:https://www.cnblogs.com/Anidlebrain/p/10060964.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IntelliJ IDEA2017 修改緩存文件的路徑

IDEA的緩存文件夾.IntelliJIdea2017.1&#xff0c;存放著IDEA的破解密碼&#xff0c;各個項目的緩存&#xff0c;默認是在C盤的用戶目錄下&#xff0c;目前有1.5G大小。現在想要把它從C盤移出。 在IDEA的安裝路徑下中&#xff0c;進入bin目錄后找到屬性文件&#xff1a;idea.pr…

解決iphone填寫表單時,表單項獲取焦點時往下拉屏,導致頂部標題欄下滑錯位...

$(function () {//解決iphone填寫表單時&#xff0c;表單項獲取焦點時往下拉屏&#xff0c;導致頂部標題欄下滑錯位var u navigator.userAgent;var isiOS !!u.match(/\(i[^;];( U;)? CPU.Mac OS X/); //ios終端if (isiOS true) {var pageHeight window.innerHeight;$(&quo…

aws cognito_AWS Cognito的用戶管理—(2/3)核心功能

aws cognitoby Kangze Huang黃康澤 AWS Cognito的用戶管理—(2/3)核心功能 (User Management with AWS Cognito — (2/3) The Core Functionality) 完整的AWS Web樣板-教程1B (The Complete AWS Web Boilerplate — Tutorial 1B) Main Table of Contents Click Here主要目錄請…

python字符串后面添加字符串_什么是字符串?怎樣在Python中添加字符串?

字符串是一種表示文本的數據類型&#xff0c;字符串中的字符可以是ASCII字符、各種符號以及各種Unicode字符。Python中的字符串有如下三種表現方式。第1種方式&#xff1a;使用單引號包含字符。示例代碼如下&#xff1a;a 123注意&#xff0c;單引號表示的字符串里不能包含單引…

surround360

1.讀入配置文件2.創建底部和頂部投影線程3.將側面圖投影到球座標(1)load側面相機圖像(2)創建投影線程(3)等待線程結束4.渲染立體全景圖(側邊)(1)計算重疊區域寬度(2)創建準備生成新視圖的線程: 送入相鄰兩個相機的投影圖,計算光流flowLtoR,flowRtoL, 保存在novelViewGenerators…

snapchat_我剛剛在Snapchat獲得開發人員職位。

snapchatby Jon Deng喬恩鄧 我剛剛在Snapchat獲得開發人員職位。 這是我學到的東西&#xff0c;以及它如何幫助您進行求職。 (I just got a developer job at Snapchat. Here’s what I learned and how it can help you with your job search.) About a year ago, while depl…

sys.argv

import sysi0 print len(sys.argv) while i < len(sys.argv):print sys.argv[%d]:%s %(i,sys.argv[i])i i1 import sysprint len(sys.argv) for i in range(len(sys.argv)):print sys.argv[%d]:%s %(i,sys.argv[i]) 執行 結果 &#xff1a;E:\MyScript>python sysargs.py…

Docker安裝java-Zookeeper進行操作

Docker安裝Zookeeper下載Zookeeper鏡像 docker pull zookeeper啟動容器并添加映射 docker run --privilegedtrue -d --name zookeeper --publish 2181:2181 -d zookeeper:latest 查看容器是否啟動 docker ps idea提供了一個Zookeeper插件&#xff0c;以供連接Zookeeper服務中心…

java反射獲取注解_Java自定義注解和運行時靠反射獲取注解

java自定義注解Java注解是附加在代碼中的一些元信息&#xff0c;用于一些工具在編譯、運行時進行解析和使用&#xff0c;起到說明、配置的功能。注解不會也不能影響代碼的實際邏輯&#xff0c;僅僅起到輔助性的作用。包含在 java.lang.annotation 包中。1、元注解元注解是指注解…

進程間的通訊(IPC)方式

內存映射 為什么要進行進程間的通訊(IPC (Inter-process communication)) 數據傳輸&#xff1a;一個進程需要將它的數據發送給另一個進程&#xff0c;發送的數據量在一個字節到幾M字節之間共享數據&#xff1a;多個進程想要操作共享數據&#xff0c;一個進程對共享數據的修改&a…

開發人員避免編寫測試的2個最常見原因

This post was originally published on Medium這篇文章最初發表于Medium Writing tests represents one of those few stages of software development that is usually overlooked, even though it may be one of the most important one. Developers mention it and usuall…

java ews_Java---使用EWS 寫個ExchangeMailUtil

依賴包&#xff1a;commons-httpclient-3.1.jarcommons-codec-1.10.jarcommons-logging-1.2.jarjcifs-1.3.17.jar代碼示例&#xff1a;創建MailBean類&#xff1a;import java.util.Date;public class MailBean {public BigDecimal getId() {return id;}public void setId(BigD…

Ilya Muromets(DP or 思維)

Ilya Muromets Gym - 100513F Силачом слыву недаром — семерых одним ударом!From the Russian cartoon on the German fairy tale.Ilya Muromets is a legendary bogatyr. Right now he is struggling against Zmej Gorynych, a drago…

C# 裝箱和拆箱

C#的值類型可以分為在棧上分配內存的值類型和在托管堆上分配內存的引用類型。 1、那么值類型和引用類型能否相互轉換呢? 答案是肯定的,C#通過裝箱和拆箱來實現兩者的相互轉換。 (1)、裝箱 ---把值類型強制轉換成引用類型(object類型) (2)、拆箱 ---把引用類型強制轉換成值…

第五章

學會了開發板測試環境的調試和燒寫android系統。 學到的知識&#xff1a; 一、安裝串口調試工具:minicom 第1步&#xff1a;檢測當前系統是否支持USB轉串口。 # lsmod | grep usbserial 第2步&#xff1a;安裝minicom # qpt-get install minicom 第3步:配置minicom # minicom -…

Angular的后院:組件依賴關系的解決

by Dor Moshe通過Dor Moshe Angular的后院&#xff1a;解決 組件依賴關系 (Angular’s Backyard: The Resolving of Components Dependencies) This article originally appeared on dormoshe.io這篇文章 最初出現在dormoshe.io Many of us use the Hierarchical Dependenc…

node中的Stream-Readable和Writeable解讀

在node中&#xff0c;只要涉及到文件IO的場景一般都會涉及到一個類&#xff0d;Stream。Stream是對IO設備的抽象表示&#xff0c;其在JAVA中也有涉及&#xff0c;主要體現在四個類&#xff0d;InputStream、Reader、OutputStream、Writer&#xff0c;其中InputStream和OutputSt…

新Rider預覽版發布,對F#的支持是亮點

JetBrains一直在改進自己的跨平臺.NET IDE產品Rider&#xff0c;努力使其成為Visual Studio家族產品可承擔職能的重要替代者。于今年四月發布的Rider預覽版&#xff08;EAP 21&#xff09;提供了一些新特性&#xff0c;其中的亮點在于對函數式編程語言F#的支持。\\鑒于這是Ride…

java代碼整合_java合并多個文件的實例代碼

在實際項目中&#xff0c;在處理較大的文件時&#xff0c;常常將文件拆分為多個子文件進行處理&#xff0c;最后再合并這些子文件。下面就為各位介紹下Java中合并多個文件的方法。Java中合并子文件最容易想到的就是利用BufferedStream進行讀寫。具體的實現方式如下&#xff0c;…

正則表達式的一些規則

1.限定修飾符只對其緊前的元字符有效 String rex8 "\\d\\D"; 上式中&#xff0c;只對\\D有效&#xff0c;即有至少有1個&#xff08;1個或多個&#xff09;非數字&#xff0c;\\d仍然只許有一個數字。 2.[1,2,3]和[123]是一樣的轉載于:https://www.cnblogs.com/Sabr…