2020-1-18学习总结
今天是放假在家打卡学习的第一天。
早上8:30签到打卡。
8:50——12:00学习算法(大数相加,快速幂,部分背包贪心策略,博弈基础之巴什博弈)
14:00——18:00刷题。
晚上归纳总结。
大数相加的思路是以模拟算术的加法进位过程,在这里我们运用了数组来依次存放每一位字符,首先将字符每一位翻转,因为我们是从低位算起,所以需要将低位放在数组头部,在计算过程中也需要用一个临时变量来控制每一位的进位,再循环结束过后还需要对进位的变量判断,如果进位不是1的话还要在后面进位。
len1=strlen(str1);len2=strlen(str2);for(i=0; i<len1; i++)ans1[i]=str1[len1-i-1]-'0';//对字符串进行翻转for(i=0; i<len2; i++)ans2[i]=str2[len2-i-1]-'0';
for(i=0; i<len1||i<len2; i++){sum[i]=(ans1[i]+ans2[i]+t)%10;//每位剩下的数t=(ans1[i]+ans2[i]+t)/10;//取进位}if(t)//判断是否还有进位sum[i++]=t;//有进位的话还需进位sum[i]='\0';
快速幂是应用在我们平时求取高次方幂的精简版
一般的是对幂进行循环遍历,这样时间复杂度相对而言会高一点为0(N)。
而快速幂的话是以二进制的位权来简化时间复杂度。(将底数放大,将指数缩小)
void main()
{ int a,b;
scanf("%d%d",&a,&b);int ans=1;while(b){if(b&1)//按位运算相当于b%2!=0{ans*=a;}a*=a;b>>=1;//位运算右移相当于除以2}printf("%d",ans);
}
部分背包策略我就结合今天刷题组的一道题来理解,主要是运用贪心策略。看题:
问题 H: Home Work
描述
临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心! 因为他的心思全在暑假作业上:目前为止还未开动(-_-!!还以为他有多冷静呢)。
暑假作业是很多张试卷,我们这些从试卷里爬出来的人都知道,卷子上的题目有选择题、填空题、简答题、证明题等。 而做选择题的好处就在于工作量很少,但又因为选择题题目都普遍很长。 如果有5张试卷,其中4张是选择题,最后一张是填空题,很明显做最后一张所花的时间要比前4张长很多。 但如果你只做了选择题,虽然工作量很少,但表面上看起来也已经做了4/5的作业了。 I_Love_C决定就用这样的方法来蒙混过关。
他统计出了做完每一张试卷所需的时间以及它做完后能得到的价值(按上面的原理,选择题越多价值当然就越高咯)。 现在就请你帮他安排一下,用他仅剩的一点时间来做最有价值的作业。
格式
输入格式
测试数据包括多组。 每组测试数据以两个整数M,N(1≤M≤20, 1≤N≤10000)开头,分别表示试卷的数目和I_Love_C剩下的时间。 接下来有M行,每行包括两个整数T,V(1≤T≤N,0<V<10000),分别表示做完这张试卷所需的时间以及做完后能得到的价值! 输入以0 0结束。写试卷的时间可能为0!!!
输出格式
对应每组测试数据输出I_Love_C能获得的最大价值。
保留小数点2位
样例
样例输入 Copy
4 20
4 10
5 22
10 3
1 2
0 0
样例输出 Copy
37.00
提示
float的精度可能不够。 你应该使用double类型。
对平均价值进行降序排序,先取价值高的。代码如下
#include <stdio.h>
#include <string.h>
struct node
{double a[3];};
int main()
{int i,j,n,k;double s,m;struct node arr[1000],t;while(~scanf("%d%lf",&n,&s)){if(n==0&&s==0)break;memset(arr,0,sizeof(arr));//对内存进行重置m=0;for(i=0; i<n; i++){scanf("%lf%lf",&arr[i].a[0],&arr[i].a[1]);if(arr[i].a[0]==0)//题目说过写题可能为0,但因为除数不能为0所以我进行了单独处理arr[i].a[2]=arr[i].a[1];elsearr[i].a[2]=arr[i].a[1]/arr[i].a[0];}for(i=0; i<n-1; i++)//冒泡降序排序,关键字为平均价值for(j=0; j<n-1-i; j++)if(arr[j].a[2]<arr[j+1].a[2]){t=arr[j],arr[j]=arr[j+1],arr[j+1]=t;}i=0;while(s)//对价值进行累加,因为是可以进行部分取的{if(s>=arr[i].a[0]){s-=arr[i].a[0];m+=arr[i].a[1];}else{m+=arr[i].a[2]*s;s=0;break;}i++;}printf("%.2lf\n",m);//保留两位小数}}
在刷题题组中运用了博弈基础——巴什博弈
看题
问题 E: 刷题的兄弟俩
描述
众所周知,lbg和gbl是一对兄弟,他们时常位居刷题榜前列,为了赢得学妹的芳心
他们决定进行一场刷题比赛,他们找来了1000000000000000道题,比赛的规则是
1、一道题只能归一个人所有(这题被gbl过了,lbg就接着往后刷);
2、从第一题开始往后刷;
3、谁先刷完最后一题谁就赢了;
4、只有一台机子,每次只能有一个人上机;
5、一次上机刷超过 m (1<=m<=100) 道题会被系统判定为舞弊;
因为lbg和gbl都很聪明,所以每次上机都不会舞弊,而且所有的题他们都会做。
这时比赛已经进行到了晚上就要断网了,还剩 n (0<n<1000000)道题。
假设lbg先上机,请问谁能获得小学妹的芳心?
格式
输入格式
输入数据首先包含一个正整数T,表示包含T组测试用例,然后是T行数据,每行包含两个正整数n,m,n和m的含义参见上面提到的规则。
输出格式
对于每组测试数据,如果lbg能获得小学妹的芳心,请输出字符串"lbg", 如果gbl能获得小学妹的芳心,请输出字符串"gbl",每个实例的输出占一行。
样例
样例输入 Copy
2
8 10
11 10
样例输出 Copy
lbg
gbl
这道题算是巴什博弈的模板题把,
因为每次做题的数不超过m道,也就是说每个人每次做题数目都在1至m,所以如果题目数2*m>n>=m+1,也就说明先手必输,因为先手只能拿1~m,后手就可以拿剩下的n-(m),必定是在1—m内的,所以后手必赢。同样如果n是m+1的倍数拿必定可以变成m+1.所以我们只需判断如果是m+1的倍数那必定是后手赢。代码如下:
#include <stdio.h>
int main()
{int t,n,m;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);if(n%(m+1)==0)printf("gbl\n");elseprintf("lbg\n");}}
愿每天都能过的充实,加油大气层!!!!!
2020-1-18学习总结相关推荐
- 心音数据库_小V云端数据库 | 2020.9.14—2020.9.18
桂花的芬芳 在雨后空气中弥散开来 似为湿润的情绪 赠予了一丝甜蜜 小V云端数据库 2020.9.14-2020.9.18 资讯情报关键词 健康.示范.安全 V宝体检,助力成长 2020年9月14日上午 ...
- 2020李宏毅深度学习hw1
2020李宏毅深度学习hw1 1.导入包 import sys import pandas as pd import numpy as np 2.加载数据 data = pd.read_csv('tr ...
- 我的2020工作与学习总结
我的2020总结 今天是2020年12月30日,马上就要开始新的一年了,在出差途中简单做个总结.总结我2020这平凡而又充实的一年. 学习和生活方面 回忆起我去年做的总结我的2019,这两年都是收获满 ...
- python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!
找不到完整的学习路线?小编分享2020年Python学习路线及学习目标规划拿走不谢,Python作为今年来特别受欢迎的编程语言,是AI时代头牌语言AI领域的敲门砖,Python已经入驻小学生教材,将来 ...
- 十一、“由专入分易,由分入专难。”(2020.12.18)
十一."由专入分易,由分入专难."(2020.12.18)
- 2020.03.18模拟赛17(第二题)
2.[GDKOI训练]音乐节拍(mnotes) 题目描述 FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000)种音节组成,编号为1到N,而且一定按照从1到N的顺序进行弹奏, ...
- 2020.03.18模拟赛17(第三题)
3.[GDKOI训练]电视游戏问题(vidgame) 题目描述 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是 ...
- 计网复习day01 2020.8.18
计网复习day01 2020.8.18 一些填空题 计算机网络由通信子网和资源子网组成 报文交换网络分为虚电路交换网络和数据报交换网络 OSPF的名字是开放最短路径优先,使用了分布式的链路状态协议,R ...
- 2020年新年学习目标
2020年新年学习目标 1.JVM-SANDBOX 2.java进阶
- 2020.02.18 - 修复电脑亮度调节无效的问题
2020.02.18 - 修复电脑亮度调节无效的问题 昨天开始着手解决笔记本亮度调节无效的问题,问题描述:亮度调节功能消失,使用快捷键亦无法调节,打开移动中心调节仍然无效.经过实际验证,总结如下: 1 ...
最新文章
- python图片识别-Python+Opencv识别两张相似图片
- win10 mysql 3534_win10 mysql 5.7.13 服务无法启动 3534
- UVa 10642 - Can You Solve It?
- 利用 Webpack 实现小程序多项目管理
- od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
- 管理工作时间的软件有哪些?
- Win10 系统通过易升升级后,系统盘空间不足解决办法(个人经历)
- EasyPR转qt5-vs2013
- Linux下的WPS安装
- O2OA办公平台:考勤配置管理手册
- hadoop学习笔记之-NFS配置
- Manjaro找不到默认键盘布局
- Rectangling Panoramic Images via Warping算法要点分析
- 无法卸载creative cloud桌面应用程序
- 三维地图打造数、实融合底座
- 如何更改CSDN博客皮肤
- 四步完成离线部署wvs
- Python oauth2登录Outlook读取邮件
- nRF52832学习记录(十一、TWI总线的应用 SHT21程序移植)
- SAP 各大常用模块汇总介绍(四)
热门文章
- HbuilderX Node插件[sass]安装失败,可在命令行中使用'npm install'命令进行重新安装
- 数据分析必备——统计学入门基础知识
- SpringBoot系列(22):Java生成二维码的几种实现方式(基于Spring Boot)
- 企业大数据平台下数仓建设思路
- Mop研发团队:网络时代的技术偏执狂(全文)
- Caffe 深度学习框架上手教程
- 从零开始的企业级Java漏洞实战丨联合漏洞银行免费公开课
- 什么是Windows API
- 一招解决由于找不到vcomp100.dll,无法继续执行代码
- 数值方法求π和π的x次方