思维
i榴莲臭臭配香茶
这个作者很懒,什么都没留下…
展开
-
【无标题】
题目大意是给出一个数组a,每个元素只可操作一次(将a[i]变成a[i]*i),问最少操作几次可以使Πa[i]被2的n次方整除,首先这个数组连乘起来可以确定的是她们有多少个2的次方,我们把这个数求出来,与2的n次方比较大小,贪心的做法去找需要乘上多少个2的次方,从大到小去找,如果当前所得的2的次方数比2的n次方大,说明一定有一个小的可以实现。原创 2022-11-01 10:09:56 · 281 阅读 · 0 评论 -
Educational Codeforces Round 136 (Rated for Div. 2)-C
思路还是不够清晰,搞了半天没搞出来。要多练练这种题呀!给牌做个标记,max=1,max-1=2,max-2=3,max-3=4;原创 2022-10-09 21:24:41 · 188 阅读 · 0 评论 -
Meeting on the Line(ccodeforces #823)
求最佳位置原创 2022-10-07 16:44:02 · 158 阅读 · 0 评论 -
codeforces#823-C(优先队列)
【代码】codeforces#823-C(优先队列)原创 2022-10-06 09:46:43 · 167 阅读 · 0 评论 -
2022河南省ccpc省赛题解
2022ccpc原创 2022-10-05 11:14:19 · 1438 阅读 · 0 评论 -
列表排序(枚举)
其实只要把行和列交换的顺序换一下就可以了 比赛的时候一直想着先交换行再交换列 正解是先交换列 再交换行。原创 2022-09-03 21:57:19 · 178 阅读 · 0 评论 -
E. Counting Rectangles(二维前缀和)
【代码】E. Counting Rectangles(二维前缀和)原创 2022-09-03 09:44:11 · 160 阅读 · 0 评论 -
简单题(百度之星2022)
【代码】简单题(百度之星2022)原创 2022-08-31 21:52:37 · 817 阅读 · 0 评论 -
小度养猫
【代码】小度养猫。原创 2022-08-30 20:25:22 · 228 阅读 · 0 评论 -
仓鼠更有精神
传送门斗争了一个小时 还是超时先放到这里吧 ,但是还是很不情愿,有没有大佬帮我看看还能不能优化啊#include<bits/stdc++.h>using namespace std;int b[1001100];int main(){ string a; int i,j,k,m,n,t; ios::sync_with_stdio(0); cin.tie(0); cin>>t; while(t--) { cin>>a>>k;原创 2022-05-16 20:28:57 · 157 阅读 · 0 评论 -
codeforces 1661C
传送门题目是说 有一排树 他们有一个初始高度a[i] ,从第一天开始给这些树胶水,奇数天树的高度可以增加1,偶数天可以增加2,问最少需要多少天这些树的高度可以一样高,每一天都可以选择给一棵树浇水,或者一颗都不浇思考一下 ,一颗树浇到最大的高度 只有两种情况,要么全部由偶数天来浇,要么是一些偶数天 加上一天奇数天,统计一下所有的树,一共需要多少奇数天,多少偶数天,如果偶数天比奇数天多,我们可以把空闲的没有用的上的奇数天,来补偶数天,均衡一下奇偶,如果是奇数天比偶数天多,那便没有办法用偶数天来补了,还有一原创 2022-05-15 08:45:22 · 170 阅读 · 0 评论 -
Binary String To Subsequences(子序列问题)
传送门思路不能有两个1挨着 ,也不能有两个0挨着,用两个容器存子序列的最后一个元素是第几个子序列里的,每当遇到一个0 尝试把它放到一个以1结尾的子序列末尾去,如果不行,就单独的为它开辟一个新的子序列,遇到1也是如此code#include<bits/stdc++.h>using namespace std;int main(){ int i,j,k,m,n,t; string a; std::ios::sync_with_stdio(0); cin.tie(0); ci原创 2022-05-05 20:17:42 · 191 阅读 · 0 评论 -
Unequal Array(思维)
传送门直接看样例吧81 1 2 3 4 5 7 7现在的值为2 我们要将其变为0 或者1先变第一对1 x x 3 4 5 7 71 x y y 4 5 7 71 x y z z 5 7 71 x y z m m 7 71 x y z m n n 7 好了目前只剩一对了 大概思路就是这样#include<bits/stdc++.h>using namespace std;const int N=1e5;int a[N*2+10];int main(){ i原创 2022-04-27 19:50:39 · 371 阅读 · 0 评论 -
Subtract Operation(set容器)
传送门题解:给你一个长度为n的数组 一个数字k 每次可以选择删除数组中其中一个元素 其他剩下的所有元素的值都要减去被删掉的这个元素 问最后剩下的那个元素能不能等于k每个元素减去的都是相同的值 所以二者之间的差值恒定不变,我们只需要找是否存在两个元素的差值为k即可 不能双层for,会超时,可以用set容器,一层for去找是不是存在inpu44 54 2 2 75 41 9 1 3 42 1717 02 1718 18outputYESNOYESNO#include<b原创 2022-04-18 20:34:39 · 244 阅读 · 0 评论 -
矩阵列平移(pta)
理解错题意啦,我以为是分别向下移动1个和k个,结果是1到k个 害!也就是 第2列移动1个 第4列移动2 个 第6列移动 3个 以此类推#include<bits/stdc++.h>using namespace std;int a[110][110],n,m,p,k,z[110];int main(){ int i,j; cin>>n>>k>>p; for(i=1; i<=n; i++) { for(j=1; j<=n.原创 2022-04-18 20:11:23 · 416 阅读 · 0 评论 -
Tree Infection(模拟)
传送门一开始以为跟二叉树有关 一看到就头疼 看了题解发现跟二叉树没啥关系,看了好长时间才明白一秒内可以做俩操作:感染一个健康的节点传染相邻的兄弟节点思路sum[i]表示以i为节点的节点个数有几个,一开始去感染最多的那个群体 为什么呢?因为这样可以给这个群体更多的彼此间互相传染的时间,在他互相传染的时间里,我们去感染其他群体如果所有的群体我们都已经感染了一个,计算在这个时间内 每个群体剩余的没有被感染的节点的个数,我们再重复以上操作(找到最多的 去感染,让其传染,在这个时间内去感染其他节点)原创 2022-04-14 19:57:21 · 632 阅读 · 0 评论 -
Good Pairs(构造)
这题很有意思 虽然我第一眼没看出来咋做 但是蒙对了传送门题目是说 找一个i 一个j使数组中所有的 abs(ai-ak)+abs(ak-aj)=abs(ai-aj) 怎么才能使所有的k都满足这个式子呢 我们把绝对值去掉 变成ai-ak+ak-aj=ai-aj 那怎么才能得到这个式子呢 只需要满足 ai>ak>aj也就是ai取数组中的最大值 aj取数组中的最小值即可#include<bits/stdc++.h>using namespace std;const int原创 2022-04-13 21:17:11 · 235 阅读 · 0 评论 -
造桥(牛客)
今日教训:当有字符串的时候,而像我这种不认真看数据范围的人,直接用string,这样怎么也不会爆!牛客小白#include<bits/stdc++.h>using namespace std;char s[1010010];int f[40];int main(){ int i,j,k,m,n,t; scanf("%d",&t); while(t--) { memset(f,0,sizeof(f)); int ans=0; scanf("%d",&am原创 2022-04-11 21:11:54 · 302 阅读 · 0 评论 -
Getting Zero(思维)
codeforces一开始我只想着让她加 随便加几个应该就能得出答案了,没想太细,没有想到这个32768跟2的关系 32768是2的15次方 所以任何一个数 只要乘以2的15次方,就一定可以得到0,我们要让n加上1的次数控制在15以内,因为这个答案的最大值是15浅看一下吧#include<bits/stdc++.h>using namespace std;const int k=32768;int f[10]= {0,32768,65536};int main(){ int原创 2022-04-11 19:08:10 · 445 阅读 · 0 评论 -
codeforces 1665A (GCD vs LCM)思维
传送门我还在那分奇数偶数直接输出 n-3 1 1 1 这样最大公约数和最小公倍数都是1#include<bits/stdc++.h>using namespace std;int main(){ int i,j,k,m,n,t; scanf("%d",&t); while(t--) { scanf("%d",&n); if(n==4) { printf("1 1 1 1\n") ; continue; } printf原创 2022-04-10 20:29:44 · 309 阅读 · 0 评论 -
codeforces1660(Get an Even String)
codeforces把所有可以构成偶字符串的字符个数统计出来 用字符串长度减去可以构成的长度 就是我们需要删去的字符个数#include<bits/stdc++.h>using namespace std;string s;int book[30]; void solve(){ memset(book,0,sizeof(book)); int m=0; for(int i=0;i<s.size();i++) { if(!book[s[i]-'a'])//如果当前字原创 2022-04-10 16:23:49 · 288 阅读 · 0 评论 -
训练题AFG
A#include<bits/stdc++.h>using namespace std;int main(){ int h,m,s; h=7; m=31+24; s=26+15; printf("%02d:%02d:%02d",h,m,s); return 0;}F#include<bits/stdc++.h>using namespace std;int dp[50];int main(){ int i,j,k,m,n; scanf("%d"原创 2022-04-08 19:44:06 · 207 阅读 · 0 评论 -
承压计算(蓝桥杯)
传送门#include<bits/stdc++.h>using namespace std;double a[40][40];int main(){ int i,j,k,m,n; for(i=1; i<=29; i++) { for(j=1; j<=i; j++) scanf("%lf",&a[i][j]); } for(i=1; i<=30; i++) { for(j=1; j<=i; j++) { if(i==1)原创 2022-04-07 14:51:22 · 297 阅读 · 0 评论 -
k倍区间(蓝桥杯)
求前缀和 直接取余 每个余数相同的可以组成一对两两相互组合 删去重复的详情见传送门#include<bits/stdc++.h>using namespace std;const int N=1e5+10;//long long dp[N];long long s[N];int main(){ int i,j,k,m,n; long long ans=0; scanf("%d%d",&n,&k); for(i=1; i<=n; i++) {原创 2022-04-07 11:14:53 · 115 阅读 · 0 评论 -
日期问题(蓝桥杯)
我们把6种可能的情况都放到结构体里 然后按大小进行排序 在输出的时候判断一下这个日期是不是可能的即可首先1960之前的年份和2059之后的年份都不是可能的年份闰年要特别判断一下 闰年的2月有29天 平年的2月有28天天数大于当前月份的最大日期时不是可能的日期月份不在1到12之间的不是可能的日期最后要注意不能重复输出相同的日期 用数组标记一下即可#include<bits/stdc++.h>using namespace std;int m[14]= {0,31,29,31,3原创 2022-04-06 21:23:31 · 516 阅读 · 2 评论 -
平面划分.
n条直线最多可以分成几个平面 fn= n*(n+1)/2 +1n条折线最多可以分为几个区域 dn=f 2n-2n传送门例题训练题最开始一条直线最多与7条直线相交 最多可以得到6个平面 然后下一条直线最多与8条直线相交 可以得到7个平面 以此类推 答案为47...原创 2022-04-04 21:32:14 · 262 阅读 · 0 评论 -
KartRider(思维)
传送门当在t秒时刻内,能走的路程是t m,方向或正或反,都可以我们依次累加,+1,+2,+3 直到sum>=n 这还不够 如果跑过了,我们还要选着中间某个时间点返回一次 ,比如 1+x=10>n=9那1 可以选择反方向 -1+x=8<9 也不可以 所以我们只能在一个偶数的点选择返回 也不是返回 大概是这个意思吧#include<bits/stdc++.h>using namespace std;long long solve(long long n){ lon原创 2022-04-01 20:26:06 · 408 阅读 · 0 评论 -
codeforces 1657C
删除最短good前缀good前缀 :要么是回文 要么是俩相同的括号如果当前的字符是( 那无论后面一个是什么字符 是( 或者是) 都可以删掉如果当前是) 那后面只有)二者才能配成回文字符串了 ,两个) )中间的所有一并删去#include<bits/stdc++.h>using namespace std;int main(){ int i,j,k,m,n,t; string s; cin>>t; while(t--) { cin>>n>原创 2022-03-29 21:11:52 · 253 阅读 · 0 评论 -
天气预报(牛客)
本来以为是不难的一道题 但只得了40分在尺取得时候写错啦传送门#include<bits/stdc++.h>using namespace std;int main(){ int n,a,b,sum; cin>>n>>a>>b; string s; cin>>s; int l=0,r=0,x=0,y=0,q=0,p=0; long long ans=0; for(int i=0,j=0;i<s.size();i++)原创 2022-03-29 19:18:36 · 245 阅读 · 0 评论 -
codeforces854B
传送门 有n个房子 有k个房子有人居住了 这个人喜欢住在邻居有人的房子里 问她最少有几个房子可以住 最多有几个房子可以住n/k表示每个已经住了人的房子可以平均分为几块 如果>=3 就表示每块里最少分3个人 而3个房子里有一个是已经住了的 不管是3 4 5 还是更大的数 一个已经住人的房子最多有两个邻居 所以用k*2就是答案 其他的情况比较好理解#include<bits/stdc++.h>using namespace std;int main(){ int i,j,n原创 2022-03-26 08:48:25 · 375 阅读 · 0 评论 -
Alice and the Cake
还不太懂 先把代码放这吧codeforces官方题解:First, let's find the initial weight. When a piece of cake is split, the sum of weights is ⌊w2⌋+⌈w2⌉:if w is even, ⌊w/2⌋+⌈w/2⌉=w/2+w/2=w;if w is odd, ⌊w/2⌋+⌈w/2⌉=(w−1)/2+(w+1)/2=w.Therefore, the sum of weights is constant,原创 2022-03-21 21:22:13 · 645 阅读 · 0 评论 -
CodeForces - 1512F
在这里注意ceil使用的时候要加上万能头文件ceil返回的是大于等于当前式子的最小正整数 即便式子的值为0 返回的结果却是1#include<bits/stdc++.h>#include<iostream>#include<algorithm>using namespace std;const int N=1e6+10;typedef long long ll;ll a[N],b[N];int main(){ int i,j,k,m,n,t;原创 2022-03-20 21:59:51 · 204 阅读 · 0 评论