中山Day4——普及
生活开始日益平淡了呢。。。今天130分。
收获:归并排序求逆序对
背包问题(01、完全、多重)(外带滚动数组优化)
T1:题目链接(才不会告诉你们下面的代码也是洛谷上弄来的)
思路:动态规划。首先,设dp[i][k]为从a1到ak余数等于n的块数。然后先预处理一下,设sum[i][j]为从i到j%m的余数。接着用1至m-1来更新dp。
然后可以推出转移方程为:dp[i][(k*sum[j+1][i])%m]=max(dp[i][(k*sum[j+1][i])%m],dp[j][k]+1)。
这么做的时间复杂度是O(len^2*m),肯定是能过的。
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,a[],sum[][],dp[][];
char c[];
int main()
{ for(int i=;i<=;i++)
for(int j=;j<=;j++)
dp[i][j]=0x7f7f7f;
scanf("%s%d",&c,&m);
int len=strlen(c);
for(int i=;i<len;i++)
a[i+]=c[i]-'';
for(int i=;i<=len;i++)
for(int j=i;j<=len;j++)
sum[i][j]=(sum[i][j-]*+a[j])%m;
for(int i=;i<=len;i++)
dp[i][sum[][i]]=;
for(int i=;i<=len;i++)
{
for(int j=;j<i;j++)
{
for(int k=;k<=m-;k++)
dp[i][(k*sum[j+][i])%m]=min(dp[i][(k*sum[j+][i])%m],dp[j][k]+);
}
}
for(int i=;i<=m-;i++)
{
if(dp[len][i]!=0x7f7f7f)
{
printf("%d %d ",i,dp[len][i]-);
break;
}
}
for(int i=m-;i>=;i--)
{
if(dp[len][i]!=0x7f7f7f)
{
printf("%d %d ",i,dp[len][i]-);
break;
}
}
return ;
}
好题哉!!!
T2:题目链接(这道我暴力冒泡30分)
思路:其实是很简单的,就是裸的归并排序找逆序对而已,可惜我早上不会,考到也算查漏补缺了。
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,a[],b[];
long long ans;
void merge_sort(int l,int r)
{
if(r-l>)
{
int mid=(l+r)/;
merge_sort(l,mid);
merge_sort(mid+,r);
int i=l,q=mid+,p=l;
while(q<=r||p<=mid)
{
if(q>r||(p<=mid&&a[p]<=a[q]))
{
b[i++]=a[p++];
}
else
{
b[i++]=a[q++];
ans+=mid-p+;
}
}
for(int i=l;i<=r;i++)
a[i]=b[i];
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
merge_sort(,n);
printf("%ld",ans);
return ;
}
好题哉!!!
T3:题目链接(唯一A掉的一道水题)
思路:第一眼看到k<=1018,就想到了以为叫做小凯的同学。于是就打了个表,发现是个斐波那契数列,然后就递推一下,外加维护一个前缀和,秒做的有没有。
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
long long k,i;
struct h{
long long num1;
long long num2;
long long q;
};
h fb[];
int main()
{
fb[].num1=fb[].num2=;
fb[].q=;
scanf("%ld",&k);
while(fb[i].q<k)
{
i++;
fb[i].num2=fb[i-].num1;
fb[i].num1=fb[i-].num1+fb[i-].num2;
fb[i].q=fb[i-].q+fb[i].num2;
}
printf("m=%ld\n",fb[i].num2);
printf("n=%ld",fb[i].num1);
return ;
}
好题哉!!!
T4:题目链接
思路,最为清晰的一题:多重背包!!!可惜我又不会。。。恶补了下背包,以后就不会有问题啦,好开心
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,c,num,k=,v[],w[],dp[];
int main()
{
scanf("%d%d",&n,&c);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&v[i],&w[i],&num);
{
for(int k=;k<=num;k++)
for(int j=c;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
}
printf("%d",dp[c]);
return ;
}
可惜这题不开单调队列优化就只有30分。诶……
好题哉!!!
中山Day4——普及的更多相关文章
- 中山Day10——普及
今天又是愚蠢的一天,估分230,实得110.其中T2.4不会,这里就只说题意和简要思路. 收获:scanf>>a,以及printf<<a. T1:模板题 此题相对简单,就是读入 ...
- 中山Day5——普及
今天题目真是贼难呐...才38... 收获:树状数组单个修改 树状数组区间修改 T1:旅行 题意:有n个数,问;从中取任意个数,他们的和为质数的方案数是多少?(n<=50) 暴力模拟即可,这里不 ...
- 中山DAy2——普及
今天挺不友好的,早上忘记定闹钟,晚了半小时起床,然后早上信心满满打算弄他个300分.结果……132.2分·.WTF??? T1:disease 题意:有n头奶牛,k种细菌(k<=15),给你每头 ...
- 2019中山纪念中学夏令营-Day4[JZOJ]
Begin (题目的排序方式:难易程度) 什么是对拍: 对拍是一种在写完程序后,验证自己程序是不是正解的比较方便的方法. 实现过程: 对同一道题,再打一个暴力程序,然后用一些大数据等跑暴力程序来进行验 ...
- 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2
A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...
- 中山普及Day17——普及
今天换教室,本来教室多好嘛,易守难攻,结果...今天今天仅下午就被熊抄了2次,熊超真TMD不是人呐,走路连脚步声都没有. 然后,播报分数: 爆0了!!!
- 中山普及Day13——普及
又是迷之自信的说...估的230,考的50整,我欲上天呐!!! T1:深渊(怕不是黑暗种族聚集地???) 思路:动归.而且是简单动归.转移方程:Fi,j=max(Fi-1,j,Fi,j,Fi-1,(j ...
- NOIP2016普及总结
---恢复内容开始--- 当时我说如果不出意外有385,结果就这么跪在了第二题,惨啊 本来以为发挥算正常,结果这发挥太不正常了 [T1] 水题啊[趴 注意下细节就好考你会不会写代码. [T2] 这题大 ...
- NOIP2016普及
还记得去年局部变量忘记置零coin爆零的事......结果我今年又要考一年普及[趴 最近沉迷分块莫队无法自拔,这几天才想起来我是个普及组选手 几乎没准备普及,周六上午抱抱佛脚好了...... 希望能顺 ...
随机推荐
- VM虚拟机黑屏 鼠标进不去
#开始 可能是我脸黑吧 最近用虚拟机好几次都是黑屏 鼠标进不去 但是任务管理器显示确实有资源消耗 也就是说实际上应该是开机成功了(但是听不到声音 也许是没有开机吧) #解决方案 管理员权限打开 cmd ...
- pip 换源
pip 换源 pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.ed ...
- 搭建第一个django项目
django是python做web最为强大和全能的后端框架,不会django的python如一条咸鱼... 所以开始学习django框架. 首选得在python中下载django 下载命令: pip ...
- ECMAScript中的箭头函数 (=>) 使用注意事项
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target.这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数. 箭 ...
- C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。-使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,
//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动. #include <stdio.h> void fun( char * ...
- No space left on device(总结)
..1 提示磁盘满了 df -hT 没有满 请问可能原因 可能是inode满了,原因是机器上的小文件太多了 使用df -hi 查看 ..2 提示没有磁盘空间已经满了 ..2.1 问题描述: 发现是日志 ...
- [转]JDK1.0到12各版本新特性
原文链接 JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢.JDK Version 1.1 1 ...
- Vue——前端生成二维码
与后端生成二维码相比,前端生成二维码更具有灵活性,下面就介绍两种前端生成二维码的方式,两种方式相比之下,vue-qr比qrcode多了一个再中间添加logo的功能. 方式一:qrcode npm np ...
- 吴裕雄 python 神经网络——TensorFlow variables_to_restore函数的使用样例
import tensorflow as tf v = tf.Variable(0, dtype=tf.float32, name="v") ema = tf.train.Expo ...
- Cisco Spectrum Expert(Wave2 AP)
在一些版本中,我们可能会发现,AP16,26或AP17,27,37等支持Spectrum Expert Connect (即SE-Connect),该模式可以让AP将频谱分析所述数据发送到对应的分析仪 ...