| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 系列题解二 -> 正文阅读 |
|
[C++知识库]系列题解二 |
高中运动会(sports) 问题描述: A市每年为全市高中生举办一次运动大会。为促进各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同。为增加比赛的竞争性,希望分成越多队越好。输入各校的人数,编程求出最多可分成的队数。 输入格式: 第一行为正整数t(≤10),表示数据组数;每组数据中,第一行为一个正整数n,代表学校的个数(≤500),第二行一共有n个正整数ai(≤10000),分别代表这N个学校的人数。 输出格式: 对于每组数据,输出最多可分成的队数。
赋值问题(let) 问题描述: 在很多程序设计语言中,忘记给变量赋初值的错误常令人头疼。为了简化起见,在下面的问题中,使用这样的赋值语句,其格式为:<变量名>=<变量名>|<常量>,其中变量名为单个小写字母,常量则为一位正整数(包括0)。如:b=4或c=b均为合理的赋值语句。请编程求出含N行的程序段运行以后有哪些变量中有具有确定的值。 输入格式: 第一行是正整数N (≤104), 以下N行,每行为一条赋值语句(3个字符)。 输出格式: 如果没有变量有确定的值,输出“none”;否则按字母顺序给出所有有确定值的变量名及其值(用“:”分隔),一个变量一行。
样例解释 第2个条赋值语句没有意义,因为d没有初值,同样,第4条赋值语句也没有意义。因此,只有b和d获得值。 银行排队(bank) 问题描述: 在银行里的一个柜台窗口前,有n个人在排队办理业务,已知每个人办理业务的时间分别为ti,而当他排队的时间超过ti时,他就会变得很不满意(他就会立刻转身离开,并向银行主管投诉)。下面帮助银行的工作人员,改变排队的顺序,使得队伍里不满意的人数最少。假定所有的人到达银行的时间一致。 输入格式: 第一行为正整数t(≤5),表示数据组数;每组数据中,第一行为正整数n(≤105),第二行为以空格隔开的n个正整数ti(≤106)。 输出格式: 对于每组数据,输出一个正整数,表示满意人数的最大值。
同构字符串(same) 问题描述: 给定一个字符串s,可以把s的任意两个字符交换位置,也可以交换任意多次,经过交换之后的字符串被称为s的同构串。 例如s=”abac”,则”aabc”,”aacb”,”baac”等都是s的同构串,而”baab”,”bcab”等都不是s的同构串。 输入字符串s和t,求t有多少个子串与s同构。 输入格式: 第一行为字符串s,长度不超过1000;第二行为字符串t,长度不超过5000000;所有输入只包含小写字母。 输出格式: 仅一个整数,表示同构子串的个数。
数据规模: 40%数据中,s串长不超过200,t串长不超过100000; 100%数据中,s串长不超过1000,t串长不超过5000000。 第一题高中运动会一.题目大意这道题就是要求把每个学校分成若干组,要求学校之间不能混合产生一组,必须整除 那也就是求这n个数的最大公约数 二.算法思路就是辗转相除法最大公约数,gcd(a,b,c,d)=gcd(a,gcd(b,gcd(c,d))) 辗转相除法证明 1.演化它是由更像减损转变而来,就是说如果a=m*k,b=n*k,k=gcd(a,b)那么k<=a-b 然后问题转变成gcd(a-b,b)这个时候如果a>2b(a-b>b)那么就继续见。。。 但这样就很慢,于是我们发现只需要取余数,具体的商是多少不用管 所以直接用模法 2.实现为了方便实现,我们首先强调a<b 那么 int gcd(int a,int b) 然后 if(a==0)return b;if(a==1)return 1;//边界 接着递归 return gcd(b%a,a); 撒花 三.代码实现
第二题赋值运算一.题目大意只有理解了数学建模才能精准模拟 就是说当a=num时,a拥有的是num的属性(也就是num的大小) ? ? ? ? ? 当a=b是,a拥有的是b的属性(也就是b是什么状态a就是什么状态) 二.算法思路那需要解决的问题,就是如何记录或传递属性(其实就是数值,我们可以把“没有初值”量化为无穷大0x3f3f3f3f) 那么我们发现可以使用标记数组来映射t[char-'a']=... 其实也就是桶 那么分类以上两种 1.t[char-'a']=num-'0' 2.t[char-'a']=t[charb-'a']; 注意没有初值也是可以传递的 三.代码实现
第三题银行排队一.题目大意给定一个数列,要求进行排序使得其中“不满足”的最少 什么是不满足,由于每个人有一定的办事时间,那么第i个人就必须等待Σa[i-1]个人,那么就有可能不耐烦,也就是量化为等的时间比办事时间都长,得不偿失 当然前面i-1个人中也有可能被气走的,所以就需要好好安排一下 二.算法思路这题不显然的贪心吗? 理由1由于排在前面的人如果办事时间越短,那么后面等待的时间就越短,那么留下的就尽可能多 理由2由于时间越短的人越有可能被气走,所以放在前面供着 那么这题及时对于t[i]排序,接着从头到位扫一遍 注意一个点,只有心平气和的人才会加上办事时间, 三.代码实现
第四题同构字符串这道题首先是四十分的写法,就是暴力枚举所有的子串比较 但是拿40PTS 正解: 一.题目大意就是判断字符串中b的子串有多少个是和字符串a同构的 所谓同构,也就是各个字母的数量一致的两个字符串,当然不包含顺序 也就是说,我们最笨的能够strlen(a)的算法 但是只有40PTS!! 二.算法思路所以怎么打正解呢 1.至少一正常初中的思路,无法想到如何不遍历整个b串就解决问题的方法 2.但是由于我们必须遍历,那就不重不漏 怎么不重不漏 尺取法,由于从i开始的子串和从i+1开始的子串知识多了一个b[i+n]少了一个b[i]于是o(strlen(b)*26)完美撒花 三.代码实现
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:59:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |