。。。 后面四个小时都在挂机很难受。

1010

裸的逆序对

//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pi acos(-1.0)
#define ll long long
#define vi vector<int>
#define mod 1000000007
#define ld long double
#define C 0.5772156649
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
#define cd complex<double>
#define ull unsigned long long
#define base 1000000000000000000
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define fio ios::sync_with_stdio(false);cin.tie(0)
inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
inline void sub(ll &a,ll b){a-=b;if(a<)a+=mod;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll qp(ll a,ll b){ll ans=;while(b){if(b&)ans=ans*a%mod;a=a*a%mod,b>>=;}return ans;} using namespace std; const double eps=1e-;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=+,maxn=+,inf=0x3f3f3f3f; struct BIT{
ll sum[N];
void add(int i,int v)
{
for(;i<N;i+=i&(-i))sum[i]+=v;
}
ll query(int i)
{
ll ans=;
for(;i;i-=i&(-i))ans+=sum[i];
return ans;
}
}b;
int Hash[N],a[N];
int main()
{
int n,x,y;
while(~scanf("%d%d%d",&n,&x,&y))
{
memset(b.sum,,sizeof b.sum);
int cnt=;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
Hash[cnt++]=a[i];
}
sort(Hash,Hash+cnt);
cnt=unique(Hash,Hash+cnt)-Hash;
ll ans=;
for(int i=;i<=n;i++)
{
a[i]=lower_bound(Hash,Hash+cnt,a[i])-Hash+;
// printf("%d ",a[i]);
b.add(a[i],);
ans+=b.query(cnt+)-b.query(a[i]);
}
// puts("");
printf("%lld\n",ans*min(x,y));
}
return ;
}
/******************** ********************/

1004

因为1的存在所以先手必胜

1007

因为序列b为 1, 2, 3, 4, 5, 6 .... n, 所以所有点的更新次数不超过 m/1 + m/2 + m/3 .... + m/n = mlogm,

所以就是暴力扣出要更新的点更新就好啦。 天天写搓lazy,反思一下。。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = 1e5 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int n, q, b[N], mx[N << ], lazy[N << ], stk[N], tot;
char s[N]; struct BIT {
int a[N];
void init() {
memset(a, , sizeof(a));
}
void modify(int x, int v) {
for(int i = x; i <= n; i += i & -i)
a[i] += v;
}
int query(int x) {
int ans = ;
for(int i = x; i; i -= i & -i)
ans += a[i];
return ans;
}
} bit; void build(int l, int r, int rt) {
lazy[rt] = ;
if(l == r) {
mx[rt] = -b[l];
return;
} int mid = l + r >> ;
build(l, mid, rt << );
build(mid + , r, rt << | );
mx[rt] = max(mx[rt << ], mx[rt << | ]);
} void pushdown(int rt) {
if(lazy[rt] != ) {
lazy[rt << ] += lazy[rt];
lazy[rt << | ] += lazy[rt];
mx[rt << ] += lazy[rt];
mx[rt << | ] += lazy[rt];
lazy[rt] = ;
}
} void update(int L, int R, int v, int l, int r, int rt) {
if(l >= L && r <= R) {
lazy[rt] += v;
mx[rt] += v;
return;
} int mid = l + r >> ; pushdown(rt); if(L <= mid) update(L, R, v, l, mid, rt << );
if(R > mid) update(L, R, v, mid + , r, rt << | ); mx[rt] = max(mx[rt << ], mx[rt << | ]);
} void solve(int l, int r, int rt) {
if(mx[rt] < ) return;
if(l == r) {
stk[tot++] = l;
return;
} int mid = l + r >> ;
pushdown(rt); solve(l, mid, rt << );
solve(mid + , r, rt << | ); } int main() { while(scanf("%d%d", &n, &q) != EOF) {
bit.init();
for(int i = ; i <= n; i++) {
scanf("%d", &b[i]);
}
build(, n, ); while(q--) {
int l, r;
scanf("%s%d%d", s, &l, &r);
if(s[] == 'a') {
update(l, r, , , n, );
tot = ;
solve(, n, ); for(int i = ; i < tot; i++) {
update(stk[i], stk[i], -b[stk[i]], , n, );
bit.modify(stk[i], );
} } else {
printf("%d\n", bit.query(r) - bit.query(l - ));
}
}
}
return ;
} /*
*/

补题-----------------------------------------------------------------

1005

