思维
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
赛码网 Manager 最后录取多少人
赛码网 Manager 最后录取多少人原创 2023-04-04 00:38:43 · 457 阅读 · 1 评论 -
LeetCode 775. 全局倒置与局部倒置 归并排序 思维
leetcode 755原创 2022-11-16 20:16:33 · 71 阅读 · 0 评论 -
PAT甲级 1148 Werewolf - Simple Version (20分) 狼人杀(简单版) 暴力枚举
PAT甲级 1148 Werewolf - Simple Version (20分) 狼人杀(简单版) 暴力枚举 题解: 总共有两个狼人。 题目说的很明显,说谎的肯定一个是狼人,一个是村民。 所以我们只要暴力枚举那两个狼人即可,然后计算说谎的人数,当这个人数等于2且一个是狼人一个是村民时,就可以输出答案了。 若没有答案,则输出“No Solution” 代码如下: #include<i...原创 2020-03-07 21:43:00 · 381 阅读 · 0 评论 -
PAT甲级 1128 N Queens Puzzle 判断给出的图是否满足n皇后问题 思维
代码如下: //思维 #include<iostream> #include<vector> #include<cmath> using namespace std; int k; int main(){ cin>>k; int n; for(int p=0;p<k;p++){ bool flag...原创 2019-11-15 23:55:52 · 198 阅读 · 0 评论 -
PAT甲级 1125 Chain the Ropes 思维
代码如下: //简单思维 #include<iostream> #include<algorithm> using namespace std; int n; int a[10005]; int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } ...原创 2019-11-15 23:49:52 · 128 阅读 · 0 评论 -
PAT甲级 1117 Eddington Number 思维
题目大意: 给出n个数代表Eddington每天跑步的里程数,我们要找出一个最大的数E,使得Eddington在n天中有大于等于E天跑步的里程数超过E。 思路: 数组cnt[i]保存每英里的天数,然后从前加到后,这时数组里保存的就是里程数小于等于i公里的天数。里程数大于N的天数一律视作里程数N+1.然后用cnt[N+1]-cnt[i]得到里程数大于i英里的天数,与i作比较即可。时间复杂度为O(N...原创 2019-10-21 14:40:25 · 207 阅读 · 0 评论 -
PAT甲级 1113 Integer Set Partition 思维
题目大意: 给出n个正整数,我们要把它们分成两部分,个数记为n1和n2,我们要在使|n1-n2|尽可能小的情况下,使|sum1-sum2|尽可能大,sum表示这部分所有数之和。 思路: 排序即可。 代码如下: #include<iostream> #include<algorithm> #include<math.h> using namespace std...原创 2019-10-21 14:17:03 · 159 阅读 · 1 评论 -
PAT甲级 1112 Stucked Keyboard 思维+map
题目大意: 给出一个正整数k,再给出一个字符串,若这个字符串中的某个字符总是连续出现k(1<k<=100)个,则这个字符是“坏”的,我们需要在最后输出所有“坏”的字符,然后输出正确的字符串,也就是只保留一个“坏”的字符。 代码如下: #include<iostream> #include<string> #include<map> #includ...原创 2019-10-21 14:13:02 · 157 阅读 · 0 评论 -
PAT甲级 1101 Quick Sort map+思维
Solution: 题目大意:给出一个n个数的序列,n个数都不同,根据快速排序的原理,我们需要选取主元pivot,在pivot左边的元素小于等于pivot,在pivot右边的元素大于等于pivot。我们要求出在这个序列中可以选取多少个主元,并将它们升序打印。 假设输出的序列为a[],我们将它升序排列后得到序列b[],并用两个map m1,m2分别记录每个元素在a和b中的位置,再遍历序列,若m1...原创 2019-09-30 20:53:46 · 152 阅读 · 0 评论 -
PAT甲级 1104 Sum of Number Segments 找规律
Solution: 题目大意:给出一个序列,我们要计算所有段的和。 我们只要列出所有的段,就可以找出规律。例如0.1, 0.2 , 0.3, 0.4 我们有: 0.1 0.1 0.2 0.1 0.2 0.3 0.1 0.2 0.3 0.4 0.2 0.2 0.3 0.2 0.3 0.4 0.3 0.3 0.4 0.4 ...原创 2019-09-30 20:04:32 · 135 阅读 · 0 评论 -
PAT甲级 1105 Spiral Matrix 输出螺旋式矩阵
Solution: 题目大意:给出一个序列,需要将其从大到小排序,然后以m x n的矩阵形式输出,要求是顺时针旋转,并要求m和n的差值最小且m>=n。 依次向右、向下、向左、向上填充即可。 代码如下: //输出螺旋式矩阵 #include<iostream> #include<iomanip> #include<math.h> #include<a...原创 2019-09-30 19:53:09 · 182 阅读 · 0 评论 -
PAT甲级 1037 Magic Coupon 排序+遍历
Solution: 题目要求:有Nc种优惠券和Np种商品,若优惠券是正数,商品的价格也是正数,则消费者可以得到两者乘积的金钱;换言之只要优惠券与商品的乘积是正数,则消费者可以得到两者成绩大小的金钱,否则,若为负数,消费者就要向商家支付优惠券与商品乘积绝对值的金钱,问消费者最终能得到的最大金额。 将优惠券、商品价格分别进行从小到大的排序,从前往后 进行负数的乘积相加,从后往前进行正数的乘积相加...原创 2019-08-31 15:45:23 · 159 阅读 · 0 评论 -
PAT甲级 1049 Counting Ones 巧妙统计1的个数
Solution: 题目要求:要求很简单,给出一个数n(n<=2的30次方)。 2的30次方大概是1073741824,而int最大为2147483647,所以不会超出int。 求1~n之间的所有数中1出现的次数。 我们可以把一个数分为left,current,right三个部分,即left=数字N在i位左侧的数字、current=数字N在第i位的数字、right=数字N在i位右侧的数字...原创 2019-08-31 20:16:32 · 206 阅读 · 0 评论 -
PAT甲级1059 Prime Factors 质因数分解+线性筛素数
Solution: 题目要求:要求对一个long int型正整数进行质因数分解。 用线性筛素数的方法。 代码如下: //质因数分解+线性筛素数 #include<iostream> #define MAX 1000010 using namespace std; long n;//判断的数n bool isprime[MAX]; int ans[MAX];//存储质数的个数 ...原创 2019-09-01 11:08:19 · 209 阅读 · 0 评论 -
PAT甲级 1065 A+B and C (64bit) 巧妙利用溢出
Solution: 给出三个数a,b,c,都是long long int型整数,判断a+b是否大于c。 利用long long溢出就可以了。 代码如下: //高精度a+b 巧妙利用溢出 #include<stdio.h> #include<iostream> using namespace std; int main(){ int n; bool flag; cin...原创 2019-09-01 14:03:16 · 158 阅读 · 0 评论 -
PAT甲级 1089 Insert or Merge
代码如下: //模拟插入排序和归并排序 #include<iostream> #include<algorithm> #include<vector> using namespace std; int n; vector<int>init;//初始的数组 vector<int>goal;//当前的数组 vector<int&g...原创 2019-09-07 23:46:28 · 147 阅读 · 0 评论 -
PAT甲级 1152 Google Recruitment
Solution: //在一个长度为L的字符串中找到长度为k的素数 #include<iostream> #include<string> using namespace std; int l,k; int a[1005]; bool judge(int num){ for(int i=2;i*i<=num;i++){ if(num...原创 2019-09-07 23:41:27 · 198 阅读 · 0 评论 -
PAT甲级 1093 Count PAT's 思维
Solution: 题目大意: 给出一个字符串s(只包含“P"“A”"T”),输出这个字符串包含多少个“PAT”。 我们可以记录所有"A"出现的位置。同时用两个数组num_p,num_t记录每一个位置前面出现的“P”的个数以及每一个位置后面出现的"T"的个数。 我们再根据记录的所有“A”的位置i,res+=num_p[i] * num_t[i]。 代码如下: //思维 #include<i...原创 2019-09-11 00:34:10 · 164 阅读 · 0 评论 -
PAT甲级 1096 Consecutive Factors 思维 找出连续因子的最大个数
Solution: 题目大意:给出一个正整数n,求n的连续因子的最大数,并输出这些连续因子。 令m = sqrt(n)+1,凡是大于m的数都不可能是n的连续因子,所以只用考虑到m即可。 然后我们暴力遍历,记录first和len即可。 代码如下: //思维 #include<iostream> #include<algorithm> #include<math.h&g...原创 2019-09-12 22:08:05 · 177 阅读 · 0 评论 -
PAT甲级 1029 Median 寻找中位数
Solution: 这道题的意思是,给出两个递增的数组,它们的个数为n1、n2(n1、n2<200000),求出这两个数组的中位数,即将它们合并后(仍然递增)后的数组的中位数。 中位数 mid =(n1+n2+1)/2 一种方法是将这两个数组读入到一个数组中,再进行排序,最后直接取中位数即可,但这种方法不能通过全部测试点。 方法一: #include<iostream> #in...原创 2019-05-17 00:40:09 · 242 阅读 · 0 评论