累惹。

B. Harvest of Apples

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6333

题意:求∑(i=0,m) C(n,m)。

分析:定义S(n,m)=∑(i=0,m) C(n,m)。可以知道:

S(n,m)=S(n,m-1)+C(n,m),S(n-m)=S(n-1,m-1)+S(n-1,m)=2*S(n-1,m-1)+C(n-1,m)。

由此可以推导出,由S(n,m)到S(n-1,m),S(n+1,m),S(n,m-1),S(n,m+1)的式子为:

S(n-1,m)=(S(n,m)+C(n-1,m))/2

S(n+1,m)=2*S(n,m)-C(n,m)

S(n,m-1)=S(n,m)-C(n,m)

S(n,m+1)=S(n,m)+C(n,m+1)

得到了四个方向的状态转移式,因此,可以用莫队离线处理。

 #include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
const int mod=1e9+;
typedef long long ll;
struct point{
int n,m,block,id;
}q[maxn];
ll fac[maxn],inv[maxn],ans[maxn];
int res,Block;
void init(){
inv[]=inv[]=;
for (int i=;i<maxn;i++)
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
}
int comp(point p,point q){
return p.block<q.block || p.block==q.block && p.m<q.m;
} int main(){
init();
int t;
cin >> t;
Block=(int)(sqrt(t));
for (int i=;i<t;i++){
cin >> q[i].n >> q[i].m;
q[i].id=i;
q[i].block=q[i].n/Block;
}
sort(q,q+t,comp);
ll n=,m=,nc=,res=;
for (int i=;i<t;i++){
int nn=q[i].n,nm=q[i].m;
while (nn<n){
nc=nc*(n-m)%mod*inv[n]%mod;
res=(res+nc)%mod*inv[]%mod;
n--;
}
while (nn>n){
res=(res*%mod-nc+mod)%mod;
nc=nc*(n+)%mod*inv[n+-m]%mod;
n++;
}
while (nm<m){
res=(res-nc+mod)%mod;
nc=nc*m%mod*inv[n-m+]%mod;
m--; }
while (nm>m){
nc=nc*(n-m)%mod*inv[m+]%mod;
res=(res+nc)%mod;
m++;
}
ans[q[i].id]=res;
}
for (int i=;i<t;i++) cout << ans[i] << endl;
return ;
}

hdoj6333

D. Nothing is Impossible

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6335

题意:有若干道题,每题有1个正确选项,b个错误选项,问一个最优决策使得winner得分最大。

分析:如果仅有 1 道题,至少有一个人做对这题需要有 错误答案个数 + 1 个人。那么容易发现在每道题正确答案只有一个的情况下,如果 nn 道题中存在 ss 道题,使得学生人数 mm 不少于每道题 错误答案个数 + 1 相乘的结果,那么一定有人能够得到 ss 分。故我们将题目按错误答案个数从小到大排序,找到最大的 pp 满足就是答案。

 #include<bits/stdc++.h>
using namespace std;
const int N=;
struct node{int a,b,num;}a[N];
bool cmp(node a,node b){return a.num<b.num;}
int main(){
int t,n,m;scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d%d",&a[i].a,&a[i].b),a[i].num=a[i].a+a[i].b;
sort(a+,a+n+,cmp);
int tmp=m;int cnt=-;
for(int i=;i<=n;i++){
int num=a[i].num;
int nn=tmp/num;
tmp=nn*a[i].a;
if(tmp<) break;
cnt=i;
}
printf("%d\n",cnt);
}
return ;
}

hdoj6335

E. Matrix from Arrays

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6336

题意:根据题意构造一个矩阵,求子矩阵和。

分析:打表发现矩阵有循环节。n为奇数时循环节为n*n,n为偶数时循环节为2*n*2*n。求出循环节二维前缀和,再扩展到普通矩阵求和即可。

 #include<iostream>
#include<cstring>
#define maxn 500
using namespace std;
typedef long long ll;
int mp[maxn][maxn],a[maxn];
int L;
void init(){
int cursor = ;
for (int i = ;i<*L; ++i) {
for (int j = ; j <= i; ++j) {
mp[j][i - j] = a[cursor];
cursor = (cursor + ) % L;
}
}
L*=;
for (int i=;i<L;i++)
for (int j=;j<L;j++){
if (i) mp[i][j]+=mp[i-][j];
if (j) mp[i][j]+=mp[i][j-];
if (i && j) mp[i][j]-=mp[i-][j-];
}
}
ll calc(int x,int y){
if (x< || y<) return ;
ll res=;
res=1ll*mp[L-][L-]*(x/L)*(y/L)+1ll*mp[x%L][L-]*(y/L)+1ll*mp[L-][y%L]*(x/L)+1ll*mp[x%L][y%L];
return res;
}
ll slove(){
int l1,r1,l2,r2;
ll res=;
cin >> l1 >> r1 >> l2 >> r2;
res=calc(l2,r2)-calc(l1-,r2)-calc(l2,r1-)+calc(l1-,r1-);
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
int t,q;
cin >> t;
while (t--){
cin >> L;
for (int i=;i<L;i++) cin >> a[i];
init();
cin >> q;
while (q--){
ll ans=slove();
cout << ans << endl;
}
}
return ;
}

