A - Absolute

留坑。

B - Counting Permutations

留坑。

C - Cover

留坑。

D - Game

puts("Yes")

 #include <bits/stdc++.h>

 using namespace std;

 int n;

 int main()
{
while (scanf("%d", &n) != EOF)
{
puts("Yes");
}
return ;
}

E - Hack It

留坑。

F - Matrix

留坑。

G - Naive Operations

题意:给出$b[]$数组,里面是$1-n$ 的全排列,两种操作,一个区间+1,一个是区间求$\sum_{i = l} ^ {i = r} \lfloor \frac{a_i}{b_i} \rfloor$

思路:维护一个Min 表示这个区间内需要的最少的进位,如果有进位,就更新到底,如果没有进位就区间更新

 #include <bits/stdc++.h>

 using namespace std;

 #define N 100010
#define ll long long ll arr[N]; struct node
{
int l, r;
ll Min, lazy, sum, v;
inline node() {}
inline node(int _l, int _r)
{
l = _l; r = _r;
Min = , lazy = , sum = , v = ;
}
}tree[N << ]; inline void pushup(int id)
{
tree[id].Min = min(tree[id << ].Min, tree[id << | ].Min);
tree[id].sum = tree[id << ].sum + tree[id << | ].sum;
} inline void pushdown(int id)
{
if(tree[id].l >= tree[id].r) return;
if(tree[id].lazy)
{
tree[id << ].lazy += tree[id].lazy;
tree[id << | ].lazy += tree[id].lazy;
tree[id << ].Min -= tree[id].lazy;
tree[id << | ].Min -= tree[id].lazy;
tree[id].lazy = ;
}
} inline void build(int id, int l, int r)
{
tree[id] = node(l, r);
if (l == r)
{
tree[id].v = arr[l];
tree[id].Min = arr[l];
return;
}
int mid = (l + r) >> ;
build(id << , l, mid);
build(id << | , mid + , r);
pushup(id);
} inline void update(int id, int l, int r)
{
if (tree[id].l == l && tree[id].r == r && tree[id].Min > )
{
tree[id].lazy++;
tree[id].Min--;
return ;
}
if(tree[id].l == tree[id].r && tree[id].Min == )
{
tree[id].Min = tree[id].v;
tree[id].sum++;
return ;
}
pushdown(id);
int mid = (tree[id].l + tree[id].r) >> ;
if (r <= mid) update(id << , l, r);
else if (l > mid) update(id << | , l, r);
else
{
update(id << , l, mid);
update(id << | , mid + , r);
}
pushup(id);
} ll anssum; inline void query(int id, int l, int r)
{
if (tree[id].l >= l && tree[id].r <= r)
{
anssum += tree[id].sum;
return;
}
pushdown(id);
int mid = (tree[id].l + tree[id].r) >> ;
if (l <= mid) query(id << , l, r);
if (r > mid) query(id << | , l, r);
pushup(id);
} int n, m;
char str[];
int l, r; int main()
{
while(~scanf("%d %d", &n, &m))
{
for(int i = ; i <= n; ++i) scanf("%lld", arr + i);
build(, , n);
for(int i = ; i <= m; ++i)
{
scanf("%s", str);
if(str[] == 'a')
{
scanf("%d %d", &l, &r);
update(, l, r);
}
else
{
scanf("%d %d", &l, &r);
anssum = ;
query(, l, r);
printf("%lld\n", anssum);
}
}
}
return ;
}

H - Odd Shops

留坑。

I - Segment

留坑。

J - Swaps and Inversions

水。逆序对的意义就是每次只能交换相邻两个,最少的交换次数

 #include <bits/stdc++.h>

 using namespace std;

 #define ll long long
