题目链接

最后一题是Splay...还没有学会。。蒟蒻!!!

A

 /*************************************************************************
> File Name: A.cpp
> Author: Stomach_ache
> Mail: sudaweitong@gmail.com
> Created Time: 2014年09月28日 星期日 13时33分32秒
> Propose:
************************************************************************/ #include <cmath>
#include <string>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
/*Let's fight!!!*/ int n, A[]; int main(void) {
ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--) {
cin >> n;
for (int i = ; i < n; i++) cin >> A[i];
sort(A, A + n);
long long res = ;
for (int i = n - ; i >= ; i -= ) res += A[i];
cout << res << endl;
}
return ;
}

B

处理出每个素数在所有数中出现的次数最多的个数。

 /*************************************************************************
> File Name: B.cpp
> Author: Stomach_ache
> Mail: sudaweitong@gmail.com
> Created Time: 2014年09月28日 星期日 13时36分46秒
> Propose:
************************************************************************/
#include <map>
#include <cmath>
#include <string>
#include <cstdio>
#include <vector>
#include <fstream>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
/*Let's fight!!!*/ typedef pair<int, int> pii;
const int MAX_N = ;
const int MAX_M = ;
bool vis[MAX_M];
int prime[MAX_N], A[MAX_N], cnt; void init() {
cnt = ;
memset(vis, false, sizeof(vis));
for (int i = ; i < MAX_M; i++) {
if (!vis[i]) {
prime[++cnt] = i;
for (int j = *i; j < MAX_M; j += i) vis[j] = true;
}
}
} #define rep(i, n) for (int i = (1); i <= (n); i++) vector<pii> factor(MAX_M);
vector<pii>::iterator it; void work(int x, int y) {
if (factor[x].second == ) {
factor[x].second = y; }
else {
factor[x].second = max(y, factor[x].second);
}
} int main(void) {
init();
ios::sync_with_stdio(false);
int t, n;
cin >> t;
while (t--) {
rep (i, MAX_M) factor[i-].second = ;
cin >> n;
rep (i, n) cin >> A[i];
rep (i, n) {
int x = A[i];
if (x == ) continue;
rep (j, cnt) {
if (prime[j]*prime[j] > A[i]) break;
if (x % prime[j] == ) {
int tmp = ;
while (x % prime[j] == ) tmp++, x /= prime[j];
work(prime[j], tmp);
}
}
  if (x > ) work(x, );
}
int res = ;
for (it = factor.begin(); it != factor.end(); ++it) {
res += it->second;
}
cout << res << endl;
} return ;
}

C

线段树。

对于第一种修改,就是区间减1

对于第二种修改,就是单点更新

最后,查询每个点2,3,5因子的个数。

 /*************************************************************************
> File Name: C.cpp
> Author: Stomach_ache
> Mail: sudaweitong@gmail.com
> Created Time: 2014年09月28日 星期日 14时06分24秒
> Propose:
************************************************************************/
#include <cmath>
#include <string>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
/*Let's fight!!!*/ const int MAX_N = ;
int factor[][MAX_N], A[MAX_N], id[MAX_N];
#define rep(i, n) for (int i = (1); i <= (n); i++)
#define lson(x) ((x<<1))
#define rson(x) ((x<<1) | 1) struct node {
int l, r, Min[];
}Tr[MAX_N<<]; void build(int rt, int l, int r) {
Tr[rt].l = l, Tr[rt].r = r;
rep(i, ) Tr[rt].Min[i-] = ;
if (l == r) {
rep (i, ) Tr[rt].Min[i-] = factor[i-][l];
id[l] = rt;
return ;
}
int mid = (l + r) / ;
build(lson(rt), l, mid);
build(rson(rt), mid + , r);
} void pushdown(int rt, int p) {
if (Tr[rt].Min[p] != ) {
Tr[lson(rt)].Min[p] += Tr[rt].Min[p];
Tr[rson(rt)].Min[p] += Tr[rt].Min[p];
Tr[rt].Min[p] = ;
}
} void update1(int rt, int l, int r, int p) {
if (Tr[rt].l >= l && Tr[rt].r <= r) {
Tr[rt].Min[p]--;
return ;
}
pushdown(rt, p);
int mid = Tr[lson(rt)].r;
if (l <= mid) update1(lson(rt), l, r, p);
if (r > mid) update1(rson(rt), l, r, p);
} void update2(int rt, int l, int p, int d) {
if (Tr[rt].l == Tr[rt].r && Tr[rt].l == l) {
Tr[rt].Min[p] = d;
return ;
}
pushdown(rt, p);
int mid = Tr[lson(rt)].r;
if (l <= mid) update2(lson(rt), l, p, d);
else update2(rson(rt), l, p, d);
} int query(int rt, int l, int p) {
if (Tr[rt].l == Tr[rt].r && Tr[rt].l == l) {
return max(Tr[rt].Min[p], );
}
pushdown(rt, p);
int mid = Tr[lson(rt)].r;
if (l <= mid) query(lson(rt), l, p);
else query(rson(rt), l, p);
} void read(int &res) {
res = ;
char c = ' ';
while (c < '' || c > '') c = getchar();
while (c >= '' && c <= '') res = res*+c-'', c = getchar();
} int POW(int a, int b) {
int res = ;
while (b) {
if (b & ) res *= a;
a *= a;
b >>= ;
}
return res;
} int main(void) {
int N, M, a[] = {, , , };
read(N);
rep (i, N) {
read(A[i]);
int x = A[i];
factor[][i] = factor[][i] = factor[][i] = ;
rep (j, ) {
int tmp = , p = a[j];
while (x % p == ) tmp++, x /= p;
factor[j-][i] = tmp;
}
A[i] = x;
}
build(, , N);
read(M);
int t, l, r, p, d, tmp;
while (M--) {
read(t);
if (t == ) {
read(l), read(r), read(p);
update1(, l, r, (p+)/-);
} else {
read(l), read(d);
rep (i, ) {
tmp = , p = a[i];
while (d % p == ) tmp++, d /= p;
update2(, l, i-, tmp);
}
A[l] = d;
}
}
rep (i, N) {
rep (j, ) {
tmp = query(, i, j-);
A[i] *= POW(a[j], tmp);
  }
   printf("%d%c", A[i], i == N ? '\n' : ' ');
} return ;
}