比赛的时候一直构造不出来。。 很神奇的构造方法。。。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int a[N][N]; int main() { int p = ;
for(int i = ; i < p; i++) {
for(int j = ; j < p; j++) {
for(int k = ; k < p; k++) {
a[i * p + j][k * p + (j * k + i) % p] = ;
}
}
} puts("");
for(int i = ; i < ; i++) {
for(int j = ; j < ; j++) {
printf("%d", a[i][j]);
}
puts("");
}
return ;
} /*
*/

1003

后面一直在写这个题, 构造虚拟点,去掉多余的边,方法都想出来了,可能是对欧拉回路不够了解,一直没a,后来队友补了。

hdu多校 2的更多相关文章

  1. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  2. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  3. 2015 HDU 多校联赛 5363 Key Set

    2015 HDU 多校联赛 5363 Key Set 题目: http://acm.hdu.edu.cn/showproblem.php? pid=5363 依据前面给出的样例,得出求解公式 fn = ...

  4. 2015 HDU 多校联赛 5317 RGCDQ 筛法求解

    2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据 ...

  5. [HDU多校]Ridiculous Netizens

    [HDU多校]Ridiculous Netizens 点分治 分成两个部分:对某一点P,连通块经过P或不经过P. 经过P采用树形依赖背包 不经过P的部分递归计算 树型依赖背包 v点必须由其父亲u点转移 ...

  6. 【杂题总汇】HDU多校赛第十场 Videos

    [HDU2018多校赛第十场]Videos 最后一场比赛也结束了…… +HDU传送门+ ◇ 题目 <简要翻译> 有n个人以及m部电影,每个人都有一个快乐值.每场电影都有它的开始.结束时间和 ...

  7. hdu多校1002 Balanced Sequence

    Balanced Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  8. HDU多校(Distinct Values)

    Problem Description Chiaki has an array of n positive integers. You are told some facts about the ar ...

  9. hdu多校6

    这个场要恶心死我了.. 1001 积分题,不要四舍五入 //#pragma comment(linker, "/stack:200000000") //#pragma GCC op ...

  10. hdu 多校第一场

    1001 思路:打表可以发现只有3|n 和 4|n 的情况有解,判一下就好啦. #include<bits/stdc++.h> #define LL long long #define f ...

随机推荐

  1. bzoj 1179 [Apio2009]Atm 缩点+最短路

    [Apio2009]Atm Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 4290  Solved: 1893[Submit][Status][Dis ...

  2. 远端WEB服务器上存在/robots.txt文件

    解决方案: 1. 可直接删除(可参考:http://zh.wikipedia.org/wiki/Robots.txt) ,但不利于SEO等 2. 修改Web服务器配置 可以通过Web服务器(如Apac ...

  3. JS如何判断是不是iphoneX

    function isIphoneX(){ return /iphone/gi.test(navigator.userAgent) && (screen.height == 812 & ...

  4. Linux命令之pstree - 以树状图显示进程间的关系

    pstree命令以树状图显示进程间的关系(display a tree of processes).ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰.在Linux系 ...

  5. android程序员成长路径的思考

    我之前就想过要写这个话题,不过之前没有什么认识,我只是在阅读别人的见解,看法.昨天晚上,我阅读了这篇文章<产品经理罗永浩:用户体验探索,没有尽头>,这篇文章描述了罗永浩对锤子手机设计细节的 ...

  6. 【BZOJ3884】上帝与集合的正确用法 [欧拉定理]

    上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Input 第一行一个T ...

  7. Maven整体认识——详细介绍

    前言 本文可以帮助你加深对Maven的整体认识,不是一篇基础文章.如果你现在还没有用 Maven 跑过 HelloWorld,那么本文可能不适合你. 一.Maven简介 Maven 官网:https: ...

  8. Spring与MyBatis的整合(山东数漫江湖)

    首先看一下项目结构图: 具体步骤如下: 1.建立JDBC属性文件 jdbc.properties (文件编码修改为 utf-8 ) driver=com.mysql.jdbc.Driver url=j ...

  9. dot.js使用心得

    一.dot.js介绍 最近用到的数据模板引擎有很多,今天讲的doT.js也是其中一种. doT.js的特点是体积小,速度快,并且不依赖其他插件. 官网下载:http://olado.github.io ...

  10. vue-awesome-swipe 基于vue使用的轮播组件 使用(改)

    npm install vue-awesome-swiper --save  //基于vue使用的轮播组件 <template> <swiper :options="swi ...