1.給出乙個數,最多能劃分成多少素數ac
2.買票 。給出有幾個人,幾個人單獨買票的時間,每個人和錢乙個人一起買票的時間,商店08:00:00開門,輸出最早的關門時間 未ac,動態方程沒搞對
3.丟棄禮物。揹包問題。(類似力扣「最高的廣告牌」)
4.互相認可的教授有幾對。(圖,強連通分量)
1.牛牛現在有n個正整數的陣列a,牛牛可以將其中的每個數a[i]都拆成若干個和為a[i]的正整數,牛牛想知道拆後(也可以乙個都不拆)這個陣列最多能有多少個素數。
輸入描述
第一行乙個正整數n表示陣列的長度
第二行n個正整數表示a[i]的值
1 <= n <= 1e6,1 <= a[i] <= 1e9
輸出描述
拆後陣列最多的素數個數
示例1輸入
31 1 1輸出0
說明由於1不能再拆,並且1不是素數,所以拆後最多有0個素數
解法要求的是拆完的素數最多,可以理解為將每個數拆成素數最多的方案,2是最小的素數,使勁拆出2即可。
#include
using namespace std;
int main()
cout << ans << endl;
return 0;
}如輸入5,輸出2(2,3)輸入1輸出0
用了取巧的做法,分奇偶之後,偶數/2.(奇數-3)/2
int main()
dp[1] = a[0];
for (int i = 0; i < n - 1; i++)
for (int i = 2; i <= n; i++)
int hh, mm, ss;
ss = dp[n] % 60;
mm = (dp[n] / 60) % 60;
hh = (dp[n] / 3600 + 8) % 24;
bool am = true;
if (hh >= 12)
}3.現在有n個物品,每個物品都有乙個價值,現在想將這些物品分給兩個人,要求這兩個人分到的物品價值總和相同(個數可以不同,總價值相同即可),剩下的物品就要扔掉,現在想知道最少需要扔多少價值的物品才能滿足要求分給兩個人。
輸入描述
第一行輸入乙個整數t,代表有t組測試資料
對於每一組測試資料,一行輸入乙個整數n,代表物品的個數
接下來n個數,a[i]代表每乙個物品的價值
1 <= t <= 10
1 <= n <= 15
1 <= a[i] <= 100000
輸出描述
每一行輸出最少需要扔掉多少價值的物品
示例1輸入15
30 60 5 15 30
輸出20
說明樣例解釋,扔掉第三個和第四個物品,然後將第乙個物品和第五個物品給第乙個人,第二個物品給第二個人,每個人分到的價值為60,扔掉的價值為20。
解法#include
using namespace std;
const int siz=1500000;
int a[20],dp[siz+5];
int main()
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for (i = 0; i < n; ++i)
ans = sum;
for (i = sum; i >= 0; --i)
}cout << ans << endl;
}return 0;
}4.#include
using namespace std;
const int maxn = 555;
#define ll long long
int low[maxn], num[maxn], dfn, cnt;
ll ans;
int sccno[maxn];
stack st;
vector g[maxn];
void dfs(int u) else if (!sccno[v])
}if (low[u] == num[u])
ans += tmp * (tmp - 1) / 2;
}
void tarjan(int n)
}int main()
tarjan(n);
cout << ans << endl;
return 0;
}
網易2016筆試(1)
小明陪小紅去看鑽石,他們從一堆鑽石中隨機抽取兩顆並比較她們的重量。這些鑽石的重量各不相同。在他們們比較了一段時間後,它們看中了兩顆鑽石g1和g2。現在請你根據之前比較的資訊判斷這兩顆鑽石的哪顆更重。給定兩顆鑽石的編號g1,g2,編號從1開始,同時給定關係陣列vector,其中元素為一些二元組,第乙個...
網易2017內推筆試題
有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?輸入描述 每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n 1 n 50 表示學生的...
網易2017內推筆試題
如果乙個數字序列逆置之後跟原序列是一樣的就稱這樣的數字串行為回文序列。例如 是回文序列,不是回文序列。現在給出乙個數字序列,允許使用一種轉換操作 選擇任意兩個相鄰的數,然後從序列移除這兩個數,並用這兩個數字的和插入到這兩個數之前的位置 只插入乙個和 現在對於所給序列要求出最少需要多少次操作可以將其變...