题目:http://files.cnblogs.com/files/shenben/2017-01-20problems.pdf

数据包(含解题报告):http://files.cnblogs.com/files/shenben/2017-01-20_%E6%B5%8B%E8%AF%95%E5%8C%85.zip

plane

  1. /*
  2. f[nowx][nowy]=sigma(f[tox][toy]);
  3. k=0:ans=sigma(f[nowx][nowy])
  4. 以上动态转移显然
  5. 全部数据要+ 二项式定理:bilibala……
  6. //数学弱,日后再推吧
  7. */
  8. #include<cstdio>
  9. #define O3 __attribute__((optimize("O3")))
  10. #define IN inline
  11. using namespace std;
  12. int read(){
  13. int x=,f=;char ch=getchar();
  14. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  15. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  16. return x*f;
  17. }
  18. const int N=,M=,p=,inf=0x3f3f3f3f;
  19. const int dx[]={,,,-},dy[]={,-,,};
  20. int n,m,k,c[M][M],a[N][N],dp[N][N][M],t[M],ans[M];
  21. bool vis[N][N];
  22. O3 IN void dfs(int nowx,int nowy){
  23. vis[nowx][nowy]=;
  24. for(int d=;d<;d++){
  25. int tox=nowx+dx[d],toy=nowy+dy[d];
  26. if(a[nowx][nowy]>a[tox][toy]){
  27. if(!vis[tox][toy]) dfs(tox,toy);
  28. t[]=dp[tox][toy][]+;
  29. for(int i=;i<=k;i++){
  30. t[i]=dp[tox][toy][i];
  31. for(int j=;j<=i;j++){
  32. t[i]+=((j&)?:-)*c[i][j]*t[i-j];
  33. t[i]%=p;
  34. }
  35. }
  36. for(int i=;i<=k;i++){
  37. dp[nowx][nowy][i]+=t[i];
  38. dp[nowx][nowy][i]%=p;
  39. }
  40. }
  41. }
  42. }
  43. #define name "plane"
  44. int main(){
  45. freopen(name".in","r",stdin);
  46. freopen(name".out","w",stdout);
  47. n=read();m=read();k=read();
  48. for(int i=;i<=n+;i++) a[i][]=a[i][m+]=inf;
  49. for(int i=;i<=m;i++) a[][i]=a[n+][i]=inf;
  50. for(int i=;i<=n;i++){
  51. for(int j=;j<=m;j++){
  52. a[i][j]=read();
  53. }
  54. }
  55. for(int i=;i<=k;i++){
  56. c[i][]=;
  57. for(int j=;j<=i;j++){
  58. c[i][j]=c[i-][j]+c[i-][j-];
  59. c[i][j]%=p;
  60. }
  61. }
  62. for(int i=;i<=n;i++){
  63. for(int j=;j<=m;j++){
  64. if(!vis[i][j]) dfs(i,j);
  65. for(int t=;t<=k;t++){
  66. ans[t]+=dp[i][j][t];
  67. ans[t]%=p;
  68. }
  69. }
  70. }
  71. for(int i=;i<=k;i++) if(ans[i]<) ans[i]+=p;
  72. for(int i=;i<=k;i++) printf("%d\n",ans[i]);
  73. fclose(stdin);fclose(stdout);
  74. return ;
  75. }

knapsack

  1. /*
  2. 离线预处理:多重背包正扫一遍,反扫一遍
  3. ans=max(f[k1][j]+f_rev[k1+2][t1-j]){0<=j<=t1}
  4. attention:
  5. 习惯了一维的二进制拆分,二位的多重背包居然不会了~~
  6. */
  7. #include<cstdio>
  8. #include<iostream>
  9. using namespace std;
  10. int read(){
  11. int x=,f=;char ch=getchar();
  12. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  13. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  14. return x*f;
  15. }
  16. const int N=;
  17. int n,m,v[N],w[N],c[N],f[N][N],f_rev[N][N];
  18. void pre_deal(){
  19. for(int i=,tmp;i<=n;i++){
  20. tmp=c[i];
  21. for(int j=;j<=;j++) f[i][j]=f[i-][j];
  22. for(int j=;tmp!=;j<<=){
  23. j=min(j,tmp);
  24. tmp-=j;
  25. for(int k=;k>=j*v[i];k--){
  26. f[i][k]=max(f[i][k],f[i][k-j*v[i]]+j*w[i]);
  27. }
  28. }
  29. }
  30. for(int i=n,tmp;i>=;i--){
  31. tmp=c[i];
  32. for(int j=;j<=;j++) f_rev[i][j]=f_rev[i+][j];
  33. for(int j=;tmp!=;j<<=){
  34. j=min(j,tmp);
  35. tmp-=j;
  36. for(int k=;k>=j*v[i];k--){
  37. f_rev[i][k]=max(f_rev[i][k],f_rev[i][k-j*v[i]]+j*w[i]);
  38. }
  39. }
  40. }
  41. }
  42. #define name "knapsack"
  43. int main(){
  44. freopen(name".in","r",stdin);
  45. freopen(name".out","w",stdout);
  46. n=read();
  47. for(int i=;i<=n;i++) v[i]=read(),w[i]=read(),c[i]=read();
  48. pre_deal();
  49. m=read();
  50. for(int k1,t1,ans;m--;){
  51. k1=read();t1=read();ans=;
  52. for(int j=;j<=t1;j++) ans=max(ans,f[k1][j]+f_rev[k1+][t1-j]);
  53. printf("%d\n",ans);
  54. }
  55. fclose(stdin);fclose(stdout);
  56. return ;
  57. }

