多校第16場 HDU3996 Gold Mine (最大權閉合圖)

 被資料範圍坑了。。。構圖方法這裡講的很詳細http://apps.hi.baidu.com/share/detail/18295127和之前的一道題類似,用總的正值和減去最小割, #include <cstdio>#include <string.h>using namespace std;typedef long long ll;const int N=3550;const int M=9000000;const ll inf=13216546513113211ll;

ZOJ2314 Reactor Cooling (有上下界的網路流)

sort貌似不能給2維數組排序呢? 改成qsort就好了,這裡的構圖方法和周源的論文裡的類似題目是求一個有上下界網路中的無源匯的可行流。構造伴隨網路方法如下:新增兩個頂點VS VT

JOJ 1329: Tree(重建二叉樹)

給出二叉樹的中序和後序遍曆,求樹的根到葉的最小結點和的路徑上的分葉節點的值;思路是在後序找出根,在中序遍曆中找出其位置,確定左右兒子,遞迴建樹,在建樹的過程直接構建所求。#include <cstdio>#include <string.h>const int maxn=255;const int Inf=0x7fffffff;char instr[maxn];char pstr[maxn];int num[10],cnt,head[maxn];int node1 [50

UVA11990 “Dynamic” Inversion 樹套樹

這題很經典的動態逆序對問題,我們可以利用樹套樹來解決它,首先我們得到一個總體的思路對於每一個操作,我們先利用樹狀數組求出一個逆序對,然後進行查詢統計,對於每一個刪除操作,我們只要查詢這個元素之前的比它大的還有後面的比它小的有多少,逆序對就減少多少,這個操作可以利用樹套樹搞定lrj的題好囧,這題線段樹一直T,後來想到可以用區間的加減性,寫了一個樹狀數組套平衡樹就過了- -

多效第16場 HDU 3999 The order of a Tree(二叉樹)

沒學過二叉樹的先序遍曆#include <cstdio>#include <string.h>const int maxn=100050;struct Node{ int l,r,w;}node[maxn];int m; int cnt;void insert (int n,int root){ if(node[root].w<n)//右子樹 { if(~node[root].r) {

多校第七場ECNU 1009Triple(圖論?數學?)

這是一道圖論題。。。題目可轉化為給處的n個數為n個點,任意不同2點互質就藍邊,不互質就連紅邊,其目的是找出3邊顏色相同的三角形的個數,可以用總數減去含2種顏色的三角形的個數,其中是含1藍2紅和1紅2藍的兩種情況,只要分別對每個點搜尋下記錄紅或藍邊的個數即可;#include <cstdio>#include <cstring>const int maxn=805;int prec[maxn][5];int map[maxn][maxn];int

多校聯合第七場1003Swordsman(判斷簡單多邊形是否是軸對稱圖形)

簡單多邊形是邊不相交的多邊形,又稱佐敦多邊形,因為佐敦曲線定理可以用來證明這樣的多邊形能將平面分成兩個地區,即區內和區外。這題看到的時候頓時蛋疼了,我在FJNU的比賽和長沙的華南賽都遇到過類似的題目,FJNU的比賽各邊是和x,y軸都是平行的,只需枚舉4個方向的對稱軸,長沙和這題很相似,要枚舉所有對稱軸,資料比較小,這題資料比較大,20000

多校1009 (DFS+樹狀數組)

 暴力N^2 各種TLE#include <cstdio>#include <string.h>const int maxn=100010;struct node{    int v;    node *next;    node (int a ,node * p):v(a),next(p){};};node * List[maxn];int min_num[maxn],deg[maxn],n,son[maxn];int n2;bool vis [maxn];void

弱校ACM的奮鬥史(弱校不弱)

 弱校ACM的奮鬥史不知道什麼時候,開始知道ACM;也不知道什麼時候,開始喜歡上ACM。但是,我知道,我喜歡上了,而且不會後悔。我是大一的時候進的學校ACM隊,那個時候,一切都是冰冷的,華東理工大學,在別人的眼裡,只是每次給別人墊底的學校,次次如此。  但是,我們不甘心,我們從不甘心,當我們主力隊員中的一個,一個月拚命集訓,瘦了很多的時候,突然,我有一種哭的衝動。我問他,為什嗎?他告訴我:我喜歡ACM。也許是個傻傻的理由,但是就是這句話讓我一直留在了這裡,並且為了這個夢奮鬥著。  也許是天資的原

多校第十場HDU 3933 Dark Parth(二維DP)

和之前一場的一個二維DP很類似的DP,但是這題資料比較弱,很容易水過。。。題目意思是求最多去掉s個長度在la到lb的區間之後得到的最小值轉移方程為:dp[i][j]=min{ dp[i-l][j-1](la<=l<=lb) , dp[i-1][j]+a[i]} //轉移方程,一開始沒判斷j>=1 ,導致WA了2次後來因為ans沒初始化正無窮 , 在本機上過了資料,但交上去怎麼都沒過,鬱悶了一晚上。。。 #include <cstdio>#include

POJ3250從多個方面考慮同一問題

有很多的方法過這題,以下介紹三種方法,主要思路是將序列反轉(其實不反轉也沒什麼),然後去找第i個元素左邊靠最右的比這個元素大的位置j,那麼i-j+1就是第i個元素對應的解。第一種方法:利用線段樹動態更新,完成上部分的查詢,複雜度O(nlogn)。對線段樹處理這類問題的方法就不詳細說明了,想要瞭解的,看這篇文章 My Code:#include <cstdio>#include <cstring>#include <cstdlib>#include