#define N 100010 int n, m; ll x, y;
int arr[N], brr[N];
int a[N]; inline void Init()
{
for (int i = ; i <= n; ++i) brr[i] = arr[i];
sort(brr + , brr + + n);
m = unique(brr + , brr + + n) - brr - ;
} inline int Get(int x)
{
return lower_bound(brr + , brr + + m, x) - brr;
} inline int lowbit(int x)
{
return x & (-x);
} inline void update(int x, int val)
{
for (int i = x; i <= n; i += lowbit(i))
a[i] += val;
} inline int query(int x)
{
int res = ;
for (int i = x; i > ; i -= lowbit(i))
res += a[i];
return res;
} int main()
{
while (scanf("%d%lld%lld", &n, &x, &y) != EOF)
{
for (int i = ; i <= n; ++i) scanf("%d", arr + i);
Init(); memset(a, , sizeof a);
for (int i = ; i <= n; ++i) arr[i] = Get(arr[i]);
ll ans = ;
for (int i = ; i <= n; ++i)
{
// ans += i - 1 - query(arr[i] - 1);
// printf("%d %d\n", arr[i], query(arr[i] - 1));
update(arr[i], );
ans += i - query(arr[i]);
// cout << arr[i] << " " << query(arr[i]) << endl;
}
printf("%lld\n", min(ans * x, ans * y));
}
return ;
}

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

  1. 2018 Multi-University Training Contest 1 Solution

    A - Maximum Multiple 题意:给出一个n 找x, y, z 使得$n = x + y +z$ 并且 $n \equiv 0 \pmod x, n \equiv 0 \pmod y, ...

  2. 2018 Multi-University Training Contest 3 Solution

    A - Problem A. Ascending Rating 题意:给出n个数,给出区间长度m.对于每个区间,初始值的max为0,cnt为0.遇到一个a[i] > ans, 更新ans并且cn ...

  3. 2018 Multi-University Training Contest 4 Solution

    A - Problem A. Integers Exhibition 留坑. B - Problem B. Harvest of Apples 题意:计算$\sum_{i = 0}^{i = m}C( ...

  4. 2018 Multi-University Training Contest 5 Solution

    A - Always Online Unsolved. B - Beautiful Now Solved. 题意: 给出一个n, k  每次可以将n这个数字上的某两位交换,最多交换k次,求交换后的最大 ...

  5. 2018 Multi-University Training Contest 6 Solution

    A - oval-and-rectangle 题意:给出一个椭圆的a 和 b,在$[0, b]中随机选择c$ 使得四个顶点在椭圆上构成一个矩形,求矩形周长期望 思路:求出每种矩形的周长,除以b(积分) ...

  6. 2018 Multi-University Training Contest 7 Solution

    A - Age of Moyu 题意:给出一张图,从1走到n,如果相邻两次走的边的权值不同,花费+1, 否则花费相同,求最小花费 思路:用set记录有当前点的最小花费有多少种方案到达,然后最短路 #i ...

  7. 2018 Multi-University Training Contest 8 Solution

    A - Character Encoding 题意:用m个$0-n-1$的数去构成k,求方案数 思路:当没有0-n-1这个条件是答案为C(k+m-1, m-1),减去有大于的关于n的情况,当有i个n时 ...

  8. 2018 Multi-University Training Contest 9 Solution

    A - Rikka with Nash Equilibrium 题意:构造一个$n * m$的矩阵,使得$[1, n * m]$ 中每个数只出现一次,并且纳什均衡只出现一次. 思路:从大到小的放置,每 ...

  9. 2018 Multi-University Training Contest 10 Solution

    A - Problem A.Alkane 留坑. B - Problem B. Beads 留坑. C - Problem C. Calculate 留坑. D - Problem D. Permut ...

随机推荐

  1. BI产品学习笔记

    理解现在--挖掘规律--预测未来------------------------------------------------------精准营销智能风控运营优化 多维分析挖掘预测敏捷BI 分析展示 ...

  2. java中Double的isInfinite()和isNaN()

    在Double和Float类中都有这两个方法,用于判断是否是无穷大及是否为非数字 public boolean isInfinite()如果此对象表示的值是正无穷大或负无穷大,则返回 true:否则返 ...

  3. [笔试题]黑板上写下50个数字,选两个黑板上数字a和b,在黑板写|b-a|,剩下的数字?

    在黑板上写下50个数字:1至50.在接下来的49轮操作中,每次做如下操作:选取两个黑板上的数字a和b,擦去,在黑板上写|b-a|.请问最后一次动作之后剩下的数字可能是什么?为什么?(不用写代码,不写原 ...

  4. Android的读写文件及权限设置

    drwx read write excute openFileOutput(name,drwx); 用系统api读取文件 设置文件生成的权限:    public static boolean sav ...

  5. HTML和CSS的精华

    今天又是周一喽,我们开始啦又一周的学习啦,想一想,在这里学习已经一个月啦,不知什么时间已经习惯啦这种生活,我应该是一个很难适应环境的人啊,但是现在在这里感觉还可以哦,可能是来到这里有自己的目标吧,所以 ...

  6. 如何配置samba 要求共享文件夹public

    第一步:在根下执行:mkdir /public 修改下权限:chmod 777 /public第二步:vi /etc/samba/smb.conf修改如下配置:修改security = user为se ...

  7. Sencha Cmd创建Ext JS示例项目

    Sencha提供了免费的Cmd工具,可以用来创建Ext JS项目并提供了一些便利的功能. Sencha也在官方文档中提供了一个示例来演示如何创建一个Sample Login App. 本文就介绍一下这 ...

  8. javascript:;禁用a标签默认功能的缺点。

    在使用a标签做切换tab或者其他功能时,经常使用javascript:;来作为a标签的href来使用. 缺点: 1.在js尚未加载的情况下,点击该a标签会弹出新窗口. 2.会使gif动画失效(没经历过 ...

  9. TDD中的单元测试写多少才够?

    测试驱动开发(TDD)已经是耳熟能详的名词,既然是测试驱动,那么测试用例代码就要写在开发代码的前面.但是如何写测试用例?写多少测试用例才够?我想大家在实际的操作过程都会产生这样的疑问. 3月15日,我 ...

  10. [IIS] IIS Framework "aspnet_regiis.exe" 注册

    Error:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“