中山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爆零的事......结果我今年又要考一年普及[趴 最近沉迷分块莫队无法自拔,这几天才想起来我是个普及组选手 几乎没准备普及,周六上午抱抱佛脚好了...... 希望能顺 ...
随机推荐
- 《实战Java高并发程序设计》读书笔记四
第四章 锁的优化及注意事项 1.锁性能的几点建议 减小锁持有时间: 系统持有锁时间越长锁竞争程度就越激烈,只对需要同步的方法加锁,可以减小锁持有时间进而提高锁性能. 减少锁的持有时间有助于降低锁冲突的 ...
- 吴裕雄 python 机器学习——模型选择参数优化暴力搜索寻优GridSearchCV模型
import scipy from sklearn.datasets import load_digits from sklearn.metrics import classification_rep ...
- Jquery span标签的取值赋值
//赋值 $("#spanid").html(value) //取值 $("#spanid").text()
- 基于SILVACO ATLAS的a-IGZO薄膜晶体管二维器件仿真(04)
在eetop上有好多好东西啊: Silvaco_TCAD_中文教程1 不过这个教程里是Linux系统的,而且工艺仿真占了比较大的篇幅. defect region=1 nta=5e17 wta=0.1 ...
- Vue如何用虚拟dom进行渲染view的
前提 vue版本:v2.5.17-beta.0 触发render vue在数据更新后会自动触发view的render工作,其依赖于数据驱动:在数据驱动的工作下,每一个vue的data属性都被监听,并且 ...
- dapper基本操作
https://www.cnblogs.com/vichin/p/9289969.html
- <img>标签显示本地路径的图片的.NET解决方案
今天朋友问了我一个奇怪的需求:项目中要求图片上传到工作目录,上传后要在网页中通过<img>显示出来.图片上传后显示,在开发中常见的做法是将它图片上传到网站目录下(upload/),如果保存 ...
- ubuntu 允许root用户登录到ssh
ubuntu的系统太太太麻烦了,我喜欢centos,但是还是要用ubuntu做东西,讨厌,装完系统以后,因为他不让你用root,我新建了一个wqz的用户名. 1.首先更新root的密码 sudo pa ...
- MSE初始化和基本操作
MSE默认的登录账户密码可能是:login/password (admin/admin). l 初始化配置完成后,下次使用root登录时,仅显示Linux shell提示符,而不是安装脚本. 您可以随 ...
- Golang介绍以及安装
Go语言 Google开源 编译形语言 21世纪的C语言 Go语言的特点 简单易并发 开发效率高 执行性能好 Go语言应用的领域 服务端开发 日志处理 文件系统 监控服务 容器虚拟化 Docker k ...