qduoj 140 题目6 142 ycb的ACM进阶之路
题目6
发布时间: 2017年5月22日 14:30 最后更新: 2017年5月22日 14:33 时间限制: 1000ms 内存限制: 128M
给n,m,k,求上述方程中( X1 , X2 ... Xn , Y1 , Y2 ... Ym )解的个数(其中Xi>0,Yi>0)
|:二进制按位或运算,1|0=1,0|0=0,1|1=1,0|1=1.
第一行输入三个正整数,n,m,k(n,m,k<=400)
输出一个数代表答案,答案可能会很大,所以结果对1000000007取模。
1 1 1
1
1 2 3
8
暴力枚举左半部分和右半部分的值,就把问题转换成x1+x2+x3+..+xn=k1有多少种解,因为xi正数,可以想着把k1分成k1个1,在这k1个1里面插n-1个隔板,分成n个部分,隔板的放置方案数也就是解的个数,C(n-1,k1-1)。这样两边都这样求,最后乘一乘加一加。
数据小,求组合数的部分可以用杨辉三角预处理等等。。
#include<iostream>#define mod 1000000007using namespace std;long long c[1000][1000];int main(){intn, m, k;longlong ans = 0;c[0][0]= 1;for(inti = 1; i <= 500; i++){c[i][0]= 1;for(intj = 1; j <= i; j++){c[i][j]= (c[i - 1][j - 1] + c[i - 1][j]) % mod;}}cin>> n >> m >> k;for(inti = 1; i <= k; i++){for(intj = 1; j <= k; j++){if((i| j) == k && i >= n && j >= m)ans = (ans + c[i - 1][n - 1] * c[j - 1][m - 1] % mod) % mod;}}cout<< ans << endl;}
ycb的ACM进阶之路
发布时间: 2017年5月22日 14:30 最后更新: 2017年5月22日 14:31 时间限制: 1000ms 内存限制: 128M
ycb是个天资聪颖的孩子,他的梦想是成为世界上最伟大的ACMer。为此,他想拜附近最有威望的dalao为师。dalao为了判断他的资质,给他出了一个难题。dalao把他带到一个到处都是题的oj里对他说:“孩子,这个oj里有一些不同的题,做每一道题都需要一些时间,每一题也有它自身的rp(人品值)。我会给你一段时间,在这段时间里,你可以做一些题。如果你是一个聪明的孩子,你应该可以让做题的总rp最大。” 如果你是ycb,你能完成这个任务吗?
输入文件的第一行是一个T,表示测试组数,接下来T组每组第一行包含两个正整数N,M。M表示总共能够用来做题的时间,N代表oj里的题目的数目。接下来的N行每行包括两个的整数,分别表示做每个题的时间Ti和这道题的人品值Vi。
1 <= N, M <= 100000,
1 <= Ti, Vi <= 10
输出文件仅包含一个整数表示规定时间内可以做题得到的最大人品值。
1 3 9 10 10 8 1 1 2
3
多重背包
这个题第一眼看肯定会想到裸的01背包,但很明显时间不允许(当时只顾着考虑卡掉01背包的数据,忽略了贪心。。。。。。。。),从数据上看T和V的值都很小,所以可以从这个方面入手,根据不同的T和V都对应着种状态,统计这个状态的背包的数量,然后进行多重背包加一些优化(单调栈,二进制应该都可以)即可。
#include<bits/stdc++.h>
using namespace std;
int book[20][20];
int dp[100005];
int main()
{int T,i,j,ii,jj;cin>>T;while(T--){int t,v;memset(book,0,sizeof(book));memset(dp,0,sizeof(dp));int n,m;cin>>n>>m;for(i=0;i<n;i++){scanf("%d %d",&t,&v);book[t][v]++;}for(i=1;i<=10;i++){for(j=1;j<=10;j++){for(ii=1;ii<<1<book[i][j];ii<<=1){for(jj=m;jj>=ii*i;jj--){dp[jj]=max(dp[jj],dp[jj-ii*i]+ii*j);}}ii=book[i][j]-ii+1;for(jj=m;jj>=ii*i;jj--){dp[jj]=max(dp[jj],dp[jj-i*ii]+j*ii);}}}cout<<dp[m]<<endl;}return 0;
}
qduoj 140 题目6 142 ycb的ACM进阶之路相关推荐
- [转载]acm进阶之路
第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd ...
- ACM进阶计划(来自于南阳理工学院)
ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l ...
- ACM这条路不好走,但还是有很多人走在这条路上
ACM这条路不好走,但还是有很多人走在这条路上. 弱校里面也有ACM强者,只是这条路,异常艰辛. 我只想让这个世界,听听我们的故事,听听我们的声音. 真的,有了决心,有了目标,有了耐心,这才是一个人的 ...
- ACM 进阶计划~~转
ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l ...
- ACM成长之路(干货) 我爱ACM,与君共勉
前几天在网上看到,转过来时刻督促一下自己. ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l ...
- ACM进阶大一到大三
ACM课程: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原理 l算法设计与分析 大一上学期: 必学: 1. ...
- ACM传奇之路(紧握着自己颤抖的双手)
从我接触程序竞赛到现在应该有十多年了,单说ACM竞赛,从第一次非正式参赛到现在也差不多有7年多的样子.有太多的故事,想说的话,却一直没能有机会写下来.一方面是自己忙,一方面也是自己懒.所以很感谢能有人 ...
- ACM/ICPC 金牌进阶之路
大一 上学期 1.熟练掌握 C 语言 2.基础算法与数据结构 (枚举.贪心.递归.分治.模拟.搜索.队列.栈.链表.最短路.最小生成树.基础组合数学.基础数论.二分求解单调性问题.背包问题等) 3.O ...
- 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...
一次ac的就不说啥了.. 2799:浮点数格式 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include ...
最新文章
- vim 代码跳转神器 YouComPlete
- Linux用init命令关机、重启、切换模式
- 单例模式反射、序列化漏洞及解决方案!
- java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher
- Nginx详细安装部署教程
- 2020,Python 已死?
- 【图像超分辨率】(SPSR)Structure-Preserving SR with Gradient Guidance
- ThreadPoolTaskExecutor和ThreadPoolExecutor区别
- c语言酒店管理系统,C语言酒店管理系统.pdf
- wgan 不理解 损失函数_[图像盲去噪与GAN]GCBD翻译理解
- MyBatis Generator(MBG)设计哲学与致歉
- android媒体--stagefright概述【一】
- S7-200PLC寄存器寻址
- secureCRT免密码登陆Linux
- Go chan的底层原理
- 展望 2017年商业智能BI发展的趋势分析
- 彗星撞地球 | 近25万倍压缩的精品3D动画
- 滴滴夜莺Nightingale01-架构详解
- 数据结构视频知识点整理 1
- Markdown进阶