cf div2 #444 (ABC)(D已补)

自适应滤波算法综述 阅读详情

ABC三道大水题,自信满满锁了溜出自习室回寝睡觉,第二天起来发现变成两道题了,哭唧唧。

回头翻代码吃了一口大翔,少写了两行被自己gank了。

然后由于出题人的数据放错了导致D题一开始没人过,E和F零星有几个人,然后就洒富富跑去开F和E,数据改了重判之后D题人数飙升但是没什么时间了(一定是出题人的锅)。

好吧怪自己没把题目都看一遍,盲目跟榜会吃翔的,以后记得不管什么比赛都尽可能把所有题目都看一遍。


A. Div. 64:

给你一串1和0,问你能否删去部分数字使其转换为10进制后能被64整除。

题意翻译过来就是问你能不能在这一串0和1中找出一个非连续子串1000000,能找到即可。


AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int main(void){
	
	char str[105] ;
	scanf ("%s", str );
	int l = strlen(str) ;
	int num = 0 , flag = 0 ;
	for ( int i = 0 ; i < l ; i ++ ){
		if ( str[i] == '1' ){
			flag = 1 ;
		}
		if ( str[i] == '0' && flag == 1 ){
			num ++ ;
		}
		if ( num == 6 ){
			break ;
		}
	}
	if ( num == 6 ){
		printf ("yes\n");
	} else {
		printf ("no\n");
	}
	
	return 0;
}

B. Cubes for Masha:

给你1到3个骰子,每个上面写着0-9其中的六个数字,问你从1开始能取到的最大数是多少(不需要用上所有骰子),比如手中有一个骰子,写着1 2 3 4 5 6,则最大不能取到的是6,两个骰子分别写着0 1 2 3 4 5 , 6 7 8 9 1 2,则最小不能取到的是29(0 1 2 3 4 5 6 7 8 9分别可以由一个骰子得到,10 可以由第二个骰子的1和第一个骰子的0得到,以此类推)。

考虑到三个骰子最多三位数,直接暴力开一个1005的整形数组num,把所有可能情况都跑一遍记录在num中,然后在num中找一个最小的找不到的数,那这个数的前一个就是最大的找得到的数。


AC代码:

#include <cstdio>
#include <cstring>

using namespace std;

int main(void){
	
	int num[1005] = {} , cube[3][8] ;
	
	int n ;
	scanf ("%d", &n );
	for ( int i = 0 ; i < n ; i ++ ){
		for ( int j = 0 ; j < 6 ; j ++ ){
			scanf ("%d", &cube[i][j] );
		}
	}
	if ( n == 1 ){
		for ( int i = 0 ; i < 6 ; i ++ ){
			num[cube[0][i]] = 1 ;
		}
	} else if ( n == 2 ){
		for ( int i = 0 ; i < 6 ; i ++ ){
			num[cube[0][i]] = 1 ;
			num[cube[1][i]] = 1 ;
		}
		for ( int i = 0 ; i < 6 ; i ++ ){
			for ( int j = 0 ; j < 6 ; j ++ ){
				num[cube[0][i]*10+cube[1][j]] = 1 ;
				num[cube[0][j]*10+cube[1][i]] = 1 ;
				num[cube[1][j]*10+cube[0][i]] = 1 ; //PP代码这一句和下一句没写,导致赛后wa82  一大口shit
				num[cube[1][j]*10+cube[0][i]] = 1 ; 
			}
		}
	} else if ( n == 3 ){
		for ( int i = 0 ; i < 6 ; i ++ ){
			num[cube[0][i]] = 1 ;
			num[cube[1][i]] = 1 ;
			num[cube[2][i]] = 1 ;
		}
		for ( int i = 0 ; i < 6 ; i ++ ){
			for ( int j = 0 ; j < 6 ; j ++ ){
				num[cube[0][i]*10+cube[1][j]] = 1 ;
				num[cube[0][i]*10+cube[2][j]] = 1 ;
				num[cube[1][i]*10+cube[0][j]] = 1 ;
				num[cube[1][i]*10+cube[2][j]] = 1 ;
				num[cube[2][i]*10+cube[0][j]] = 1 ;
				num[cube[2][i]*10+cube[1][j]] = 1 ;
			}
		}
		for ( int i = 0 ; i < 6 ; i ++ ){
			for ( int j = 0 ; j < 6 ; j ++ ){
				for ( int k = 0 ; k < 6 ; k ++ ){
					num[cube[0][i]*100+cube[1][j]*10+cube[2][k]] = 1 ;
					num[cube[0][i]*100+cube[2][j]*10+cube[1][k]] = 1 ;
					num[cube[1][i]*100+cube[0][j]*10+cube[2][k]] = 1 ;
					num[cube[1][i]*100+cube[2][j]*10+cube[0][k]] = 1 ;
					num[cube[2][i]*100+cube[0][j]*10+cube[1][k]] = 1 ;
					num[cube[2][i]*100+cube[1][j]*10+cube[0][k]] = 1 ;
				}
			}
		}
	}
	for ( int i = 1 ; i < 1005 ; i ++ ){
		if ( num[i] == 0 ){
			printf ("%d\n", i-1 );
			break ;
		}
	}
	
	return 0;
}

