累惹。

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. SSL - 简介

    一.密码技术 要了解SSL协议,首先要了解:加密算法.消息摘要算法(又称为哈希算法Hash),数字签名等概念.这些技术每个都可以写出一整本的书,它们结合在一起,提供了保密性.完整性和身份验证的功能. ...

  2. Oracle LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  3. 转载 springboot 配置读取

    前言:了解过spring-Boot这个技术的,应该知道Spring-Boot的核心配置文件application.properties,当然也可以通过注解自定义配置文件**.properties的信息 ...

  4. vc到vs2015消息函数

    afx_msg LRESULT OnMyIconNotify(WPARAM wParam,LPARAM lParam); vc6 可以是void  vs2015不可以 ON_MESSAGE(MYWM_ ...

  5. Mockplus推出真正无限制终身版,做原型就要一辈子!

    如今提到原型工具,各位设计师和PM爸爸们一定不会对Mockplus感到陌生吧?事实上,从一开始的默默无闻,到在UXPA大赛上崭露头角,再到被Adobe XD 列为主要竞品,如今,摩客君已经在全球范围内 ...

  6. 给Array添加去重原型方法

    Array.prototype.unique = function(){ var newArray = []; var oldArray = this; if(oldArray.length<= ...

  7. HDFS系列 -- HDFS预研

    1 HDFS概述 由于传统集中式的物理服务器在存储容量和数据传输速度等方面都有限制,故而越来越不符合这些数据的实际存储需要. 在大数据时代,大数据处理需要解决的首要问题是:如何高效地存储所产生的规模庞 ...

  8. 提高搜狗SR值和关键词排名

    凭借“输入法-浏览器-搜索”三级火箭战略,搜狗搜狗使用率已超过10%,并成功挤掉谷歌成为国内第二大搜索引擎服务提供商.随着搜狗的快速发展,越来越多的站长将目光投向针对搜狗搜索的关键词优化. 大家都知道 ...

  9. sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ?

    sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ? sql server 2008安装的时候选NT A ...

  10. 2018.09.30 bzoj2741: 【FOTILE模拟赛】L(分块+可持久化01trie)

    传送门 数据结构经典题. 首先考虑另外一种询问方式. 已知权值val,在区间[1,n][1,n][1,n]中找一个数使得valvalval^a[i]a[i]a[i]最大. 这个可以直接01trie. ...