10:签到求n!取模

#include <iostream>
#include <iterator>
#include <algorithm>
typedef long long ll;
using namespace std;
const ll mod=1e6+;
ll n;
ll res[mod+];
int main(){
res[]=%mod;
res[]=%mod;
for(int i=;i<=mod+;i++){
res[i]=(res[i-]*i)%mod;
}
while(scanf("%lld",&n)!=EOF){
if(n>=mod) printf("0\n");
else printf("%lld\n",res[n]);
}
return ;
}

11:签到,主席树维护a[]数组,然后对于每个q,去询问区间第1大,第2大,第3大,如果不能组成三角形,则询问区间第4大,依次类推,询问次数最多为O(logn),总复杂度O(qlogn*logn)

/*
主席树维护区间[l,r]
查找第1大,第2大,第3大,第4大
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long long
ll a[maxn],n,b[maxn]; int tot,m,rt[maxn];
struct Node{int lc,rc,sum;}t[maxn*];
int update(int last,int l,int r,int pos){
int now=++tot;
t[now]=t[last];t[now].sum++;
if(l==r)return now;
int mid=l+r>>;
if(pos<=mid)
t[now].lc=update(t[last].lc,l,mid,pos);
else t[now].rc=update(t[last].rc,mid+,r,pos);
return now;
}
int query(int st,int ed,int l,int r,int k){
if(l==r)return l;
int mid=l+r>>;
int sum=t[t[ed].lc].sum-t[t[st].lc].sum;
if(k<=sum)return query(t[st].lc,t[ed].lc,l,mid,k);
else return query(t[st].rc,t[ed].rc,mid+,r,k-sum);
}
int build(int l,int r){
int now=++tot;
t[now].lc=t[now].rc=t[now].sum=;
if(l==r)return now;
int mid=l+r>>;
t[now].lc=build(l,mid);
t[now].rc=build(mid+,r);
return now;
} int main(){
int q;
while(scanf("%d%d",&n,&q)==){
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
b[i]=a[i];
}
sort(b+,b++n);
m=unique(b+,b++n)-(b+);
//cout<<m<<endl;
for(int i=;i<=n;i++)
a[i]=lower_bound(b+,b++m,a[i])-b; tot=;
rt[]=build(,m);
for(int i=;i<=n;i++)
rt[i]=update(rt[i-],,m,a[i]);
int l,r;
while(q--){
scanf("%d%d",&l,&r);
if(r-l+<){puts("-1");continue;}
int len=r-l+;
ll x=b[query(rt[l-],rt[r],,m,len)],y=b[query(rt[l-],rt[r],,m,len-)],z=b[query(rt[l-],rt[r],,m,len-)];
len-=;
while(x>=y+z){
if(len==)break;
x=y,y=z;z=b[query(rt[l-],rt[r],,m,len)];
len--;
}
if(x>=y+z)puts("-1");
else cout<<x+y+z<<'\n';
} }
}

12:队友过的规律题,从[1,n]里随机选一个数丢进函数里,问最后答案的期望值

实质是一个概率dp,可以通过n^2的转移来做,当然也可以直接找规律推出线性通项公式做

这是比较好的题解(比官方题解容易懂)https://www.cnblogs.com/isakovsky/p/11247444.html

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
const int MOD = ;
#define rep(i,n,m) for(int i=n;i<=m;++i)
const double eps = 1e-;
#define ll long long
using namespace std;
const int maxn = ;
const int maxm = 2e5 + ;
const int inf = << ;
typedef pair<int, int> P;
#define zero(a) fabs(a)<eps
inline int read()
{
int x = , f = ;
char ch = getchar();
while (ch < '' || ch > '')
{
if (ch == '-')
f = -;
ch = getchar();
}
while (ch >= '' && ch <= '')
{
x = * x + ch - '';
ch = getchar();
}
return x * f;
} ll quick_mod(ll x, ll n) {
ll res = ;
while (n) {
if (n & ) res = res * x % MOD;
x = x * x % MOD;
n = n >> ;
}
return res;
}
ll a[];
void init()
{
a[] = a[] = ;
a[] = ;
for (int i = ; i <= ; ++i)
a[i] = a[i - ] + (i - ) * ;
for (int i = ; i <= ; ++i)
a[i] += a[i - ];
}
int main()
{
ll n;
init();
while (~scanf("%lld", &n))
{
if (n == ) { cout << "" << endl; continue; }
ll a1 = a[n];
ll b = * n;
ll x = quick_mod(b, MOD - );
cout << a1 % MOD * x % MOD<<endl;
}
}

2019hdu第二场的更多相关文章

  1. 本周进步要点20161023(含李笑来第二场live笔记要点)

    本周主要忙于去武汉参加iDOF2016智能数字油田会议,会上做了题为“油田SOA及云平台的系统思考与实践”的报告,为了准备这篇报告,用到了一些以前学过的知识,具体内容见“参加iDOF2016会议的收获 ...

  2. 2014百度之星预赛(第二场)——Best Financing

    2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...

  3. Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)

    Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...

  4. 2018牛客暑期ACM多校训练营第二场(有坑未填)

    第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A   run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...

  5. 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...

  6. NOI.AC NOIP模拟赛 第二场 补记

    NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...

  7. DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27

    北京不亏为首都,人才济济,对微软DevOps解决方案感兴趣的人太多.我们与微软公司临时决定再家一场培训. 我之前在博客中(DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)h ...

  8. CTF-i春秋网鼎杯第二场misc部分writeup

    CTF-i春秋网鼎杯第二场misc部分writeup 套娃 下载下来是六张图片 直接看并没有什么信息 一个一个查看属性 没有找到有用信息 到winhexv里看一下 都是标准的png图片,而且没有fla ...

  9. 2018 计算之道初赛第二场 阿里巴巴的手机代理商(困难)(反向可持久化Trie)

    阿里巴巴的手机代理商(困难) 阿里巴巴的手机代理商正在研究 infra 输入法的新功能.他们需要分析单词频率以改进用户输入法的体验.于是需要你在系统内核里面写一个 API. API 有如下功能: 添加 ...

随机推荐

  1. Android 如何使edittext默认失去焦点

    1.在布局文件中给edittext的父控件增加两个属性 android:focusable="true" android:focusableInTouchMode="tr ...

  2. vue 表单输入绑定 checkbox

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 深入理解Magento – 第三章 – 布局,块和模板

    深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第三章 – 布局,块和模板 我们接着研究Magento.根据我们第二章讲的Magento MVC的架构,我们接下来 ...

  4. 对AngularJs的简单了解

    一.简单介绍 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得 ...

  5. ruby中数组认识

    a = 1...5这样赋值,a不是数组类型,1...5操作是一种枚举类型. a = ["1","2","3","4"], ...

  6. 神建模+dp——cf1236E

    首先将两个人的所有可能的操作建立成一个模型:m+2行n列的矩阵 序列A对应图上的格子(i,Ai),第0行作为起点,最后一行作为终点,每个点可以向左下,下,右下走,每种可行的情况对应图上的一条路径 推出 ...

  7. delphi 文件夹操作(监控)

    delphi 监控文件系统 delphi 监控文件系统 你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立.删除文件:改变文件或目录名字)呢? 这里介绍一种利用Win ...

  8. hive UDAF开发和运行全过程

    介绍 hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理.hive有两种UDAF:简单和通用.顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失, ...

  9. 关于Kerberos协议流程的总结

    Kerberos协议工作原理分析 这里面借用一下师傅们的图来说明一下    Kerberos协议的流程大致如下(假设A要获取对Server B的访问权限) 第一步(KRB_AS_REQ) 这一步客户 ...

  10. js 获取数组中的最大值和最小值

    var arr = [3,12,23,18,25,33,22,30,1] 方案一: 思想 首先对数组进行排序(小 >大),第一项为最小值,最后一项为最大值 var min; var max; a ...