POJ 1797 條件最大產生樹

這題做的囧死,看了範例很興奮的寫了個dijkstra交上去WA,重新看了下題目,發現是每條路都有一個最大承載量,好吧,我又想錯了,發現不是網路流,因為範例用最大流說不通,再仔細看了一遍題目,發現是叫你找一條路使得單條路的流量最大,果斷寫了個最大產生樹,覺得最大產生樹的最小邊就是解,叫上去,再次WA。 想了一會兒才發現不對,如果有一條路流量很大,但是這條路建出來的時候產生樹沒有建好呢?後來在Kruskal函數裡加了一句很重要的話,果斷AC。。。。。 本題的思路就是求最大產生樹,當1和n在一個集合裡

Codeforces Beta Round #38 G Queue 動態樹

本題算是比較難想的題目了,比賽的時候想成splay果斷悲劇,今晚才突然發現直接用可以合并的樹就可以了。思路是維護一顆二叉樹,每次來了一個元素,找到元素對應的位置,注意找到的位置是靠最右邊的第一個比它大的元素的位置,如果此元素在c[i]步內不能到達,就插入元素到右邊第c[i]個位置。動態樹的split函數表示將樹中的第k個和第k-1個元素分開,形成兩棵樹,這樣我們將一個單獨的結點分別與這兩棵樹合并,就可以得到新的序列。 最後進行中序遍曆得到最後的解,注意樹的合并必須用隨機演算法,否則會使樹退化。 

HDU1244最大連續子欄位和最終加強版

 記錄dp[i][j]表示以第i個元素結尾,有j組的時候的最大和,那麼有dp[i][j]=max{dp[k][j-1]}+sum[i-l[j]+1][i],其中k+l[j]<=i,那麼這樣的轉移是O(n)的,為了最佳化,記錄s[i][j]表示s[0][j]到s[i][j]中的最大dp值,那麼可以在O(1)的時間內做到轉移,最後可以得到一個轉移方程:dp[i][j]=s[i][j-1]+sum[i-l[j]+][i]。注意sum數組可以用前n項和得到。My

多校15場Harry Potter and the Hide Story(合數分解)

出題者願意可能是要用隨機演算法,不過還是被樸素的素數表給水掉了。。。題意:給出n,k(n是ll範圍 , k是10^14)求最大的x使k^x整除n!當k不等於1時,先將k分解成素數乘積形式,記錄指數,找出n!中相對的素數的指數與k分解後指數之比的最小值即可 #include <cstdio>#include <cstring>#define abs(a) (a)>(0)?(a):(-(a))#define min(a,b) (a>b?b:a)typedef

多校BIT 1001Inverting Cups (模線性方程的應用或找規律)

 本題可以通過求解模線性方程來解決。題目的最終任務是將所有杯子翻轉,所以每個杯子被翻轉次數一定是奇數次。我們不妨設第i個杯子被翻轉次數為 2*ki+1,翻轉總次數為n,則依題意可以列出如下方程         Sum(2*ki+1) = B*n,整理可得  2*Sum(ki) + A =  B*n          我們不妨設Sum(ki)= K, 則上式可化為 2*K + A = B*n;         也就是求一個最小的n,使得 B*n – 2*K = A        

POJ1742多重背包

典型的單調隊列最佳化dp。對於n類物品,某類物品的數量為k,價值為v,容量為w。那麼考慮到這個種類的物品的時候有如下dp方程:設dp[i]表示容量為i的時候得到的最大價值,那麼我們就有:dp[i]=max{dp[i-k*w]+k*v}換一種寫法:dp[mod+k*w]=max{dp[mod+j*w]+(k-j)*v}這裡為了方便,我們用s[j]表示dp[mod+j*w],所以就有dp[mod+k*w]=max{s[j]+(k-j)*v}=max{s[j]-j*v}+k*v這裡k已經是定值,也就是

多校JLU 10題JLUCPC(樹形DP)

 題目測試的時候感覺題就很噁心,10道都不會,不過在正式比賽的時候還是有隊伍犀利的做出了6道,真的很厲害這個是最水的一題了,但是對我還是很難,看著題解,劃拉半天才看明白。代碼最佳化後JOJ跑了0.57s。(上午剛看明白,下午比賽就出了)師兄給的題解: 樹狀DP因為樹是連通的且為無向邊,所以可以假定1為根,從結點1開始向各個子樹DFS這次DFS過程中要對每個結點記錄幾個量node[i]記錄以i為根的子樹(包括i結點)的T[k]

hdu 1241 Oil Deposits

/* hdu 1241 搜尋類水題。 題目大意是,@代表有油田,連續的@算是一塊油田 問共有多少塊油田。 只要向八個方向dfs即可;*/#include <iostream>#include <cstdio>#define maxn 105using namespace std;int n,m;int Count;char grid[maxn][maxn];int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{

多校15場WHU Harry Potter and the Forbidden Forest(求網路的最小割的最小邊數)

哈利傳輸速率想阻止在0點得食屍鬼到達n-1點,於是要破壞幾條路,每條路消耗一定魔法,他想知道在耗費最少魔法的情況下,破壞的路最少。(錯誤思路)比賽時想用費用流來解,對於原邊每條邊的cost賦值為1,流過之後最小的費用就是最小割得割數,但是運行之後發現結果不然,原因是費用是對於當前流所過邊的所有費用而言,並不是割邊的費用。。。正確解法:(定理?

總頁數: 61357 1 .... 17428 17429 17430 17431 17432 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.