C. Solution for Cube:

给你一个2*2*2的二阶魔方,给你24个数字,分别表示六个面上每个格子的颜色,问你这个魔方能否由一次旋转变为一个拼好了的魔方(必须转一次)。

(出题人甚至给错了例1的配图)

题目中的样例2输入为:

5 3 5 3 2 5 2 5 6 2 6 2 4 4 4 4 1 1 1 1 6 3 6 3
对应下图:

1-24所对应的方格是确定的。


思路:首先在输入时判断这个魔方有几个面已经拼好了,记录拼好的面的个数以及拼好的是哪一个面。

如果拼好的面不足两个或多于两个,必定不能由一次旋转得到拼好的魔方。

如果拼好的面为两个,则再判断拼好的两个面是否为相互面对的面(相互面对的面没有边或点连接),如果相互面对则一顿暴力的判断。


AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int main(void){
	
	int a[26] = {} , flag[6] = {} , cnt = 0 ;
	for ( int i = 0 ; i < 6 ; i ++ ){
		for ( int j = 1 ; j <= 4 ; j ++ ){
			scanf ("%d", &a[i*4+j] );
		}
		if ( a[i*4+1] == a[i*4+2] && a[i*4+1] == a[i*4+3] && a[i*4+1] == a[i*4+4] ){
			flag[i] = 1 ;
			cnt ++ ;
		}
	}
	if ( cnt != 2 ){
		printf ("NO\n");
	} else {
		if ( flag[0] && flag[2] ){
			if ( ( a[5] == a[6] && a[5] == a[15] && a[5] == a[16] && a[7] == a[8] && a[7] == a[17] && a[7] == a[18] && a[19] == a[20] && a[19] == a[21] && a[19] == a[22] && a[13] == a[14] && a[13] == a[23] && a[13] == a[24] ) || ( a[7] == a[8] && a[7] == a[13] && a[7] == a[14] && a[5] == a[6] && a[5] == a[19] && a[5] == a[20] && a[17] == a[18] && a[17] == a[23] && a[17] == a[24] && a[21] == a[22] && a[21] == a[15] && a[21] == a[16] ) ){
				printf ("YES\n");
			} else {
				printf ("NO\n");
			}
		} else if ( flag[1] && flag[5] ){
			if ( ( a[1] == a[2] && a[1] == a[17] && a[1] == a[19] && a[9] == a[18] && a[9] == a[10] && a[9] == a[20] && a[12] == a[11] && a[11] == a[14] && a[11] == a[16] && a[3] == a[4] && a[3] == a[13] && a[3] == a[15] ) || ( a[4] == a[3] && a[3] == a[18] && a[3] == a[20] && a[11] == a[12] && a[11] == a[17] && a[11] == a[19] && a[9] == a[10] && a[9] == a[13] && a[9] == a[15] && a[1] == a[2] && a[1] == a[14] && a[1] == a[16] ) ){
				printf ("YES\n");
			} else {
				printf ("NO\n");
			}
		} else if ( flag[3] && flag[4] ){
			if ( ( a[1] == a[3] && a[1] == a[6] && a[1] == a[8] && a[5] == a[7] && a[5] == a[10] && a[5] == a[12] && a[9] == a[11] && a[9] == a[21] && a[9] == a[23] && a[2] == a[4] && a[2] == a[22] && a[2] == a[24] ) || ( a[1] == a[3] && a[1] == a[21] && a[1] == a[23] && a[2] == a[4] && a[2] == a[5] && a[2] == a[7] && a[9] == a[11] && a[9] == a[6] && a[9] == a[8] && a[10] == a[12] && a[10] == a[22] && a[10] == a[24] ) ){
				printf ("YES\n");
			} else {
				printf ("NO\n");
			}
		} else {
			printf ("NO\n");
		}
	}
	
	return 0;
}

