原创 Subset of Five------------------------------(整除倍數型dp)

題意: 從n個數中任意選,使得選出來的數的總和是5的倍數,請問最大是多少 解析: 這是一種常見的整除倍數型dp 解題套路:遇到這種說是x的倍數,我們狀態的變化就是x的餘數0~x-1 那麼整個狀態的轉移也都是圍繞着餘數處理的。

原创 內存分配-----------------------------思維(模擬)

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

原创 奶牛矩陣--------------------------------------思維(kmp)

解析: 字符串最長爲75,所以我們可以枚舉列的最小循環節(暴力枚舉) 但是我們不能枚舉行的最小的循環節,因爲n太大了。 所以我們利用kmp求解行的最小循環節即可 #include<bits/stdc++.h> using na

原创 F. Spy-string--------------------------------思維(暴力枚舉)

題意: 給定n個長度爲m的字符串,讓你構造一個字符串,使得與這n個字符串不同的地方少於1 解析: 根據題意不同的地方最多隻有1個,那麼我們在n個串裏面隨便找一個串作爲基準串。然後我們暴力枚舉修改每一個位置(修改爲’a’~‘z’

原创 C. Palindromic Paths------------------------思維

解析: 迴文路徑,如上圖所示 兩條紅線對應的元素必須都是一樣的,兩條綠線對應的元素必須是一樣的(如果不相同其中一條路徑肯定不會是迴文路徑)。 所以最終我們只要求所有的斜線對應的元素是否一樣,不一樣我們就統計這兩條斜線1的數量

原创 問題 E: 填色問題 (color)---------------------------思維(dfs搜索順序)

題目描述 有形如下列圖形的地圖,圖中每一塊區域代表一個省份,現請你用紅(1)、藍(2)、黃(3)、綠(4)四種顏色給這些省份填上顏色,要求每一省份用一種顏色,且任意兩個相鄰省份的顏色不能相同,請給出符合條件的填色方案總數。地圖用無

原创 Public Sale------------------------------------思維(巴什博弈簡單變型)

Problem Description 雖然不想,但是現實總歸是現實,Lele始終沒有逃過退學的命運,因爲他沒有拿到獎學金。現在等待他的,就是像FarmJohn一樣的農田生涯。 要種田得有田纔行,Lele聽說街上正在舉行一場別開生

原创 D. Yet Another Yet Another Task----------------------------------思維

題意: 給你n個數,現在你要選一段區間然後減去區間的最大值,問答案最大是多少? 解析: 我們枚舉最大值,因爲-30<=ai<=30,範圍很小 然後遍歷一遍求最大值即可。 #include<bits/stdc++.h> usin

原创 可達性統計------------------------------思維(拓撲排序+dp)

解析: 由題意可知是一個有向無環圖 DAG,所以我們做一遍拓撲排序。 然後根據dp的思想 f(u)= f(u1) ∪ f(u2) ∪ f(u3) 對於想要求解出u的情況。必須把u1,u2,u3求解出來。所以我們倒着遍歷拓撲排序

原创 問題 D: 病毒-----------------------思維(數論)

題目描述 chen_03 會製造電腦病毒。 有人把 Jay 的電腦植入了病毒,而要解除病毒,Jay 要回答一道題。 在電腦屏幕上有一個數n ,Jay 被要求輸入一個正整數,這個數能被[1,n]內所有數整除,並且要保持這個數最小,因

原创 Brave Game---------------------------思維(裸巴什博弈)

Problem Description 十年前讀大學的時候,中國每年都要從國外引進一些電影大片,其中有一部電影就叫《勇敢者的遊戲》(英文名稱:Zathura),一直到現在,我依然對於電影中的部分電腦特技印象深刻。 今天,大家選擇上

原创 數位操作1---------------------------思維

解析: 對於n<=9 我們直接輸出"1n" n肯定能被2~9這些因數給分解的,所以我們枚舉因數來分解n,我們從9開始遍歷,因爲這樣可以使得解更小。 如果最後分解剩下的n比9還要大則輸出-1. #include<bits/std

原创 D. The Best Vacation------------------------------思維(雙指針)

解析: 我們先把環形拉成線性。 處理一下每月可獲得擁抱數 我們選擇肯定是選擇每個月的最後幾天。所以如果有多餘的天數話,我們只要用當前的擁抱數-多餘x天總的擁抱數即可。 #include<bits/stdc++.h> using

原创 D - Div Game-------------------------------思維(質因數分解)

解析: 質因數分解 由題意可知,N%z==0 && z=p^e p要是素數 所以我們質因數分解N N=p0e0 * p1e1 * p2e2 *…*pnen 對於p0e0 我們可以分解多少個不同的數呢。 我們按照冪次

原创 點對最大值-----------------------------樹形dp

解析: 這道題相當於樹的最長路徑加強版. f[i]:表示以i爲根的子樹,到達節點i的最大值是多少 初始化 f[i]=c[i]; 狀態轉移方程: f[u]=max(f[u],f[v]+w[i]) 解釋:當前u節點的最大值,有可