hdoj6336

K. Expression in Memories

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6342

题意:在?处填入数字0-9或+,*使得表达式合法。

分析:填入1或+即可。

 #include<bits/stdc++.h>
using namespace std;
bool is1(char c){
return c=='+'||c=='*';
}
int main(){
std::ios::sync_with_stdio(false);
int t;string s;cin>>t;
while(t--){
cin>>s;s='+'+s;int len=s.size();
for(int i=;i<len;i++){
if(s[i]=='?'){
if(s[i-]==''&&(s[i-]=='+'||s[i-]=='*')) s[i]='+';
else s[i]='';
}
}
int flag=;
for(int i=;i<len;i++){
if(is1(s[i])&&is1(s[i-])) flag=;
if(i==len-) break;
if(is1(s[i-])&&s[i]==''&&!is1(s[i+])) flag=;
}
string ans="";
for(int i=;i<len;i++) ans+=s[i];
if(is1(s[len-])) flag=;
if(flag) cout<<ans<<"\n";
else cout<<"IMPOSSIBLE"<<"\n";
}
return ;
}

hdoj6342

L. Graph Theory Homework

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6343

题意:起点1,终点n,中间可经过任意点。求1-n的最小距离。

分析:容易证明:|sqrt(a)| + |sqrt(b)| > |sqrt(a+b)| ,边权满足三角不等式,故直接从1-n距离最小。

 #include<iostream>
#include<algorithm>
#include<cmath>
#define maxn 100005
using namespace std;
int a[maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
int t,n;
cin >> t;
while (t--){
cin >> n;
for (int i=;i<=n;i++) cin >> a[i];
int ans=(int)sqrt(abs(a[]-a[n]));
cout << ans << endl;
}
return ;
}

hdoj6343

2018 Multi-University Training Contest 4的更多相关文章

  1. 2018 Nowcoder Multi-University Training Contest 2

    目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practi ...

  2. 2018 Nowcoder Multi-University Training Contest 1

    Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdo ...

  3. 2018 Nowcoder Multi-University Training Contest 5

    Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...

  4. 2018 Nowcoder Multi-University Training Contest 10

    Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...

  5. HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...

  6. 2018 Multi-University Training Contest 2

    题目链接:2018 Multi-University Training Contest 2 6318 Swaps and Inversions 题意:sum=x*逆序个数+交换次数*y,使sum最小 ...

  7. 2018 Multi-University Training Contest 1

    比赛链接:2018 Multi-University Training Contest 1 6301 Distinct Values 题意:输出一个长度为n的序列,要求满足m个区间的数都不相同,并且字 ...

  8. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. 2018 Multi-University Training Contest 4 Problem J. Let Sudoku Rotate 【DFS+剪枝+矩阵旋转】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6341 Problem J. Let Sudoku Rotate Time Limit: 2000/100 ...

  10. 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...

随机推荐

  1. loadrunner12-运行报错原因及解决办法整理集合

    1.错误:已超过该load generator的CPU使用率80%: 答:机器内存过小,更换配置更好的机器来执行测试. 是因为虚机的内存过小,运行Controller需要消耗的CPU过高,超过了80% ...

  2. window.location.origin

    当前页面的域名+端口号 var HTTP_REMOTE = (function () { var origin = window.location.origin; if (origin.match(/ ...

  3. DB2自增长ID

    建议类似的应用采用sequence对象,将来的应用维护和数据迁移会很方便.考虑的因素较少. 对于序列可以使用nextval和prevval来获得下一个和上一个值:CREATE SEQUENCE seq ...

  4. aused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method fai

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleDaoImpl' ...

  5. RabbitMQ添加rabbitmqadmin和其使用方法(类似Redis的redis-cli)

    一:先进入rabbitmq的安装目录下的bin目录,执行wget -c http://localhost:15672/cli/rabbitmqadmin:(前提是plugin management已经 ...

  6. Ubuntu安装教程(双系统)

    经常要重装还不如写个安装教程省的每次都要查 Ubuntu安装教程: win7下安装Linux实现双系统全攻略:https://jingyan.baidu.com/article/c275f6bacc3 ...

  7. jQueryUI datepicker 报错: TypeError: inst is undefined

    前提:要引用的js等都引用好了 调用日期控件的input: <input id="starttime" name="starttime" class=&q ...

  8. jmeter 5.0版本更新说明(个人做个记录)

    变化   此页面仅详细说明了当前版本中所做的更改. 先前更改的历史记录中详细介绍了早期更改.   5.0版 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢 ...

  9. 从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA

    转自: http://blog.csdn.net/v_july_v/article/details/7526689 从LSM-Tree.COLA-Tree谈到StackOverflow.OSQA 作者 ...

  10. 图片转化为pdf(转)

    方法1: 利用Adobe公司的Adobe Acrobat Professional进行转化.注意,一定是Professional版本的,Reader版本没有这个功能.  首先安装Adobe Acrob ...