补题后会放上代码(虽然这么弱感觉补不了什么题,试试吧)。




---------------------------------------------补题分割线---------------------------------------------


D. Ratings and Reality Shows

一直wa4,没有找到原因,数据组数太多又不能调就没仔细看,所以骂了很久的数据。然后稍微仔细看了下,答案是0,我的输出是1,wori为什么输出可以是0,一大口shit。


题意:一个人要去参加一个比赛。比赛期间她有两个活动A和B,在给定的某一天进行其中一个活动(每天至多进行一个活动)。从第0天开始她可以举办一次演讲,在演讲之前,进行A活动会给她加上a分,进行B活动会给她减去b分;而在举办演讲之后,进行A活动会给她加上c分,进行B活动会给她减去d分,她的初始分数start给出,演讲活动的buff持续时间len也给出,问你:她最早可以在第几天举办演讲,来满足演讲之前和期间的总分都不会出现负数。

思路:尺取法,起始标记点s记录左端,终点标记点e记录右端,用一个sum维护初始的分数。若s点和e点之间的距离大于等于给定len,则判断初始分数加上过程中的最低分数是否满足大于等于0。若满足则直接输入,否则将初始分数sum加上左端s位置的对应分数(若s对应位置当天是加的则加上,减去的则减去),而最小值与sum相反,减去左端s的对应分数。若改变后的sum小于0,输出-1(因为要求在举办演讲之前的分数也要大于等于0,也是一个wa点)。

注意:左端s的初始点的左侧应为第-1天(即tag为-1),否则在第四组样例中你的输出也会为1而不是0(同为wa点)。

测试数据:

5 1 1 1 1 0 2

1 1

2 1

3 1

4 1

5 1

你的输出应该为0而不是1。


AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long ll ;

struct node {
	int q , t ;
};

node pos[300005] ;

int main(void){
	
	ll n , a , b , c , d , st , len ;
	scanf ("%I64d%I64d%I64d%I64d%I64d%I64d%I64d",&n,&a,&b,&c,&d,&st,&len );
	
	for ( int i = 1 ; i <= n ; i ++ ){
		scanf ("%d%d",&pos[i].q,&pos[i].t );
	}
	
	ll sum = st , ans = 0 , minn = 0 ;
	int e = 1 ;
	
	pos[0].q = -1 ;
	
	for ( int s = 1 ; s <= n ; s ++ ){
		
		while ( e <= n && pos[e].q - pos[s].q <= len ){
			if ( pos[e].t == 1 ){
				ans += c ;
			} else {
				ans -= d ;
			}
			minn = min ( minn , ans );
			e ++ ;
		}
		
		if ( sum + minn >= 0 ){
			printf ("%d\n", pos[s-1].q + 1 );
			return 0 ;
		}
		
		if ( pos[s].t == 1 ){
			ans -= c ;
			minn -= c ;
			sum += a ;
		} else {
			ans += d ;
			minn += d ;
			sum -= b ;
		}
		
		if ( sum < 0 ){
			printf ("-1\n");
			return 0;
		}
		
	}
	printf ("%d\n", pos[n].q + 1 );
	
	return 0;
}


LCD工程师必看:Pixelclock、Mipi Clk计算全解析(附实用公式) 本文为LCD工程师详细解析了像素时钟(Pixelclock)与MIPI时钟(Mipi Clk)的核心计算方法。文章从时序参数构成入手,通过实战公式推导,系统阐述了从屏幕分辨率、刷新率到最终MIPI速率的高效计算链路,并提供了实用的调试思路与排查清单,帮助工程师快速解决画面撕裂、闪烁等常见问题。 阅读详情

