1097 - 萌萌噠的第二題
time limit:5s memory limit:128mbyte
submissions:610solved:155
description
一條東西走向的河兩邊有都排著工廠,北邊有n間工廠a提供原材料,南邊有n間工廠b進行生產。現在需要在工廠a和工廠b之間建運輸橋以減少運輸成本。可是每個工廠b只能接受最多6個工廠a提供的材料能滿足生產,而且建立的運輸橋之間不能有交叉,北邊的工廠a由西向東編號1~n,南邊的工廠b也是一樣,不能交叉的意思是如果a號工廠a跟b號工廠b之間建立了運輸橋,那麼不能存在c、d(c < a 且d > b) 使得c號工廠a和d號工廠b之間建立運輸橋,每個工廠a只能給乙個工廠b提供材料,每個工廠b只能由一間工廠a提供材料,請問在滿足上述條件的情況下最多能建立多少個運輸橋。
(每個工廠最多有6個選擇,但只能選乙個)
input
包含多組測試資料(<=15),其中每組測試資料:
第一行乙個整數n(1
<= n <= 10^5)
接下來n行,第i+1行6個整數表示i號工廠b能接受的6個工廠a的編號,保證所有編號的範圍是1~n,可能重複(請看樣例)。
output
每組資料輸出一行乙個整數表示最多能建立的運輸橋數量。
sample input31
2312
3222
2221
3131
3612
3456
1234
5612
3456
1234
5612
3456
1111
11sample output35
solution
「玲瓏杯」acm比賽 round #11
很容易就想到dp o(n^2) 複雜度太高
萬萬沒想到 這居然是lis
因為每個b只能選6個a
將每個b的6個選擇按從大到小排序 然後求最長單增子序列即可
例如樣例一
【1 2 3 1 2 3】,【2 2 2 2 2 2】,【1 3 1 3 1 3】——>332211 222222 333111
lis=123
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
using
namespace
std;
#define ll long long
#define ull unsigned long long
#define pii pair
#define inf 1000000007
#define pll pair
#define pid pair
const
int inf=1e9+7;
const
int n = 1e5+5;
int a[6*n];
int len=0;
int lis[6*n];
int lis(int*a,int len)
else
}return size;
}int main()
sort(t,t+6,greater());
for(int j=0;j<6;++j)
a[len++]=t[j];}}
printf("%d\n",lis(a,len));
}return
0;}
玲瓏OJ 1100 萌萌噠的第五題 dp
1100 萌萌噠的第五題 time limit 10s memory limit 128mbyte submissions 322solved 67 description 給出乙個長度為m的字串,請問有多少個長度為n的字串不存在子串等於給出的字串。為了簡化問題,我們規定所有字串只包含小寫英文本母。...
玲瓏杯 1099萌萌噠的第四題
給乙個數x,定義乙個函式f x 的結果是x的各位數字的平方和,若經過無數次遞迴操作之後若結果為1,也就是f f f f x 1,那麼這個數被認為是乙個特別的數。給出乙個數x請問這個數是否特別。input 包含多組測試資料 20 每組資料一行乙個整數x 1 x 1000000000 output 每組...
玲瓏杯 1101 萌萌噠的第六題(亂搞)
1101 萌萌噠的第六題 time limit 2s memory limit 128mbyte submissions 306solved 104 description 乙個凸多邊形的每個角都是rgb三種顏色的其中一種,保證相鄰的兩個點顏色都不一樣,請問是否能用多條不相交的對角線把多邊形切成多個...