中山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爆零的事......结果我今年又要考一年普及[趴 最近沉迷分块莫队无法自拔,这几天才想起来我是个普及组选手 几乎没准备普及,周六上午抱抱佛脚好了...... 希望能顺 ...
随机推荐
- VS2013 Solution Explorer can not open
Delete content under the path: C:\Users\username\AppData\Local\Microsoft\VisualStudio\12.0\Component ...
- linux查看公网ip的方法
curl ifconfig.me 或者 curl cip.cc
- java redis 实现用户签到功能(很普通简单的签到功能)
业务需求是用户每天只能签到一次,而且签到后用户增加积分,所以把用户每次签到时放到redis 缓存里面,然后每天凌晨时再清除缓存,大概简单思想是这样的 直接看代码吧如下 @Transactional @ ...
- C语言:利用指针解决:统计一个长度为2的字符串在另外一个字符串中出现的次数。
//统计一个长度为2的字符串在另外一个字符串中出现的次数. #include <conio.h> #include <stdio.h> #include <string. ...
- Mysql 中使用 utfmb4 需要注意的问题
查资料时看到一个前人的经验总结,非常有用: http://seanlook.com/2016/10/23/mysql-utf8mb4/
- JS中 逻辑或 || 逻辑与 && 的使用方法总结
JS中 逻辑或 || 逻辑与 && 的使用方法总结 //1.在if判断中 //if(1==1 || 2==3){}//->两个条件中只要有一个条件为真,整体就为真 "或 ...
- Django框架之登录案例
内容: (1)request.GET和request.POST (2)获取get方法提交和post方法提交的数据 一.登录案例 登录逻辑代码 def login(request): if reques ...
- PHP中数字转为百分位,千分位,万分位。。。
今天做项目中,需要将文章点击量显示在页面中,需求中给的是多少多少万,虽然不是什么难事,但做程序员这么久了,需要考虑的不再是简单的实现,而且有效率和快捷, 虽然PHP自带的函数有number_forma ...
- PHP弱类型(一)
如图,id的值必须满足上述表达式,才能返回想要的值 与运算,只要出现false,整个表达式返回false 看见后面的==就想尝试一下弱类型绕过,参考资料:https://www.cnblogs.com ...
- 微权获取openid信授
(1)首页要有一个自己的微信测试号的appid和秘钥 (2)公司里都是后台传code(接口),获取openid(接口) 请求code接口:/Wechat/GetUserInfo/getCode //判 ...