随笔分类 -  日常练习

摘要:原题链接 #include<stdio.h> #include<string.h> #include<stdlib.h> const int N = 1e5+10; char a1[N],a2[N];//分别为a1和a2的字符串 int lena,lenb;//分别为a1和a2的字符串长度 //比较 阅读全文
posted @ 2022-11-19 17:20 loliconsk 阅读(74) 评论(0) 推荐(0)
摘要:原题链接 去掉负优惠限制,题目是一个普通的01背包问题,我们可以用dp[i][j]表示当选择到第 i 个食物时此时加上第 i 个食物已经吃了 j 个食物,答案为 j 从大到小枚举,当dp[x][j]<=m时为答案j,但没有题目限制j会非常大时间复杂度为O(nm) 加上题目限制后,m的最大值为1e5, 阅读全文
posted @ 2022-08-24 10:17 loliconsk 阅读(54) 评论(1) 推荐(0)
摘要:整体思路:如上图一样,从第一行第一个开始移动然后如此往复,每一次循环内部移动四次,每次一行或者一列,先向右,再向下,再向左,再向上,将这四个步骤不断循环直到所有格子全部填充完,但要考虑边界问题,每次枚举完一行或者一列行下标或者列下标会超出边界一个距离所以要减一 #include<iostream> 阅读全文
posted @ 2021-09-22 21:20 loliconsk 阅读(199) 评论(0) 推荐(0)
摘要:直接暴力区间dp,可以出来结果只是时间需要长点,需要16秒 结果:2653631372 #include<iostream> #include<cstring> using namespace std; typedef long long ll; ll f[2022][2022]; int main 阅读全文
posted @ 2021-08-14 12:46 loliconsk 阅读(272) 评论(0) 推荐(0)
摘要:#include<iostream> using namespace std; #define rep(i,a,b) for(int i = a;i<=b;i++) #define per(i,a,b) for(int i = a;i>=b;i--) char mp[35][55]; int mai 阅读全文
posted @ 2021-06-03 19:14 loliconsk 阅读(73) 评论(0) 推荐(0)
摘要:#include<iostream> #include<vector> #include<algorithm> using namespace std; const int maxn = 1e6+10; const int INF = 0x3f3f3f3f; vector<string> v; ve 阅读全文
posted @ 2021-06-03 17:38 loliconsk 阅读(86) 评论(0) 推荐(0)
摘要:#include<iostream> #include<queue> #include<cstring> using namespace std; const int maxn = 10000005; int gcd(int a, int b) { if (b == 0)return a; else 阅读全文
posted @ 2021-05-19 19:37 loliconsk 阅读(448) 评论(1) 推荐(0)
摘要:#include<iostream> #include<algorithm> using namespace std; const int maxn = 110; typedef long long ll; struct Node { long long x, y; ll gcd(ll a, ll 阅读全文
posted @ 2021-04-14 14:20 loliconsk 阅读(60) 评论(0) 推荐(0)
摘要:一直不通过难受 #include<stdio.h> #include<string.h> int site[11][11]; int x[11]; int yy[11]; void show() { for (int i = 1; i < 11; i++) { for (int j = 1; j < 阅读全文
posted @ 2021-01-29 16:17 loliconsk 阅读(64) 评论(0) 推荐(0)
摘要:能否有大佬看看用我注释掉的地方为什么是错的,哭了 #include<stdio.h> #include<string.h> int two[400005]; int eight[400005]; char six[100005]; int trans(char s)//十六进制转十进制 { if ( 阅读全文
posted @ 2021-01-28 20:27 loliconsk 阅读(128) 评论(0) 推荐(0)
摘要:附上翻译: 现给你若干个分子式需要你求分子量。 例如:C6H5OH的分子量为12.016+1.0085+16.00+1.008=94.108g/mol。 个人解法:我认为这道题的难点在于如何算出一个字母后的数字大小,我的做法是不断判断字符是否大于0小于10,直到到达一个字母,在这个过程中不断累加原子 阅读全文
posted @ 2021-01-25 19:25 loliconsk 阅读(234) 评论(0) 推荐(0)
摘要:该题的主要思路是: 设sum为总和,n为逐渐增加的阶乘,所以sum的结果是 sum+=n!,将题拆开后就变得简单,主要思路是设计一个高精度乘,放在一个高精度加的循环里,最后的出结果 需要注意代码中 a,b,c何时清空数据 代码如下: #include<stdio.h> #include<string 阅读全文
posted @ 2021-01-22 20:32 loliconsk 阅读(89) 评论(0) 推荐(0)
摘要:哈希表实现两数之和:用哈希表解决两数之和,我们可以锁定一个数,用目标值减去该数得到n,利用STL中map的count找到哈希表中是否有目标值减去该数得到的值,如果要实现这样的算法,我们需要用将key值保存为原始数组中对应的值,value保存为下标即可实现 注意的是相同的值不能重复使用,所以先判断是否 阅读全文
posted @ 2021-01-22 18:04 loliconsk 阅读(376) 评论(0) 推荐(0)
摘要:将所有志愿者的属性全部包含在struct中,然后用sort进行排序,需要谓词 代码如下: #include<iostream> #include<algorithm> using namespace std; typedef struct adf { int num; int t; int k; i 阅读全文
posted @ 2021-01-21 18:54 loliconsk 阅读(130) 评论(0) 推荐(0)
摘要:题解:该题是可以使用卡特兰数递推来解决,因为是从1到n顺序进栈的所以,定义一数组f[999],用于记录有几个数时的出栈的结果数量,当最后一个出栈的数字是x的时候,出栈的数可以分为两部分: 一部分比x大,一部分比x小 比x大就是f[n-x],比x小就是f[x-1] 当然f[0]和f[1]都是1,从2开 阅读全文
posted @ 2021-01-21 17:57 loliconsk 阅读(77) 评论(0) 推荐(0)
摘要:这道题的关键在于如何逆时针旋转和顺时针旋转,我们可以每次旋转一行,比如顺时针旋转,第一行会旋转到第三列,第二行会旋转到第二列,第三行会旋转到第一列,依次 代码如下: #include<stdio.h> #include<math.h> int f[1000][1000]; int g[1000][1 阅读全文
posted @ 2021-01-20 21:08 loliconsk 阅读(140) 评论(0) 推荐(0)
摘要:要想知道到达哪一个楼梯有多少种,需要知道到达前两个楼梯分别需要的方法数,因为可以走一阶或者两阶,所以到达该层楼梯的前一步可以走一阶也可以走两阶,因此需要知道前两个阶数的方法,所以这就是一个斐波那契数列,但是所给楼梯数较大,所以需要用到高精度加,设立一个二维数组,记录每一阶的方法数 代码如下: #in 阅读全文
posted @ 2021-01-20 17:40 loliconsk 阅读(271) 评论(0) 推荐(0)
摘要:由于题目中只有5元,10元,20元三种票值,当是10元时,只需要一张5元,当是20元时,可以用一张5元和一张10元或者可以用三张5元来找零,但更倾向于用第一种找零方法,因为5元找零的范围更广 因此我们遍历数组中的每一个数,并记录下该纸币的数量,每当需要找零是再减去对应需要的数量即可 代码如下: cl 阅读全文
posted @ 2021-01-20 09:51 loliconsk 阅读(89) 评论(0) 推荐(0)
摘要:class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { //贪心解法,用用尽量小的需求去满足孩子,所以需要先排序 sort(g.begin(),g.end()); sort(s.begin( 阅读全文
posted @ 2021-01-19 16:25 loliconsk 阅读(90) 评论(0) 推荐(0)
摘要:先判断一种皇后的放置方法,然后再去判断另一种皇后的放置方法代码如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> int queue[10]; int queueB[10]; int sum = 0; 阅读全文
posted @ 2021-01-19 11:29 loliconsk 阅读(159) 评论(0) 推荐(0)