0%

Something good & Something bad

生活总是让我这么喜欢摸鱼,也许是逃避,也许是天性

好消息是我终于有一个完整的暑假了

坏消息是全力考研的时间到了

但是我最近很长一段时间都还在摸鱼

研究怎么压片,研究怎么写代码更优雅,水各种各样的群

不知道为什么 可能是提不起劲 或是自己给自己的要求太低了

鱼 总是要摸的

但是 问题总是要解决的

阅读全文 »

920.Number of Music Playlists

题目大意

N首歌曲,总共需要演奏L次歌曲,每首歌都要被演奏过,一首歌被演奏过后K次后才可以再次演奏,求最终的方案数(mod 1e9+7).

0 <= K < N <= L <= 100

样例

1
2
3
Input: N = 3, L = 3, K = 1
Output: 6
Explanation: There are 6 possible playlists. [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1].
1
2
3
Input: N = 2, L = 3, K = 0
Output: 6
Explanation: There are 6 possible playlists. [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2, 1], [2, 1, 2], [1, 2, 2]
1
2
3
Input: N = 2, L = 3, K = 1
Output: 2
Explanation: There are 2 possible playlists. [1, 2, 1], [2, 1, 2]

分析

阅读全文 »

前言

最近有空整理了一下

写这个邀请树纯粹是一时冲动?

也许吧-.-看U2的邀请查询系统感觉挺好玩的

然后又想看Admin这棵树有多大(flag 做完发现浏览器撑不住了

然后发现自己好菜啊(

调查

主要的几个方案:

数据怎么获取:PY啊

阅读全文 »

Flood Fill

Desc:

二维格点,用数字代表颜色,选定一个点(sr,sc)进行染色,和该点直接相连的同色点且都会被染成新颜色,求最后的二维矩阵。

很简单不知道为什么我要写一篇blog(表现的自己很努力?

My_Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
int oldColor = image[sr][sc];
if (oldColor == newColor) return image;
queue<pair<int, int>> queue;
queue.push(make_pair(sr, sc));
int n = image.size();
int m = image[0].size();
while (!queue.empty()) {
int row = queue.front().first;
int column = queue.front().second;
queue.pop();
if (image[row][column] == oldColor) {
image[row][column] = newColor;
if (row != 0) queue.push(std::make_pair(row-1, column));
if (row != n-1) queue.push(std::make_pair(row+1, column));
if (column != 0) queue.push(std::make_pair(row, column-1));
if (column != m-1) queue.push(std::make_pair(row, column+1));
}
}
return image;
}
};
阅读全文 »

Maximum Length of Repeated Subarray

Desc: 给出两个字符串求两串最大公共子串的长度

DP:

dp[i][j]代表了以a[i]b[i]为起点的的字符串的最大公共子串的长度

那么dp[i][j] = a[i] == b[j] ? 1 + dp[i + 1][j + 1] : 0

考虑利用“滚动数组优化”可以降低一维

My_Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
int findLength(vector<int>& a, vector<int>& b) {
int m = a.size(), n = b.size();
if (!m || !n) return 0;
vector<int> dp(n + 1);
int res = 0;
for (int i = m - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
res = max(res, dp[j] = a[i] == b[j] ? 1 + dp[j + 1] : 0);
}
}
return res;
}
};
阅读全文 »

其实没做过LeetCode的 contest

url: https://leetcode.com/contest/leetcode-weekly-contest-14

今天头疼就virtual一场结果脸比较好 抽到的题很简单….

Score 3:

Number Complement : 简单的把一个数二进制下0换成1 1换成0

xjb写 由于人比较蠢不会用位运算就全算出来了

My_Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
int findComplement(int num) {
vector<int>q;
while(num){
q.push_back(num%2);
num/=2;
}
int ss=q.size();
for(int i=ss-1;i>=0;i--){
if(q[i]==1) q[i]=0;
else q[i]=1;
}
int ans=0;
for(int i=ss-1;i>=0;i--){
ans*=2;
ans+=q[i];
}
return ans;
}
};

Score 6:

阅读全文 »

LeetCode 898. Bitwise ORs of Subarrays

Desc:

有一个非负整数数组a,对所有整数对(i,j)求 a[i]|a[i+1]|a[i+2]…a[j] 的值(|为按位或),求共有多少个不相等的值
$$
1\le a.length() \le 5000
$$

$$
0 \le a[i] \le 10^9
$$

My_Ans:

n^2裸题 冲冲冲

设b(i,j)=a[i]|a[i+1]….|a[j] 用一个set now保存b(0,i),b(1,i),b(2,i)

然后每次处理到a[i+1]的时候 把now里的所有项和a[i+1] 按位或一下

然后把a[i+1]添加到now里

阅读全文 »

LeetCode 857. Minimum Cost to Hire K Workers

Desc:

N个worker,每个worker有quality和wage,你需要雇佣K个worker,这K个worker之间的real wage比例和quality比例相同,且real wage不小于wage。
$$
1 \le K ,N \le 10000

1\le quality,wage\le10000
$$
答案允许有10^-5的误差

My_Ans:

冷静分析,首先 worker之间严格按照比例发real wage 且
$$
real wage[i]\ge wage[i]
$$
定义
$$
ratio[i]=wage[i]/quality[i]
$$
假设已经选出了K个worker,那么这个standard worker就需要设置为ratio最大的那个worker

否则会有worker的real wage<wage。

因此对于每个standard worker 我们需要找出k-1个ratio小于它的worker,而且K个worker的
$$
totalwage = ratio* \sum_{n=1}^K{quality}
$$
按照ratio对worker从小到大排序,枚举第i个worker作为standard worker

所以第0~第i-1个worker均为满足ratio满足要求的,然后需要找出K-1个quality最小的即可

阅读全文 »

不知不觉2018过去了

本来打算12.31写的 然而咕咕了

现在还打算继续咕咕

先写2019目标(笑

希望自己考研顺利

PT继续佛系刷

有钱组NAS

换个显示器

其他东西不要坏(瘫

阅读全文 »