2016 百度之星 資格賽

2021-07-11 19:41:34 字數 2948 閱讀 9641

變懶了,最近做的很多題目都不想貼了。 本來就sb,還那麼懶,沒救了。

a沒想太多,設個逆元就過了。

b斐波那契數列高精度。n == 0時輸出換行。。。

c字典樹,記錄結點的單詞數 以及 當前結點是否是單詞的末尾,delete時需要先找出字首對應的串數,那麼就dfs統計末尾結點總數,然後用字首減掉就好了。一開始dfs跑的時候沒有把delete的結點去掉(sb啊),但強行951ms過了,後來做完沒事改了改跑了265ms。。。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a, b) memset(a, b, sizeof(a))

using

namespace

std;

typedef

long

long ll;

typedef pair pii;

const

int maxn = 3 * 1e6 + 10;

const

int mod = 9973;

const

int inf = 0x3f3f3f3f;

int sum;

struct trie

void init()

void insert(char *s)

end[u]++;

}void dfs(int u) }}

void delete(char *s)

dfs(u); u = root;

for(int i = 0; s[i]; i++)

word[u] += sum;

}bool query(char *s)

return

true;

}};trie t;

int main()

else

if(op[0] == 'd')

else }}

return

0;}

d

map一下就好了

e因為每個條件的子條件間是與的關係,我們可以先判斷每個條件是否合法(可能存在兩個子條件矛盾的情況)。對於條件i、j的判定,只要存在i的乙個子條件和j的乙個子條件矛盾 或者 i(j)有乙個本身就是非法的,那麼i和j就是沒有交集的。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a, b) memset(a, b, sizeof(a))

using

namespace

std;

typedef

long

long ll;

typedef pair pii;

const

int maxn = 3 * 1e6 + 10;

const

int mod = 9973;

const

int inf = 0x3f3f3f3f;

struct node ;

node num[1010][40];

int cnt[1010];

void solve(char *s, int id)

else

if(s[i] == ' ') }}

else

if(s[i] == '>')

else

if(s[i] == '<')

else

if(s[i] == '=')

else

if(s[i] == '-' || (s[i] >= '0' && s[i] <= '9'))

sum = sum * 10 + (s[i] - '0');

}else

}}// > 1 < 2 = 3 >= 4 <= 5 == 6

bool check(int op1, int v1, int op2, int v2)

if(op2 == 5 || op2 == 6) }}

if(op1 == 2)

if(op2 == 4 || op2 == 6)

}if(op1 == 4)

if(op2 == 5 || op2 == 6) }}

if(op1 == 5)

if(op2 == 4 || op2 == 6)

}if(op1 == 6)

if(op2 == 2 && v2 <= v1)

if(op2 == 4 && v2 > v1)

if(op2 == 5 && v2 < v1)

if(op2 == 6 && v2 != v1)

}return

true;

}bool judge(int x, int y) }}

}return

true;

}char str[101000];

int rec[1010];

bool vis[1010];

int main()

vis[i] = judge(i, i);

if(vis[i] == false)

int m = 0; bool flag = false;

for(int j = 1; j < i; j++)

}if(!flag)

else

printf("\n");}}

}return

0;}

百度之星資格賽

1001 給你1 n這n個數字,公升序排列,接下來按照陣列a進行位置變換,a i 代表第i個數字會變到a i 位置上,a中的數字也是從1 n。現在問有多少個不同的陣列能滿足做一次變換和做三次變換結果相同。我們可以這樣分析,x y是唯一的到y的途徑,假設x y為第一次變換,因此在第三次變換的時候任然為...

2023年百度之星資格賽Problem D

problem d accepts 2042 submissions 5880 度熊所居住的 d 國,是乙個完全尊重人權的國度。以至於這個國家的所有人命名自己的名字都非常奇怪。乙個人的名字由若干個字元組成,同樣的,這些字元的全排列的結果中的每乙個字串,也都是這個人的名字。例如,如果乙個人名字是 ac...

2015百度之星資格賽1001

題目名稱 大搬家 problem description 近期b廠組織了一次大搬家,所有人都要按照指示換到指定的座位上。指示的內容是坐在位置 i 上的人要搬到位置 j 上。現在b廠有 n 個人,一對一到 n 個位置上。搬家之後也是一一對應的,改變的只有位次。在第一次搬家後,度度熊由於疏忽,又要求大家...