思路
背不过单词选手
彼方尚有荣光在
展开
-
L2-022 重排链表 ( 模拟
题目链接解题思路:模拟题 用结构体存 数据 和 下一个结点地址然后 用 while 循环遍历 把最初的链表顺序存下来然后再根据题目要求 重新排序代码如下:#include<iostream>#include<algorithm>using namespace std;const int maxn=1e5+10;int b[maxn];int c[maxn];struct node{ int d; int next;}...原创 2020-11-17 18:01:37 · 136 阅读 · 0 评论 -
CF 1404A. Balanced Bitstring
题目链接题目大意:给你一个 01 字符串 长度为n 其中有 ? 字符? 字符可以变成 1 或 0 要求是否可以将字符串变完后 任意 长度为 k 的子串中的 0 和 1 的个数相等解题思路:长度为 k 的子串相等 即从 a[0] 到 a[k-1] 这个子串开始 下一个子串 是 a[1] 到 a[k]假设 k=3第一个子串是 a[0] a[1] a[2]第二个子串是 a[1] a[2] a[3]会发现 除了 a[0] 和 a...原创 2020-11-16 20:24:19 · 113 阅读 · 0 评论 -
L2-017 人以群分
题目链接解题思路:要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。题目要求规模尽可能近 差值还要尽可能拉开 就sort一下 对半分就好了代码如下:#include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const int maxn=1e5+10;ll a[maxn];int main()..原创 2020-11-11 20:14:12 · 107 阅读 · 0 评论 -
L2-014 列车调度 (set的应用
题目链接解题思路:能走就走 不能走就得把它放到平行的轨道上所以 一个不能走的车 放轨道时 要选择 有比这个车的编号大的车的轨道放车 如果所有的轨道上的车的编号都比这个车的编号小那就开个新轨道简而言之 只需要记录每个轨道中最小的编号然后当前编号去与每个轨道的最小编号比较 如果没有大于它的 那就开个新轨道 如果有 那当前编号就变成了那个轨道中的最小编号说到这 就回想到 set 我们可以用 set 去存放每个轨道的最小编号代码如下:#include<...原创 2020-11-08 20:51:58 · 122 阅读 · 0 评论 -
codeforces 1417C k-Amazing Numbers
题目链接题目大意:定义 一个序列的k 数 为 出现在序列所有长度为k的子区间内的最小数,如没有数出现在所有长度为k的子区间内,则k数为−1。给出一个序列,求出对于k∈[1,n]的每一个k数代码如下:#include<iostream>#include<vector>using namespace std;const int maxn=3e5+10;const int inf=0x3f3f3f3f;int a[maxn]...原创 2020-11-08 20:02:09 · 117 阅读 · 0 评论 -
L2-008 最长对称子串
题目链接解题思路:就相当于找 最长回文串回文串有两种: 1.奇数长度 2.偶数长度然后两种情况都暴力求一下 取最大值就可代码如下:#include<iostream>using namespace std;int main(){ string a; int i,j,x,y,s; int maxx=1; int ans=0; getline(cin,a); s=a.size(); for(i=0;i<s-1;i++) ...原创 2020-11-04 20:28:57 · 85 阅读 · 0 评论 -
Codeforces 1437B Reverse Binary Strings 字符串翻转
题目链接题目大意:给你一个 01 字符串 可以翻转子串 问 最少翻转几次可以 得到 01 交替的字符串解题思路:只要存在连续的(无论 01 ) 都要把它们翻转下 然后把 0 和 1 的统计下 选择最大值代码如下:#include<iostream>#include<algorithm>using namespace std;typedef long long ll;string a; int main(){ int t;...原创 2020-10-28 19:51:54 · 382 阅读 · 0 评论 -
Codeforces 1437A Marketing Scheme 买猫粮
题目链接题目大意:卖猫粮的把 a 罐打包在一起以折扣价卖 这样 想买 x 罐的顾客就会先以折扣价买 x/a 个大包 然后再以原价一罐一罐的买 x%a 罐然后顾客也不傻 只要 x%a >= a/2 他就不用折扣价买 就直接买 一包 即 a 罐 这样老板就高兴了 因为卖出去的更多了 问 是否存在打包方式可以卖出去更多解题思路:一开始没读懂题 怪不得六级过不了啊...a 罐 a 罐的打包 [ l ,r ] 的范围 a 肯定是大于 r的...原创 2020-10-28 19:03:36 · 265 阅读 · 0 评论 -
Codeforces 1433D Districts Connection
题目链接题目大意:一个镇上有 n 个区 一个区里有一个土匪窝 最初的时候 没有区是相互连接的然后要 建 n-1 条道路来连接所有的区 (两个区域可以直接相连也可以通过其它连接的区域相连)但是 同属一个土匪窝的区不能直接相连输出 可以构建的道路解题思路:直接在输入的时候 判断和第一个区 不在同一个土匪窝的是哪个区 标记为 K如果输入完毕后 没有找到那个区 说明 所有区都是同一个土匪窝 输出 NO否则就再遍历一遍 如果和第一个区不一个土匪窝 就在两个区之间修...原创 2020-10-22 16:12:58 · 211 阅读 · 0 评论 -
Codeforces 33C Wonderful Randomized Sum
题目链接题目大意:一个数字序列 可以选择它的一些前缀或后缀中的每个数字都乘以 -1前缀和后缀可以交叉也可以为空问能得到的最大序列和是多少解题思路:前缀和为 A 后缀和为B 那么中间的就是 C总和为 SS=A+ B + C所求等于 -(A+B)+C == -(S-C)+C == 2*C - S所以求中间的最大和就行了代码如下:#include<iostream>using namespace std...原创 2020-10-20 21:19:06 · 146 阅读 · 0 评论 -
Codeforces 898D Alarm Clock
题目链接题目大意:n个闹钟 每个闹钟在第 ai 分钟响起并持续一分钟。如果在连续的m分钟内有至少k个闹钟响起,那么你就必须起床。现在为了不用起床,要求关闭最少的闹钟的数量。解题思路:贪心代码如下:#include<iostream>#include<algorithm>using namespace std;const int maxn=2e5+10;int a[maxn];int b[maxn];int m...原创 2020-10-18 20:59:43 · 158 阅读 · 0 评论 -
Codeforces 1175D Array Splitting
题目链接题目大意:解题思路:思维题 化简一下式子 再排序前缀和前缀和代码如下:#include<iostream>#include<algorithm>using namespace std;const int maxn=3e5+10;int a[maxn];long long sum[maxn];int main(){ int n,i,k; long long ans=0; cin>>n>>k; ...原创 2020-10-18 19:46:30 · 164 阅读 · 0 评论 -
2019年蓝桥杯 省赛 c++ B组 ----后缀表达式
题目链接解题思路:首先要知道 后缀表达式是什么后缀表达式 没有括号 但是是可以使用括号的 括号和符号的位置也是可以随意摆放所以 加法 和 减法 可以因为括号的摆放随意切换 (前提是存在减号当减号不够的时候 把加号放在括号中 就都成减号了所以只要存在 至少一个减号 (n个加号 m个减号 )那么减号的数量可以 在 1 和 n+m 中取任意一个 (括号的作用所以在这个题中 分为两类一、 m=0 即 没有减号 那就正常相加二、m != 0 统计负数的个数...原创 2020-10-14 20:17:28 · 258 阅读 · 0 评论 -
Codeforces 43C Lucky Tickets
题目链接题目大意:给你 n 个数 每两个 合成一块 要求整除3 问 最多合成几个?解题思路:官方说是贪心题 但是有更简单的做法把所有的数 % 3 余数可以为 0 1 2 余数为 0 的两两合并 余数为 1 的和余数为 2 的合并妙噢代码如下:#include<iostream>using namespace std;const int maxn=1e4+10;int a[maxn];int main(){ in...原创 2020-10-12 20:16:23 · 140 阅读 · 0 评论 -
Codeforces 66D Petya and His Friends
题目链接题目大意:让你找 n 个不相等的 正数,它们的 最大公约数为 1,但是 任意两个之间的最大公约数不为 1解题思路:在纸上划拉了半天 倒是划拉出出 2 3 5 来了 最后没构造成 太笨啦太笨啦直接 2*3 2*5 3*5 往后都是 2*3*5的倍数就行啦代码如下:#include<iostream>#include<cstring>#include<algorithm>#include&...原创 2020-10-12 19:53:43 · 141 阅读 · 0 评论 -
Codeforces 55C Pie or die
题目链接题目大意:n * m 的棋盘,有 k 个棋子,先手每次可以移动相邻(上下左右)的棋子,把棋子移到棋盘外就获胜后手每次可以封锁一条边,封锁后就不能从这条边移动到棋盘外了问先手能否获胜解题思路:画一画发现 ,四个角的格子会比其它格子多一条边 两个人都足够聪明 先手肯定要先往四个角跑 那后手肯定先堵住四个角的每个角的一条边 所以 先手可以在 4步之内到达一个边界 这样必赢的代码如下:#include<iostream>using ...原创 2020-10-11 12:31:02 · 104 阅读 · 0 评论 -
Codeforces 23C Oranges and Apples
题目链接题目大意:在 2 * n -1 个盒子里,有 苹果 和 橘子 ,每个盒子 从 1 开始编号 , 让你挑选 n 个盒子,并且里面的苹果数量不少于总苹果的数量,橘子的数量也不少于总橘子的数量解题思路:一开始我写了两个排序。。。然后 wa2 了 ,看了题解,哦,思维题把 苹果 从小到大 排序,然后排完序后的奇数位置的苹果 一定是 大于偶数 位置的 苹果的比如 a[1] + a[3] + a[5] > a[2] + a[4]因为 a[5] > a...原创 2020-10-10 20:23:39 · 145 阅读 · 0 评论 -
2016 年蓝桥杯 c++ B 组 -----方格填数
题目链接题目大意:填数字,连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?解题思路:自己用 dfs 没写出来看题解 发现了一种有意思的写法 全排列 好机智噢代码如下:#include<iostream>#include<algorithm>using namespace std;int a[10];bool f(int x,int y){ if(abs(a[y]-a[x])==1) ...原创 2020-10-09 20:01:49 · 144 阅读 · 0 评论 -
Codeforces Round #654 (Div. 2) 1371B
题目链接题目大意:给你一个 n ,一个 r ,涂日历,连续涂 n 天,涂日历的时候,日历一行的天数有 k 天,1<= k <= r ,k 在 1 - r 中任取,问,涂出来的形状有几种是不同的。解题思路:想象一下,涂日历是从左往右涂,一行涂完开始涂下一行,假如 k = 7,即一周有7天,那么 你在第一个格子中开始涂 是一种形状,在第二个格子开始涂也是一种,第三个开始是一种 ...... 到第7个开始是一种。即一周有 k 天,就会有 k 种不同的形状。但是!!!这个的前提是 连..原创 2020-07-02 22:01:38 · 120 阅读 · 0 评论 -
codeforces 1373D
题目链接题目大意:给你一个数组(下标从0开始)最多旋转一个子数列问所有可能中偶数位置上的元素和的最大值解题思路:翻转无非是倒置 即偶变奇 奇变偶 但是区间里面是数字是不会变化的 数还是那些数 只是位置变了所以我们只需遍历数组 更新奇数下标减去偶数下标的最大和 有两种情况a[1]-a[0] a[3]-a[1] .......a[1]-a[2] a[3]-a[4] ......最后加上原本的偶数位置的元素和就行代码如下#in...原创 2020-06-27 12:00:27 · 182 阅读 · 0 评论 -
暴力出奇迹
题目链接解题思路:范围还好,之间枚举更新最大值,注意的是与运算,同一则1,否则为0,且在乘法中,乘0结果为0,代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<stack>using namespace std;typedef long long ll;cons原创 2020-06-10 22:53:25 · 152 阅读 · 0 评论 -
论如何出一道水题
题目链接链接:https://ac.nowcoder.com/acm/contest/5986/A来源:牛客网题目描述给定 n,求一对整数 (i,j),在满足 1 ≤ i ≤ j ≤ n 且 gcd(i,j)=1 的前提下,要求最大化 i+j 的值输入描述:第一行一个整数 n输出描述:一行一个整数表示答案示例1输入复制2输出复制3备注:数据范围1 ≤ n ≤ 1018解题思路:gcd(i,j)=1 那么 i、j一定互..原创 2020-06-10 22:47:45 · 283 阅读 · 1 评论 -
2020 年 “联想杯”全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛(5.30)
A题链接题目大意:大法师蓝量上限为 n ,每秒可以花费 x 释放一次技能,每秒 会自动回蓝 y 点,后结算回蓝,问 m 秒内能最多放几次技能原创 2020-05-30 22:45:24 · 230 阅读 · 0 评论 -
cf1332
A题链接题目大意:给你一个a,b,c,d,分别代表向左走a步,向右走b步,向下走c步,向上走d步,而且你走的每一步都不能超过[x1,y1],[x2,y2]解题思路:左右的话可以左右各抵消一步,最后多出来的去判断是否超过范围,上下一样,需要特判一种情况就是给你的范围的x1=x2=x,y1=y2=y;因为−108≤x1≤x≤x2≤108,−108≤y1≤y≤y2≤108,题目中B题链接...原创 2020-04-02 22:52:32 · 170 阅读 · 0 评论 -
牛客练习赛60
A题A题链接看到1e5就两个for循环暴力了...然后超时了..首先,我们把样例换成二进制 ,就变成了0 0 10 1 00 1 11 0 01 0 1和在for循环里面一样,每一行中的1(也就是每个数字中的1)都与自己所在的列中的1(包括自己)进行了一遍&运算也就是这一列中1的个数的平方最后记得转换为十进制代码如下#include<ios...原创 2020-03-29 21:33:23 · 98 阅读 · 0 评论 -
牛客小白月赛22
D题题目链接解题思路:直接暴搜,因为只有10个卡片嘛10 所以最多计算 10*10!次,直接枚举全排列算就可以了#include<iostream>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;int x[22],y[22],c[22];int main(){ int t...原创 2020-02-23 20:14:06 · 179 阅读 · 1 评论 -
河中跳房子(二分
每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一块岩石跳到另一块岩石。这项激动人心的活动在一条长长的笔直河道中进行,在起点和距离起点 L 远的终点各有一块岩石 (1 ≤ L ≤ 10^9)。在起点和终点之间,有 N 块岩石 (0 ≤ N ≤ 50000),每块岩石与起点的距离分别为 Di (0 < Di < L)。在比赛过程中,奶牛轮流从起点出发,尝试到达终点,每一步只能从...原创 2020-02-22 23:49:50 · 1061 阅读 · 0 评论 -
uva679树
题目大意有一个深度为d的树 一个小球从根节点往下落 每个节点都有开关 而且一开始都是关闭状态 当小球落到这个节点上 它的状态才会改变 然后当小球到达一个节点时,如果是关闭就往左走,如果是开的就往右走 问 给你一个数n 问你这第n个球会落在哪个节点上解题思路首先我们要知道父亲节点 是 n 的话,左子节点就是2n 右子节点是 2n+1;本题中 根节点是1 那它左子节点就是...原创 2020-02-19 15:36:38 · 104 阅读 · 0 评论 -
uva12657(双向链表
题目大意:给你N个盒子,分别标号为1~N;有下面4种操作:“1 X Y” 表示将X移到Y的左边;“2 X Y” 表示将Y移到Y的右边;“3 X Y” 表示交换X与Y的位置;“4” 表示将1~N所有的盒子反序。要你求经过M次操作之后,所有奇数位置的盒子标号之和。解题思路大体的说一下 代码里有详细注释当n是奇数时,操作4逆序不会影响奇数位置盒子标号之和当n是偶数时,操作4逆序就...原创 2020-02-19 15:21:21 · 259 阅读 · 1 评论 -
四个数和为0(二分
题目给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。Input第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:Ai(-10^9 <= Ai <= 10^9)Output如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。Sample Input5...原创 2020-02-16 23:17:19 · 557 阅读 · 0 评论 -
hdu6186
题目链接题目大意给出n个数,共有n次询问,每次询问给出一个数p,求除去第p个数后的n-1个数的&、|、^值解题思路直接维护前缀和 后缀和代码如下#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=1e5+10;...原创 2020-02-16 18:05:39 · 160 阅读 · 0 评论 -
cf 755A
题目链接题目大意给你一个整数n 让你求m 使得 n*m+1 不是素数解题思路大部分题解都是简单筛素数,看了一篇 我靠 那还能这样呢完全平方公式:nn+2n+1 = n*(n+2) +1这不就直接让m等于n+2不就行了但是!n是<=1000的 m也是M=1000的 当n=1000的时候 m=1002会超过范围 这个时候让m=n-2 反正也是完全平方公式代码如...原创 2019-11-28 20:24:49 · 459 阅读 · 0 评论 -
cf 1251B
题目链接戳戳题目大意给你一些01字符串 可以交换任意两个串的一个字符 问:能够得到多少的字符串解题思路一开始都没有绕出来如果字符串长度为奇数的话:都可以构成回文串 不用交换就行如果字符串长度为偶数的话:如果0为偶数 1也为偶数 不用交换也可以构成字符串但如果0为奇数 1 也为奇数的话 需要交换 也行但是!如果所有的字符串都是偶数长度并且0为奇数 1也为奇数 那么必定有一...原创 2019-11-10 21:03:08 · 132 阅读 · 0 评论 -
cf 1203C
题目链接#include<iostream>#include<algorithm>#include<cmath>using namespace std;long long gcd(long long a,long long b){ long long c; while(b>0) { c=a%b; a=b; b=c; } r...原创 2019-10-30 20:51:01 · 140 阅读 · 0 评论 -
cf 1033B
题目链接解题思路面积=aa-bb=(a+b)*(a-b)素数乘素数素数乘合数合数乘合数全部都等于合数所以只有(a+b)等于素数 (a-b)等于1的时候 它们的乘积才等于素数质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数。合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。简单来说,一个数只能被1或它本身整除就是质数,否则就...原创 2019-10-29 19:58:36 · 314 阅读 · 0 评论 -
cf670C
题目链接一开始以为科学家会的语言只是字幕语言 哪个音频语言是他们的母语。。。然后怎么也出不来样例 太沙雕了#include<bits/stdc++.h>#include<algorithm>using namespace std;const int maxn=200005;int a[maxn],b[maxn];int c; map<long long...原创 2019-10-24 19:41:40 · 156 阅读 · 0 评论 -
最大连续子序列和
题目链接一开始想成了最大连续上升子序列 然后和一直为0 最后仔细读了一遍题目才发现不是上升的白白浪费了好多时间听说是典型的动态规划没有用状态转移 觉得那样太麻烦了设一个ans=-maxn,xx等于1 y=n 如果和小于0了 记录下下一个位置xx来 sum变为0 如果sum>ans 就记录下当前位置y来 x(起始点)等于xx#include<iostream&g...原创 2019-10-17 16:13:44 · 106 阅读 · 0 评论 -
构造思维题
题目大意有n个名字,如果连续的k个中有重名,那么就是NO,否则是YES。现在给出n-k+1个连续的YES和NO序列,要求给出一种符合要求的n个名字解题思路如果是YES的话,那么这k个名字肯定是不同的,如果是NO的话,为了对YES不产生影响,那么就让第i个名字和第i+k-1个名字相同即可。代码如下#include<bits/stdc++.h>using namespace ...转载 2019-05-03 19:49:10 · 142 阅读 · 0 评论 -
石头
题目大意有n堆石子排成一排,第i堆石子有ai个石子。每次,你可以选择任意相邻的两堆石子进行合并,合并后的石子数量为两堆石子的和,消耗的体力等价于两堆石子中石子数少的那个。请问,将所有的石子合并成一堆,你所消耗的体力最小是多少 ?解题思路既然有n个元素,则需要合并n-1次,所以把所有的加起来减去最大的那个就可以了不贴代码了...原创 2019-05-06 19:35:19 · 182 阅读 · 0 评论 -
买书(贪心
题目大意有个人很有钱,给他一列书他会按照顺序购买直到钱不够为止。现在给定n本书和他能购买的最多数m。求他最多有多少钱。解题思路有些细节需要注意,买书时是从做往右买,能买就买,不能买就跳过,去买下一本,有三种解题思路:1.m==n时,有钱,输出“Richman"2.当所有书的价钱是零的个数大于m时,是不能最多买m本的,不要白不要啊3.还是那句,不要白不要,一开始已经统计了0的个数,然后...原创 2019-05-14 21:03:42 · 235 阅读 · 0 评论