相关推荐

Neo4j桌面版导入CVS文件

我们的relation.csv是这样的。

m0_53573725的博客 816

Div2每天两题

DIV每日一题

Funing7的博客 1133

PCA9548实战:从硬件连接到Linux驱动的I2C扩展全解析

本文详细解析了PCA9548 I2C多路复用器从硬件连接到Linux驱动配置的全过程。涵盖硬件引脚连接、电源去耦、地址选择等关键设计要点,以及Linux驱动加载、设备树配置和应用层编程技巧,帮助开发者高效实现I2C总线扩展。

weixin_28726391的博客 406

CFDiv2-Wish I Knew How to Sort-(期望)

就是给你一个都是0和1的数组,然后每次随机选择两个不同的位置i

m0_52398496的博客 585

汽车软件工程师必看:ASPICE开发流程全解析(附各阶段交付物清单)

本文全面解析了汽车行业广泛采用的ASPICE开发流程,详细介绍了从需求挖掘到系统架构设计、软件工程及测试验证各阶段的关键操作和交付物清单。针对汽车软件工程师,提供了实用的协作指南和工具推荐,帮助团队提升开发效率并降低项目风险,是掌握ASPICE标准的必备指南。

weixin_30733003的博客 639

PMO与供应链管理的整合:端到端项目交付的优化策略

在当今全球化和市场竞争日益激烈的环境中,组织面临着前所未有的项目复杂性和交付压力。传统上相互独立的项目管理办公室(PMO)与供应链管理(SCM)正逐渐意识到:只有通过无缝整合,才能实现真正高效的端到端项目交付。本文深入探讨了PMO与供应链管理整合的战略价值、核心框架和实施路径,通过生动的比喻、实际案例和实用工具,展示了如何打破部门壁垒,构建协同高效的项目生态系统。无论您是PMO负责人、供应链专业人士还是高级管理层,都将从本文获得重塑项目交付模式、优化资源利用、降低风险并提升组织竞争力的宝贵见解和行动指南。

项目管理的博客 947

css对于字体和背景等属性的控制

