a.**推薦系統
直接暴力dp就行
.....**賽後沒儲存orz....找不到了
b.阿里巴巴的手機**商(簡單)
直接拿map暴力就行
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define long long long
const int inf=0x3f3f3f3f;
const long mod=1e9+ 7;
const double pi=acos(-1.0);
#define clri(x) memset(x,-1,sizeof(x))
#define clr0(x) memset(x,0,sizeof x)
#define clr1(x) memset(x,inf,sizeof x)
#define clr2(x) memset(x,-inf,sizeof x)
#define eps 1e-10
#define lson l , mid , rt<< 1
#define rson mid + 1 ,r , (rt<<1)+1
#define root 1, m , 1
mapmp ;
int main()
cout<
c.阿里巴巴的手機**商(中等)
把字串倒著插到字典樹裡面,注意單詞和字尾是不一樣的,即delete操作和query,update操作的區別
然後換字尾的時候:
1、把字尾str1的兒子和當前字尾str1的資訊記錄;
2、刪去它的所有兒子並且清空對應的資訊;
3、把(1)中記錄的資訊和兒子賦給字尾str2;
注意上面的順序不能打亂,不可以先賦給str2再清空,因為存在str1是str2的乙個字尾的情況,如update cd abcd
細節還是有點繁瑣的:
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std ;
#define long long long
const int inf=0x3f3f3f3f;
const long mod=1e9+ 7;
const double pi=acos(-1.0);
#define clri(x) memset(x,-1,sizeof(x))
#define clr0(x) memset(x,0,sizeof x)
#define clr1(x) memset(x,inf,sizeof x)
#define clr2(x) memset(x,-inf,sizeof x)
#define eps 1e-10
#define lson l , mid , rt<< 1
#define rson mid + 1 ,r , (rt<<1)+1
#define root 1, m , 1
struct node
}l[1000000+11];
int tot = 0;
void insert(char a , long val )
l[now].tag += val ;
}long query_tag(char a)
return l[now].tag ;
}int creattrie(char a , long val )
l[nextt].cnt += val ;
now = nextt;
}return now ;
}void update(char a , long val )
l[now].tag -= val ;
}long query( char a )
return l[now].cnt;
}void change(char a , char b )
int main()
else if(op[0] == 'd')
else if(op[0] == 'q')
else
if(res2 >= 1 || query_tag(str2) >= 1)
change(str1,str2) ;}}
for(int i = 0 ;i <= tot ; ++ i)l[i].init() ;
}}
d.阿里巴巴的手機**商(困難)
資料範圍和基本操作跟中等版本一樣,多出了乙個查詢歷史版本的操作,應該是把trie樹用可持久化trie去替代就行了:
insert :每次更新一條鏈;
delete :同上;
update:每次更新2條鏈,把字尾str1和str2的鏈都更新了;
query:直接查詢當前版本;
vquery: 當前的版本往後退,然後查詢就行了;
(理論ac,日常口胡,然而**並沒有打完,資料結構能力低下的一匹.....orz。)
2018 計蒜之道 初賽 第二場
簽到完看到c沒什麼人過就溜樂。a.的推薦系統 直接dp,時間複雜度 o nd include using namespace std define rep i,a,b for int i a i b i define dec i,a,b for int i a i b i define mp mak...
2018 計蒜之道 初賽 第二場 A B
小明剛剛入職 老大給他交代了乙個簡單的任務,實現乙個簡易的商品推薦系統。一共有 n n 件商品可以被推薦,他們的編號分別為 1 1 到 n n。每件商品都有乙個 編號為 i i的商品 為 p ipi 元。現在需要給使用者推薦盡可能多的商品,但是要保證按照編號上公升的順序給使用者依次推薦商品,並且,相...
2019 計蒜之道 初賽 第二場 矩陣求值
題目背景題目描述 乙個同學 lsq 在小課堂後對矩陣產生極大的感興趣,他想到了乙個對矩陣求和的問題,但是這個矩陣實在太大了,他算不過來,你能幫幫他嗎?這個矩陣長這個樣子,其右方和下方是沒有邊界的,但是不要擔心,他並不要求你對整個矩陣求和,他只想知道,第 a 行第 c 列的格仔為左上,第 b 行第 d...