思维题
Biang-Biang
干巴得
展开
-
Codeforces Round #842 (Div. 2) Editorial
codeforces原创 2023-01-06 17:12:15 · 366 阅读 · 0 评论 -
Build Tree (HDU 6533)
题目:Build Tree思路:类似于哈夫曼树的贪心想法,先将消耗大的离根更近一些,当计算当前边权时,统计它下面的所有子节点数再加上它本身,就是这条边在所有子节点到根节点的路径上出现的数目#include<iostream>#include<algorithm>#include<cstdio>#include<cmath> using namespace std;typedef long long LL;const int N=2e5+5;i原创 2021-03-08 08:52:53 · 293 阅读 · 0 评论 -
B. RPG Protagonist
题目链接:https://codeforces.com/contest/1400/problem/B/* 两个人容积 p f 物品数量 cnts cntw 物品体积 v1 v2 问两人最多带走的物品数量 思路:假设只有一个人尽量带体积小的,若还有剩余则带体积大的 两个人: if (两人都带体积小的还不能带完) 那么只带体积小的,带体积大的也浪费空间 else 两人必须把体积小的都带完,带小的肯定比大的省空间 (证明:假设不把小的带完,而带了大的是最优原创 2021-01-24 11:23:20 · 176 阅读 · 0 评论 -
B - RPG Protagonist
题目:http://codeforces.com/contest/1400/problem/B提炼:两个人容量分别为p,f 装两种物品 体积分别为s,w 两物品数量分别为cnts,cntw; 给出以上数据,求两人最多装物品的数目题解:贪心 先装体积小的物品 最终达到 p 装了 a个s,b个w; f 装了 c个s,d个w;a+b+c+d为最大值#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);...转载 2020-08-27 16:07:30 · 182 阅读 · 0 评论 -
区间问题 (贪心)
区间选点题目:给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。(位于区间端点上的点也算作区间内)1.按区间右端点排序2.记录最右端所选的点(初始为 -2e9) 若当前区间左端点大于最右端点,则res++,将当前区间的右端点更新为最右端点#include<iostream>#include<algorithm>#include<cstdio>using namespace std;.原创 2021-01-11 23:38:29 · 476 阅读 · 0 评论 -
标题:明码
标题:明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16行,布局是: 第1字节,第2字节 第3字节,第4字节 .... 第31字节, 第32字节这道题目是给你一段多个汉字组成的信息,每个汉字用32个字节表示,这里给出了字节...转载 2020-09-17 09:24:24 · 206 阅读 · 1 评论 -
日志统计(双指针)
题目:https://www.acwing.com/problem/content/1240/思路:按时间顺序排序日志;从前往后遍历,当时间差≥\geq≥d时,就让时间段的左端点对应日志数−−--−−,伪代码如下for(i=0,j=0;i<n;i++){ while(时间差>=d) { cnt[id_j]--; j++; //左指针右移 } if(cnt[id_i]>=k) 标记id_i为热帖}y总的代码:#include<iostream>#i原创 2020-11-05 07:46:40 · 830 阅读 · 0 评论 -
递增三元组
标题:递增三元组给定三个整数数组A = [A1, A2, ... AN],B = [B1, B2, ... BN],C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, k) 满足:1. 1 <= i, j, k <= N 2. Ai < Bj < Ck 【输入格式】第一行包含一个整数N。第二行包含N个整数A1, A2, ... AN。第三行包含N个整数B1, B2, ... BN。第四行包含N个整数C1, C2, ....原创 2020-09-17 21:06:17 · 116 阅读 · 0 评论 -
A. Kirill And The Game+数组元素的目标和 (双指针)
题目链接:https://codeforces.com/contest/842/problem/A题意:给出两个升序数组和一个k,求数组元素的比值是否能等于K思路:两个指针同时指向两个数组,根据与K的比较移动指针#include<iostream>#include<algorithm>#include<cstdio>using namespace std;double l, r, x, y, k;const double epl=1e-8;int mai原创 2021-01-25 22:23:04 · 99 阅读 · 0 评论 -
C. Good Subarrays+K倍区间(对前缀和思想的妙用)
参考大佬的思路发现能更清晰解决蓝桥杯的问题:女少口阿链接:C. Good Subarrays题意:给出一个0~9的字符串,求出任意字串和与字串长度相等的字串数目。思路:若字符为1自身就满足一个字串若为2—9,任意值其后就要跟1—8个0才能满足这个字串和和长度相等所以这里把0看作-1,把1看作0,把2—9看作1—8记录每个前缀和出现的次数思想:若1–i前缀和为3, 1—i+k1i+k_1i+k1的前缀和也为3,1—i+k2i+k_2i+k2的前缀和也是3……那么i+1—i+k1i+原创 2021-01-25 13:25:11 · 127 阅读 · 0 评论 -
CF1397B Power Sequence
题目链接:https://codeforces.com/contest/1397/problem/B思路:枚举从1开始枚举c的值,当发现耗费变大,及跳出输出最小的即为答案耗费变大即跳出的证明:假设第n项耗费:cost<(cn−1)∗cc−1cost<\frac{(c^n-1)*c}{c-1}cost<c−1(cn−1)∗c(ci的前n项和c^i的前n项和ci的前n项和)第n+1项:仅考虑最后一项 增加的耗费:(cn−1)∗cc−1\frac{(c^n-1)*c}{c-1}c−1(原创 2021-01-24 00:27:34 · 120 阅读 · 0 评论 -
C. Array Destruction
题目链接:C. Array Destruction题意描述:分解过程:例如14 分解为 11, 3后, 取max(11,3) 继续分解,分解为5,6, 取max(5,6)…给定数组,求是否存在一个数x在分解过程中,将数组中所有数恰好都用上,若存在输出分解过程思路:分解后的两个数一定是数组中可利用的的最大值和其中的某一个数 (贪心)反证法:假设被分解的数不是可利用的最大的数,那么这个最大的数在之后的分解中必不能再被用到,因为它太大了,将会大于欲分解的数 利用multiset 可方便的解原创 2021-01-20 12:50:45 · 647 阅读 · 0 评论 -
第一次集训赛
A - Misha and Changing Handles CodeForces - 501B 简述:CF上可以改网名,输入多个新旧网名,输出有几个人;以及他们最初的网名和最终的网名使用map<string,string> 如何使用iterator遍历容器(可遍历任何容器) map<string,string>::iterator it=name.begin(); it->first指键值,it->second指数值#include<map>原创 2020-07-08 00:12:07 · 106 阅读 · 0 评论 -
CF#654(Div.2)
D.Grid-00100题目;给出一个矩阵n,和一个数字k;用0,1填充矩阵,使矩阵和为k;得出每列和和每行和;求出最大列和 与 最小列和差方与最大行和与最小行和差方最小的和最小的的矩阵(直接看截图吧,好难描述)。输出矩阵思路: 先将矩阵全部填为0,尽量让每行,每列的值相等,来填写官方代码:#include<stdio.h>int main(){ int n,k,t,i,j,p,q; char res[305][305]; scanf("%d",&am原创 2020-07-08 00:12:35 · 137 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) C. Number Game
题目:A(Ashishgup)和B(FastestFinger)两人做数字游戏,A先开始,任给一数字n规则如下:①将n除以>=3的奇数(n必须整除此奇数)②将n-1③n>0,两人必须选择①或②轮流操作,一方不能继续进行,另一方即获得胜利关键思想:当n=1 , n=₂× (x>1) 或n=2 * P(P>=3),P为质数时。B赢,其他情况A赢1. 当n为奇数(n>1);A可以用n/n,剩下1留给B,A就获胜了2.当n为偶数,并且不含有大于1的奇因.翻译 2020-06-21 12:31:38 · 162 阅读 · 0 评论 -
1367C-Social Distance
题目简述:输入两个整数n和k, 分别代表由01组成的二进制字符串的长度和任意两个1之间的距离;模拟餐厅中两个人的最短距离;给出01字符串,求出最多能插入多少个1?例如:n=6,k=1 100010 最多还能在2号位上插入1解决思路:找出01字符串中所有的0区域(即任意相邻两个1之间)区域分三种情况①0区域位于开头,其右端存在1; 将0区域的长len-k (即减去右侧与1相邻的k个数)得到独立的00串的长度②0区域位于中间,其两端均存在1;将0区域的长len-2*k,得到独立的00串的长.原创 2020-06-17 23:57:01 · 346 阅读 · 0 评论 -
Codeforces Round #649 (Div. 2)A
(A)题目:给出一长度为n的数组和一个数据hate,求出数组的子数组中不能整除hate的最长子数组①我的想法:暴力遍历,找出数组中的所有子数组,输出子数组的最大长度#include<stdio.h>#define x 100000int judge(int string[],int y,int length,int hate){ //judge能找出所有的string数组的长度为y int time=length-y+1; .原创 2020-06-14 21:23:29 · 196 阅读 · 0 评论 -
飞行员兄弟(二进制枚举)
题目链接:https://www.acwing.com/problem/content/118/总结:题目本身并没有难度,但是我忘记backup原图,判断后回贴;调了半个小时????♂️代码:#include<iostream>#include<algorithm>#include<string> #include<vector>#include<queue>#include<cstring>using names原创 2020-10-29 09:13:11 · 80 阅读 · 0 评论 -
zwt学长的理想数组:P
题目链接:https://vjudge.net/contest/398847#problem/I题意:给出一个不含0的数组,求最少插入几个数,使其所有子数组的和都不为0。思路:利用前缀和和set集合;注意要先在set中插入0;从前往后往set中插入前缀和,若两处前缀和相等,说明中间的和为0;此时要清空set,插入当前这个数和0,继续往下找。如图:第1个位置和第5个位置的前缀和相等,因为3+1+(-2)+(-2)=0#include<iostream>#include<set&g原创 2020-10-13 14:12:25 · 211 阅读 · 1 评论 -
codeforces 1417C k-Amazing Numbers
题目:https://codeforces.com/contest/1417/problem/C题意:给出一个长度为n的数组,求长度为k(范围:1~n)的滑窗的公共最小值;求出公共最小值数组输出,如果某一个滑窗没有公共值,输出-1;思路:n的范围(1~3e5),且ai<n;①④可以存储每个数据出现的位置;求出这个能使这个数据出现的最小滑窗长度;②用数组ans[滑窗长度]=当前数据来存储;当有多个数的最小滑窗数相等时,更新为最小的数;③满足小滑窗的数一定满足大滑窗,用前缀最小值更新ans数组#in转载 2020-10-12 22:51:30 · 187 阅读 · 0 评论 -
codeforces 948C Producing Snow
题目链接:https://vjudge.net/contest/398847#problem/A题意:每天都会下雪和融雪,雪下来n天,tyd第i天堆vi的雪堆,而第i天会融化ai的雪,问每天融化雪多少?思路:N<=1e5; 幼稚暴力肯定超时;①采取优先队列;先求出前i天雪的融化量,即Ti的前缀和sum[i];从1~n每次将v[i]+sum[i-1]入队;因为后面我们会直接减去sum[i],这样可以使在第i堆前的融雪量不影响当前堆。#mermaid-svg-RuUdQnquo8OY88cY .l原创 2020-10-09 20:33:51 · 103 阅读 · 0 评论 -
CodeForces - 913C(学长买酒)
链接:https://vjudge.net/contest/398847#problem/B题意:林学长要买mL的酒,有n种酒,单价为a1~ai;每种酒的升数为2^i,求至少买m升酒的最小花费。思路:贪心 选择性价比最高的酒进行购买,一直买到性价比最低的。出现不能整除就分为两种:一种再买一瓶当前的酒;另一种为 余下的升数买下一种性价比低的酒#include<bits/std.c++>using namespace std;#define IOS ios::sync_with_stdio原创 2020-10-08 21:08:34 · 231 阅读 · 0 评论 -
等差数列
题意:给出N个数,求包含这N个数的最小的等差数列有几项?思路:先对N个数升序;从第二项起每一项与第一项的差都为xi*d;当d越大的时候,数列的项数越小;最大的d就为GCDmax(a2-a1,a3-a1,a4-a1...) ;最终用(an-a1)/d+1; d在分母上要特判d=0的情况#include<iostream>#include<algorithm> using namespace std;const int maxn=1e5+5;int a[max...原创 2020-09-20 23:12:20 · 353 阅读 · 0 评论 -
H: Yet Another Crosses Problem
题目链接:https://vjudge.net/contest/392676#problem/N思考:这个题需要存储一个n*m的矩形图,但是0<n,m<=5e4; 且保证n*m<4e5; 要是直接开数组map[5e4][5e4]直接爆了,交不上去,所以选择开一个string str[5e4];来存储图形,能够节约空间#include<iostream>#include<cstdio>#include<string>#include<.原创 2020-09-10 20:12:00 · 134 阅读 · 0 评论 -
B. Coloring a Tree
题目:https://vjudge.net/contest/392676#problem/H 题意比较费解题意:给n个点;给出n-1 个pi,即当前节点(坐标)的父节点,构成一棵树;给出n个颜色,将对应坐标涂成相应的颜色;问最少需要几次;(涂抹规则可以看样例)提炼:遍历每个节点,如果当前节点和它的父节点颜色不同,则代表需要重新涂色#include<bits/stdc++.h>using namespace std;const int N=1e4+5;int a[N],b[N.转载 2020-09-06 15:53:04 · 198 阅读 · 0 评论 -
E. Two Platforms
题目:http://codeforces.com/contest/1409/problem/E题意:有两个长为k的板子 和 n 个位置确定的球, 分布在直角坐标系中会自由下落,沿x轴平行移动两个板子,求最多可以接到多少小球?#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<vector原创 2020-09-06 08:56:07 · 160 阅读 · 5 评论 -
A. Row
题目:https://vjudge.net/contest/392676#problem/D题意:给出以01字符串代表作为, 任意两个人不能相邻且不能再多坐1个人 ; 满足输出yes、不满足输no#include<bits/stdc++.h>using namespace std;int main(){ int n; string s; cin>>n>>s; s='0'+s+'0'; if(s.find("000")==-1&&s.转载 2020-09-05 16:04:18 · 115 阅读 · 1 评论 -
C. Binary String Reconstruction
题目:http://codeforces.com/contest/1400/problem/C题解:s[i]=='0'时 i>=x w[i-x]='0'; i+x<n w[i+x]='0';此时对w数组拥有最少的'0',使其满足s数组0的位置; 只需要考虑让s其他位置全部为1(此时拥有最多的1),尽可能满足w数组1的位置.再由w正向推s, 若不能推出 输出-1;#include&...原创 2020-08-27 17:50:55 · 441 阅读 · 0 评论 -
A. Leha and Function
题目:https://codeforces.com/problemset/problem/840/A对于F(n,k) n越大,k越小;当数组A递减,数组B递增时满足题意; 重点是还要满足B数组的对应关系,因此要记录B数组的顺序#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<ve...原创 2020-08-18 07:41:32 · 102 阅读 · 0 评论 -
Good String (思维)
题目链接:Clickswap 函数的利用 暴力遍历 #include<iostream>#include<string>#include<algorithm>using namespace std;string s;int solve(const string &s, int x,int y){ int res=0; for(auto c:s) if(c-'0'==x){ res++; swap(x,y); } if(x!=y原创 2020-07-31 23:28:56 · 202 阅读 · 0 评论 -
1389B - Array Walk(思维)
不知道怎样实现从1~k sum+=a[i]来记录和 实现找到相邻最大的两个和 求最多反复在最大两个值之间来回几次#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N=1e5+5;int a[N];int main(){ int t,n,k,z; scanf("%d",&t); while(t--){ scan...转载 2020-07-31 11:22:52 · 287 阅读 · 0 评论