累惹。

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. vmware fusion 10序列号

    vmware fusion pro  10序列号   亲测可用激活 FG3TU-DDX1M-084CY-MFYQX-QC0RD

  2. NABCD模型--软件工程

    1.N (Need 需求) 我们通过网络调查问卷的方式,收集样本数据,并对其进行分析和总结. 1.你是否为在校学生? 7.如果用过,你觉得还应该需要添加什么功能 通过调查发现,大多数学生并不是特别了解 ...

  3. 3. Install Spring-Tool-Suite & TestNG

    1.Install Spring-Tool-Suite 2.Install TestNG

  4. 2、HttpClient修改处理策略Strategy

    HttpClient提供了很多接口,让我们能自定义处理逻辑,这些接口可以在AbstractHttpClient中找到: setAuthSchemes(AuthSchemeRegistry); setC ...

  5. C++之new/delete/malloc/free详解

    主要内容: 1.  C语言中的函数malloc和free 2.  C++中的运算符new和delete 3.  new/delete与malloc/free之间的联系和区别 4.  C/C++程序的内 ...

  6. Java 增强 for 循环

    Java 增强 for 循环 Java5 引入了一种主要用于数组的增强型 for 循环. Java 增强 for 循环语法格式如下: for(声明语句 : 表达式) { //代码句子 } 声明语句:声 ...

  7. FIR IP

    (1)多通道系数处理 系数的格式 (1)       每组系数的长度必须一样长: (2)多组系数依次连接即可; 添加多组系数后会,FIR IP核在生成时会多出以下几个信号 .s_axis_config ...

  8. org.apache.cxf 官方骨架

    mvn archetype:generate -DarchetypeCatalog=remote 用 cxf 筛选结果 官方三大项目骨架 org.apache.cxf:cxf-http-basic ( ...

  9. SDK | 声波传输

    SDK | 声波传输 - 音频流生成 https://github.com/CloudSide/WaveTransSdk/tree/master/c/freq_util Objective-C: ht ...

  10. Java 容器 LinkedHashMap源码分析2

    一.类签名 LinkedHashMap<K,V>继承自HashMap<K,V>,可知存入的节点key永远是唯一的.可以通过Android的LruCache了解LinkedHas ...