remainder

  1. //思路很好懂,然而还要套二项式,~~
  2. #include<cstdio>
  3. #include<iostream>
  4. using namespace std;
  5. typedef long long ll;
  6. const ll N=,mod=;
  7. ll n,m,ans,sum,tmp,f[N][N*N/];//f(i,j)=长为i,余数和为j
  8. #define name "remainder"
  9. int main(){
  10. freopen(name".in","r",stdin);
  11. freopen(name".out","w",stdout);
  12. cin>>n>>m;
  13. f[][]=;
  14. for(int k=;k<m;k++){
  15. for(int i=k;i>=;i--){
  16. for(int j=k*(k-)/;j>=;j--){
  17. f[i+][j+k]+=f[i][j];
  18. f[i+][j+k]%=mod;
  19. }
  20. }
  21. }
  22. for(int i=;i<=m*(m-)/;i++){
  23. if((n-i)%m) continue;
  24. for(int j=;j<=m;j++){
  25. tmp=(n-i)/m+j-;
  26. tmp%=mod;
  27. sum=;
  28. for(int k=;k<j;k++){//C(n-tot+x-1,x-1)
  29. sum*=tmp;
  30. sum%=mod;
  31. tmp--;
  32. }
  33. sum*=j*f[j][i]%mod;
  34. sum%=mod;
  35. ans+=sum;
  36. ans%=mod;
  37. }
  38. }
  39. cout<<ans;
  40. fclose(stdin);fclose(stdout);
  41. return ;
  42. }

2017-01-20_dp测试的更多相关文章

  1. 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)

    版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...

  2. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  3. Mysql Innodb 性能参数设置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html

    参考原文: https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html 查看系统 ...

  4. java编程如何实现2017-01-16 22:28:26.0这样的时间数据,转换成2017:01:16:22:28:26这样的时间数据

    不多说,直接上干货! timereplace.java package zhouls.bigdata.DataFeatureSelection.util; /* * 这个程序,是用来做补充的 */ p ...

  5. AC日记——C’s problem(c) TYVJ P4746 (清北学堂2017冬令营入学测试第三题)

    P4746 C’s problem(c)   时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比 ...

  6. TIOBE.2017.01最新编程语言排行榜

    Jan 2017     Jan 2016     Change     Programming Language     Ratings     Change1    1        Java   ...

  7. 2017 01 16 校内小测 ZXR专场

    我等蒟蒻爆零之后,问LincHpin大爷:“此等神题可有甚么来头?” LincHpin:“此三题皆为当年ZXR前辈所留.” 固名之,ZXR专场,233~~~ T1 勤奋的YouSiki 这个题在BZO ...

  8. ROS_Kinetic_01 在ubuntu 16.04安装ROS Kinetic 2017.01更新

    ROS_Kinetic系列学习(一),在ubuntu 16.04安装ROS Kinetic. Celebrating 9 Years of ROS! ubuntu16.04已经发布半年多了,ROS的K ...

  9. IntelliJ IDEA 2017版 SpringBoot测试类编写

    SpringBoot的测试类编写Demo 源码见 https://github.com/liushaoye/baseone.git

  10. IntelliJ IDEA 2017.01配置jdk和tomcat

    之前开发Web项目都是用myeclipse或者eclipse,最近想用IDEA这个编辑器去配置一个Web项目,因为是新手,加上对界面的操作不熟练,所以在配置的过程中遇到了一些难题.最后配置成功,并且可 ...

随机推荐

  1. Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version

    解决方法:

  2. FZU 1056 扫雷游戏【搜索】

    Accept: 2584    Submit: 6790Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description 扫雷是 ...

  3. 【强连通分量】 Kosaraju和Tarjan算法 (标准模板+详细注释)

    codevs 题意:求最大强连通分量的大小以及所包含的顶点有哪些 Tarjan算法 #include<iostream> #include<queue> #include< ...

  4. BZOJ 3029 守卫者的挑战

    题面 Description 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过."我,Nizem,是黑魔法圣殿的守卫 ...

  5. MAC(Linux)升级Openssl

    系统上一般默认安装的是0.9.8版本的Openssl,不能满足需要.这时候就要重新安装Openssl. 上官网下载新版openssl:https://www.openssl.org/source/ 解 ...

  6. hdu1862

    //开始把student stu[100000]放置在main()中导致栈溢出,所以必须放在全局位置, //可以调用数组的排序函数sort,包含头文件#include<algorithm> ...

  7. 计算机视觉和模式识别领域SCI期刊介绍

    原帖地址: http://blog.sciencenet.cn/blog-370458-750306.html 关于计算机视觉和模式识别领域的期刊并不是很多,下面我收集了一些该领域的代表性期刊,并介绍 ...

  8. iOS开发个人独立博客收集

    如今国内技术博客站点有非常多,如CSDN,CNBlog,ITEye等.论坛的话主要是要cocachina. 这里是我收集的iOS开发个人独立博客,文章用搜索引擎比較难搜到,都是牛人: OneV's D ...

  9. MongoDB基本文件操作

    MongoDB中主要的文件操作有put.get.list.search几种.能够非常方便地进行文件存储于查找,下面是一个简单的演示样例. 1.利用dd命令生成要求大小随机文件  2.使用put命令将生 ...

  10. Python例子二

    例1.构造函数 #-*-coding:utf--*- import sys class Student: def __init__(self,name,age): self.__name=name s ...