D

LTIME16小结(CodeChef)的更多相关文章

  1. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  5. iOS 之UITextFiled/UITextView小结

    一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...

  6. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  7. scikit-learn随机森林调参小结

    在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...

  8. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  9. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

随机推荐

  1. csp-s模拟64trade,sum,building题解

    题面:https://www.cnblogs.com/Juve/articles/11639755.html trade: 70分sbdp,然后一直想优化,dp还是很好写的 正解是反悔贪心 维护一个小 ...

  2. Python-数据类型内置方法(2)

    目录 元组(tuple) 内置方法: 字典(dict) 内置方法: 优先掌握: 需要掌握 集合(set) 优先掌握 深浅拷贝 拷贝(赋值) 浅拷贝 深拷贝 总结 存值个数 有序 or 无序 可变 or ...

  3. 深入浅出 Java Concurrency (35): 线程池 part 8 线程池的实现及原理 (3)[转]

    线程池任务执行结果 这一节来探讨下线程池中任务执行的结果以及如何阻塞线程.取消任务等等. 1 package info.imxylz.study.concurrency.future;2 3 publ ...

  4. tcp为什么要三次握手,四次挥手

    tcp为什么要三次握手,tcp为什么可靠. 为什么不能两次握手:(防止已失效的连接请求又传送到服务器端,因而产生错误) 假设改为两次握手,client端发送的一个连接请求在服务器滞留了,这个连接请求是 ...

  5. codeforces 1099E-Nice table

    传送门:QAQQAQ 题意:给你一个矩阵只有AGCT,若对于每一个2*2的子矩阵中的四个字母互不相同,则称为这个矩阵是nice的,问至少变矩阵中的几个点可以使矩阵变nice 思路:没什么思路……就是大 ...

  6. Django项目订单接入支付宝

    1.首先下载所需要的包 pip install python-alipay-sdk 2.在视图函数里面引入所需要的类 from alipay import AliPay 3.利用这个类创建一个实例对象 ...

  7. eclipse memory analyzer对系统内存溢出堆文件解析(转)

    本文转之:https://blog.csdn.net/rachel_luo/article/details/8992461 前言 性能分析工具之-- Eclipse Memory Analyzer t ...

  8. UNION All中ORDER By的使用

    一个sql中,union了几个子查询.单独执行每个子查询都没问题,但union后执行,报ORA-00904: "xxx": invalid identifier关于union的使用 ...

  9. python collections 模块 之 deque

    class collections.deque(iterable[,maxlen]): 返回 由可迭代对象初始化的 从左向右的 deque 对象. maxlen: deque 的最大长度,一旦长度超出 ...

  10. 08-background详解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...