字体(Font) css控制的字体属性包括font-family, font-style, font-variant, font-weight, font-size. 1.font-family: 由字体名(family-names)和字组名(generic families)两个部分组成.首先来看个实例,例:查看Jorux.com首页的css文件,可以看到以下代码: body { font...

前端基础入门学习线路 2381

华为OD机试真题 新系统 2026-04-22 Python&JS 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 316

CFdiv2-Chip Move-(线性dp+状态枚举方式)

就是dp[i][j]直接从dp[i-j][j]转移过来,因为在i-j之前往后跳,方案都是一样的,我直接从dp[i-j][j]跳步到i这里。因为dp[i-j][j],只是从i-j之前的dp[t][j-1]转移过来的。所以加上这个方案就好了,那么就是dp[i][j] = dp[i-j][j]+dp[i-j][j-1]。就是有n个点,初始在0点,每次你可以跳跃一个长度,但是第一次的长度是k的倍数,第二次是k+1的倍数…转移的话,肯定是从前面中dp[t][j-1]转移过来的,t和i的距离是j的倍数就行。...

m0_52398496的博客 982

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

dream it possible 1433

光学系统仿真软件:OSLO_(13).衍射光学元件设计v1

目标函数是设计DOE的关键步骤之一。目标函数可以是一个具体的光强分布,也可以是一个特定的波前形状。在仿真软件中,目标函数通常用数学表达式或数据文件来定义。假设我们需要设计一个二元相位掩模,使其在特定位置生成三个焦点。我们可以定义一个目标函数来描述这三个焦点的光强分布。# 定义目标函数"""定义一个多焦点目标函数:param x: 横坐标:param y: 纵坐标:param z1: 第一个焦点的深度:param z2: 第二个焦点的深度:param z3: 第三个焦点的深度。

kkchenjj的博客 1001

Codeforces Round #829 (Div. 2)

就是我先判断所有的数字总和,假如和为0,那我不需要操作任何数字,每一个数字都是单独的区间,这样就可以满足条件。C1题的意思就是给定一串长度为n的-1,1串,再给定一个规则划分区间,使得区间里面的数字+ -交换操作,得到区间的和,然后所有区间的和是否可以等于0。其实进行简单分析一下就可以得出,假如数字的个数是奇数,那无论怎么配对都不可能成功,直接输出-1,假如个数为偶数,则一定会成功,具体的推理的话,可以分成两两一队,而这一对只有四种可能1 1,1 -1 ,-1 -1 ,-1 1.整体的思路像栈的操作一样。

qq_61793850的博客 839

msfvenom制作windows/linux/android/ios木马

msfvenom选项如下 -p, --payload<payload> 指定 payload(攻击荷载)。如果使用自定义payload,请使用'-'或者stdin指定。 -l, --list [module_typel列出指定模块的所有可用资源。模块类型包括:payloads, encoders, nops, all -n, --nopsled <length>为payload预先指定一个NOP滑动长度。 -f, --format <format>指定输出格式(使

Cwillchris的博客 2732

scrapling 官网教程

选择使用方法查找元素访问元素的数据Navigation 导航抓取网站内容HTTP 请求动态加载的网站动态加载,并且有防护的网站。

freeking101的博客 1110

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

cf960(div2)

题意:爱丽丝和鲍勃在大小为n的数组a中进行游戏,他们轮流进行运算,爱丽丝先开始,不能运算的一方输,一开始mx=0,每次操作,玩家可以选择一个牵引i,ai>=mx,mx设置为ai,ai设为0.判断爱丽丝是否有一个获胜策略。分析:经历操作一次后的数组是非递减的,以后每次都是将数组向右移动,为了防止数组从左往右,不含0的第一个数字在数组里只出现1此,我们可以再执行一次操作,所以只要执行两次操作就能知道剩下的操作次数。

m0_74310050的博客 1227

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

信奥入门级相关的比赛(2025.01.13)

信奥入门级相关的比赛(2025.01.13)

青少年趣味编程 3920

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CFdiv2-Helping the Nature-(差分整理)

C题意: 就是给你n个数,然后每次你可以把1到i这些点的数都-1,或者i到n这些点的数-1,或者整个数组都加1。问你最小多少次可以让整个数组变成0。思考: 刚开始想了下贪心,但是发现贪心很麻烦。于是去想二分,二分肯定只能用强制性判断,但是想了想没法去强制性。然后感觉基础的做法不行之后,感觉好像是差分,但是掌握的不是太牢固,就不知道怎么想下去了。所以一定要把基础打牢。 其实这个就是把2到n点的差分维护出来以后,既然想要整个数组为0,那么首先让2到n点的差分都要变成0,只有这样每个数才会和前面的那个数相等,也就

m0_52398496的博客 278

Codeforces Round #444 (Div. 2) - C - Solution for Cube

传送门:点击打开链接题意:给出一个魔方,每个数字代表一种颜色,可以将每个面顺(逆)时针翻转九十度,问是否能让魔方的每个面颜色都相同。分析:乍一看就是个模拟,总共有6种翻转情况,将每次翻转的情况进行判断就行了,结果写了很久的代码,代码有两百多行,精简之后还有一百多行,看来下别人的代码,代码很精简,只有几十行,学到了,后面发现并不需要代码去模拟翻转,手动模拟一下,直接判断6种情况下6个面的颜色是否一致...

常胜将军的博客 348

Codeforces Round 924 (Div. 2)

有长度为n的一排队伍,队伍的序号有个标准值k,每2*k-2重置一次序号,每段为(1,2…Y * (2 * k - 2) - x + 2 = n,即(n + x - 2) % (2*k-2) == 0。题意:给出长度为n的整数数组a,将1到n的数分别加到数组元素中,数组众数最大是多少。Y * (2 * k - 2) + x = n,即(n - x) % (2。题意:给出a*b的矩形,沿着其中一个边恰好一分为二后可以组成一个新的矩形。上坡:首先最后一段一定是1~x为结尾,而前面我们假设有Y段(2。

maisui12138的博客 743

代码源每日一题Div2

思路:开始思路是找规律,for遍历每个数,然后插空什么的,结果问题就是有很多情况考虑不到.最后换了dfs解法,首先判断数量最多的数的数量和其他数数量总和的关系1.如果数量最多的数的数量大于其他数数量总和+1,那么一个隔一个插空都插不了,空不够,直接判失败2.如果数量最多的数的数量等于其他数数量总和+1,这个时候就只能把最大的这个数推进用于排序的数组3.如果数量最多的数的数量小于其他数数量总和+1,这个时候就是选合适的最小的数的时候了最后把用于排序的数组遍历输出一下,结束。

sign_river的博客 841

CFdiv2-Tournament Countdown-(思维+交互题套路)

然后你每次可以询问a和b,他俩谁赢的多,如果返回1a多,2b多,0一样多。只要想到这,题目就好处理了,既然是3场比赛,那么就是4个人,所以4个4个的看。刚开始没啥感觉,刚开始我想先把一半用暴力求出来,这样是n/2次查询,但是另一半怎么凑呢,如果n/4也不行,所以就不行了。如果1=3,那么1和3都是输掉的,因为如果他俩都是胜者,那么晋级后肯定要有一个比较大。所以再比较晋级的2和4就可以了。如果1>3,那么1肯定晋级,再查询1和4,比较一下就可以了。如果1...

m0_52398496的博客 518

LeetCode #444. Sequence Reconstruction

题目描述: Check whether the original sequenceorgcan be uniquely reconstructed from the sequences inseqs. Theorgsequence is a permutation of the integers from 1 to n, with 1 ≤ n ≤ 104. Reconstruction...

LawFile的博客 503

cf div2

7.30 A 题意 定义这一种数 为nearly prime 就是可以分成两个质数相乘如6=23 14=27等 然后给你一个数n 问时候可以把n 分成四个不想等的数其中有3个是nearly prime 思路 一般分数的都是思维题 有几个数肯定是固定的,这题就是 最小的三个nearly 为 6 10 14 如果小于等于他们的和很定不行如果大于就是可以的,然后 要保证都不相同如果n 减去他们的和 和他们其中的一个相等 那么就可以让14+1 为15 也是这种数,然后 第四个数 减1 可能变变成 6 9 13

xgx984826498的博客 597

CodeForces Round #444 (Div.2)

A. Div. 64 题意 问你能不能去掉一些0和1使这个二进制数整除64 题解 就是判断100000是不是个子串 1 str = input() 2 l = len(str) 3 flag = 0 4 ok = 0 5 for i in range(l - 1, -1, -1): 6 if flag < 6 and str[i] =...

acuiyi4402的博客 288

CF Div.2 #402 A.Pupils Redistribution

原题传送门 啊。题意是 有两个元素数量相等的数组,相互交换元素,使两个数组的元素都相同,求其最小的步数。如果无法完成则返回-1。 其实开一个数组就可以,注意考虑a[x]–后小于0的情况。还有每次交换都可以调整两个元素,结果要/2. #include #include #include using namespace std; int a[6]={0}; int main() {

Koe_no_katachi的博客 317

CFdiv2-Almost Triple Deletions-(正难则反+线性dp)

D题意: 就是给你一个数组,然后对于相邻的两个不同的数,必须删掉他俩,但是删的顺序随意。问你最后最多能剩下多少数。思考: 很明显,就是删去之后省下的数肯定是相同的。然后数据范围5000,很明显就像是dp了。但是dp该怎么定义呢?刚开始我想dp[i][j]走到i点结尾的数为j的最大可以剩下多少。这样就两重循环了,但是该怎么转移呢?对吧,如果用经典转移又加一重循环,而且第二维度就不要了。直接定义dp[i]以i为结尾的最大可以剩多少。然后转移从前面转移,如果他俩中间的数可以删去,并且i和j的值相同那么可以转移。对

m0_52398496的博客 486
下一篇: Poj 3320 Jessica's Reading Problem(尺取法)
Stupid_Turtle
博客等级 码龄9年 25粉丝 18原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值