Hdu 2015 Multi-University Training Contest10
来源:互联网 发布:网络礼仪作文 编辑:程序博客网 时间:2024/05/29 18:04
还是善始善终一点吧。
整整被虐了十场比赛。
1002
题面
Problem Description
CRB has N different candies. He is going to eat K candies.
He wonders how many combinations he can select.
Can you answer his question for all K(0 ≤ K ≤ N)?
CRB is too hungry to check all of your answers one by one, so he only asks least common multiple(LCM) of all answers.
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case there is one line containing a single integer N.
1 ≤ T ≤ 300
1 ≤ N ≤ 106
Output
For each test case, output a single integer – LCM modulo 1000000007(109+7).
Sample Input
5
1
2
3
4
5
Sample Output
1
2
3
12
10
题意
求杨辉三角形每一行所有数的lcm是多少。
解析
转换成求
这题麻烦的是lcm…非常大,所以只能在中间过程取模最后的除法是不满足取模运算的。
所以,有一个计算的方法:
求
然后求lcm(1,2,3,…,n)的方法是网上找的,可以求到1e8的n。
然后我一直wa。。。找各种原因,然后想放弃这题了,跪了。
新开了一个文件准备写其他题,然后忽然想起,我是不是文件没关。。。
最后。。。
呵呵
代码
#pragma comment(linker, "/STACK:1677721600")#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>#include <climits>#include <cassert>#include <iostream>#include <algorithm>#define pb push_back#define mp make_pair#define LL long long#define lson lo,mi,rt<<1#define rson mi+1,hi,rt<<1|1#define Min(a,b) ((a)<(b)?(a):(b))#define Max(a,b) ((a)>(b)?(a):(b))#define mem(a,b) memset(a,b,sizeof(a))#define FIN freopen("in.txt", "r", stdin)#define FOUT freopen("out.txt", "w", stdout)#define rep(i,a,b) for(int i=(a); i<=(b); i++)#define dec(i,a,b) for(int i=(a); i>=(b); i--)using namespace std;const int mod = 1e9 + 7;typedef long long ll;const int N = 1000000+2;const ll MOD = 1e9 + 7;unsigned int vis[(N+31)/32 + 5];int pri[5770000], pnum;unsigned int sum[5770000];bool Get(int i){ int x = i/32, y = i%32; return 1<<y & vis[x];}void Set(int i){ int x = i/32, y = i%32; vis[x] |= 1<<y;}void get_prime(int n){ pnum = 0; for(int i = 2; i <= n; i++) { if(!Get(i)) pri[pnum++] = i; for(int j = 0; j < pnum; j++) { if(i*pri[j] > n) break; Set(i*pri[j]); if(i%pri[j] == 0) break; } } sum[0] = pri[0]; for(int i = 1; i < pnum; i++) sum[i] = (ll)sum[i-1]*pri[i]%MOD;}int n;bool ok(int cnt, int m){ ll now = 1; for(int i = 0; i < cnt; i++) { now *= pri[m]; if(now > n) return false; } return true;}int bin(int cnt){ int l = 0, r = pnum-1, ret = -1; while(l <= r) { int mid = l+r>>1; ll now = 1; if(ok(cnt, mid)) { ret = mid; l = mid+1; } else r = mid-1; } return ret;}void ex_gcd(ll a, ll b, ll& x, ll& y){ if(!b) { x = 1; y = 0; } else { ex_gcd(b, a % b, y, x); y -= x*(a/b); }}//ax=1 mod(m) 返回xll inv(ll a, ll m){ ll x, y; ex_gcd(a, m, x, y); return (x % m + m) % m;}int main(){ ///FIN; get_prime(1000001); int t; scanf("%d", &t); while(t--) { scanf("%d", &n); n++; ll ans = 1; int cur = 1; while(true) { int ret = bin(cur); if(ret == -1) break; ans = (ll)ans*sum[ret]%MOD; cur++; } printf("%u\n", (ans * inv(n, MOD))%MOD); } return 0;}
1005
题面
Problem Description
Today is CRB’s birthday. His mom decided to buy many presents for her lovely son.
She went to the nearest shop with M Won(currency unit).
At the shop, there are N kinds of presents.
It costs Wi Won to buy one present of i-th kind. (So it costs k × Wi Won to buy k of them.)
But as the counter of the shop is her friend, the counter will give Ai × x + Bi candies if she buys x(x>0) presents of i-th kind.
She wants to receive maximum candies. Your task is to help her.
1 ≤ T ≤ 20
1 ≤ M ≤ 2000
1 ≤ N ≤ 1000
0 ≤ Ai, Bi ≤ 2000
1 ≤ Wi ≤ 2000
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:
The first line contains two integers M and N.
Then N lines follow, i-th line contains three space separated integers Wi, Ai and Bi.
Output
For each test case, output the maximum candies she can gain.
Sample Input
1
100 2
10 2 1
20 1 1
Sample Output
21
Hint
CRB’s mom buys 10 presents of first kind, and receives 2 × 10 + 1 = 21 candies.
题意
拿糖果,你有容量为m的背包,有n个糖果,每颗糖果的体积为w,拿x颗糖果的价值为ax+b。问如何拿糖果使得价值最大。
解析
01背包+完全背包。
代码
#pragma comment(linker, "/STACK:1677721600")#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>#include <climits>#include <cassert>#include <iostream>#include <algorithm>#define pb push_back#define mp make_pair#define LL long long#define lson lo,mi,rt<<1#define rson mi+1,hi,rt<<1|1#define Min(a,b) ((a)<(b)?(a):(b))#define Max(a,b) ((a)>(b)?(a):(b))#define mem(a,b) memset(a,b,sizeof(a))#define FIN freopen("in.txt", "r", stdin)#define FOUT freopen("out.txt", "w", stdout)#define rep(i,a,b) for(int i=(a); i<=(b); i++)#define dec(i,a,b) for(int i=(a); i>=(b); i--)using namespace std;const int mod = 1e9 + 7;const double eps = 1e-8;const double ee = exp(1.0);const int inf = 0x3f3f3f3f;const int maxn = 20000 + 10;const int maxv = 20000 + 10;const double pi = acos(-1.0);const LL iinf = 0x3f3f3f3f3f3f3f3f;int packV;int dp[maxv];int cost[maxn];int value[maxn];// for (int i = 1; i <= n; i++)// zeroOnePack(c[i], w[i]);void zeroOnePack(int cost, int weight){ for (int v = packV; v >= cost; v--) { dp[v] = Max(dp[v], dp[v - cost] + weight); }}// for (int i = 1; i <= n; i++)// completePack(c[i], w[i]);void completePack(int cost, int weight){ for (int v = cost; v <= packV; v++) { dp[v] = Max(dp[v], dp[v - cost] + weight); }}int readT(){ char c; int ret = 0,flg = 0; while(c = getchar(), (c < '0' || c > '9') && c != '-'); if(c == '-') flg = 1; else ret = c ^ 48; while( c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c ^ 48); return flg ? - ret : ret;}int main(){#ifdef LOCAL FIN;#endif // LOCAL int ncase = readT(); while (ncase--) { int n; scanf("%d%d", &packV, &n); rep(i, 1, n) { cost[i] = readT(); cost[i + n] = cost[i]; int A = readT(); int B = readT(); value[i] = A + B; value[i + n] = A; } mem(dp, 0); rep(i, 1, n) { zeroOnePack(cost[i], value[i]); } rep(i, n + 1, n * 2) { completePack(cost[i], value[i]); } printf("%d\n", dp[packV]); } return 0;}
- Hdu 2015 Multi-University Training Contest10
- Hdu 2015 Multi-University Training Contest1
- Hdu 2015 Multi-University Training Contest2
- Hdu 2015 Multi-University Training Contest3
- Hdu 2015 Multi-University Training Contest4
- Hdu 2015 Multi-University Training Contest5
- Hdu 2015 Multi-University Training Contest6
- Hdu 2015 Multi-University Training Contest7
- Hdu 2015 Multi-University Training Contest8
- Hdu 2015 Multi-University Training Contest9
- hdu 5294 Tricks Device 2015 Multi-University Training Contest 1
- hdu 5289 Assignment 2015 Multi-University Training Contest 1
- 2015 Multi-University Training Contest 1 Hdu 5289 Assignment
- 2015 Multi-University Training Contest 1 Hdu 5292 Pocket Cube
- 2015 Multi-University Training Contest 1 Hdu 5297 Y sequence
- HDU 5289 Assignment (2015 Multi-University Training Contest 1)
- hdu 5291 Candy Distribution 2015 Multi-University Training Contest 1
- hdu 5289 Assignment(2015 Multi-University Training Contest 1)
- 黑马程序员-[OC]学习之旅-(构造与内存管理)
- weak,strong --- ARC
- [问题]HDOJ1032 The 3n + 1 problem
- CSS 选择器
- matlab 给定函数 拟合
- Hdu 2015 Multi-University Training Contest10
- OK6410 调试串口 改 普通串口
- 我的第一篇博客
- 黑马程序员-----Java基础-----IO流-1
- 生成元-uva1583
- 例题 7-3 分数拆分 UVa 10976
- hdu1002
- Swift:UIKit中Demo(一)
- 罗技Usb Receiver在Win7 64位系统中驱动安装方法