UOJ Round #1

难度很良心啊!

做出了前两题,第三题看到仙人掌就吓哭了。


【UR #1】缩进优化

就是求

\[\sum_{i=1}^n a_i - (x-1)\sum_{i=1}^n\lfloor \frac{a_i}{x} \rfloor
\]

最小值。

调和级数\(O(nlogn)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 2e6+5, mo = 998244353;
inline int read() {
char c=getchar(); int x=0,f=1;
while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
return x*f;
} int n, a[N], m, s[N];
ll ans = 1e18, sum = 0;
ll cal(int x) { //printf("cal %d\n", x);
int lim = m/x;
ll ans = 0;
for(int i=1; i<=lim; i++) ans += i * (s[(i+1) * x - 1] - s[i * x -1]);
//printf("ans %lld %lld\n", ans, sum - (x-1) * ans);
return sum - (x-1) * ans;
}
int main() {
freopen("in", "r", stdin);
n = read();
for(int i=1; i<=n; i++) a[i] = read(), m = max(m, a[i]), s[a[i]]++, sum += a[i];
for(int i=1; i<=m<<1; i++) s[i] += s[i-1];// printf("%d ", s[i]); puts(" s");
for(int x=1; x<=m; x++) ans = min(ans, cal(x));
printf("%lld\n", ans);
}

【UR #1】外星人

题意:

n序列\(a_i\),对于一个排列,x按顺序分别对他们取模,最后得到y,求\(\mid x-y\mid\)最小值以及对应的排列方案数。

题解:

看到排列,当然想到按某种顺序一个个插入

从小到大插入,\(f[i][j]\)表示前i个一开始数是j,最后得到的最大值和方案数

第i个数要产生影响只能放在开头

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
#define fir first
#define sec second
const int N = 1005, M = 5005, mo = 998244353;
inline int read() {
char c=getchar(); int x=0,f=1;
while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
return x*f;
} int n, x, a[N];
pair<int, int> f[N][M];
int main() {
freopen("in", "r", stdin);
n = read(); x = read();
for(int i=1; i<=n; i++) a[i] = read();
sort(a+1, a+n+1); for(int j=0; j<=x; j++) f[1][j] = make_pair(j % a[1], 1);
for(int i=2; i<=n; i++)
for(int j=0; j<=x; j++) {
pair<int, int> x(f[i-1][j].fir, (ll) (i-1) * f[i-1][j].sec %mo), y = f[i-1][j % a[i]];
if(x.fir == y.fir) f[i][j] = make_pair(x.fir, (x.sec + y.sec) %mo);
else f[i][j] = max(x, y);
} printf("%d\n%d", f[n][x].fir, f[n][x].sec);
}

【UR #1】跳蚤国王下江南

20分暴力!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
#define fir first
#define sec second
const int N = 1005, mo = 998244353;
inline int read() {
char c=getchar(); int x=0,f=1;
while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
return x*f;
} int n, m, u, v;
struct edge {int v, ne;} e[N<<2];
int cnt, h[N];
inline void ins(int u, int v) {
e[++cnt] = (edge) {v, h[u]}; h[u] = cnt;
e[++cnt] = (edge) {u, h[v]}; h[v] = cnt;
}
bool vis[N];
int ans[N];
void dfs(int u, int l) {
ans[l] ++;
vis[u] = 1;
for(int i=h[u]; i; i=e[i].ne)
if(!vis[e[i].v]) dfs(e[i].v, l+1);
vis[u] = 0;
}
int main() {
freopen("in", "r", stdin);
n = read(); m = read();
for(int i=1; i<=m; i++) ins(read(), read());
dfs(1, 0);
for(int i=1; i<n; i++) printf("%d\n", ans[i]);
}

UOJ Round #1 [数论 | DP 排列]的更多相关文章

  1. 【UOJ Round #1】

    枚举/DP+排列组合 缩进优化 QAQ我当时一直在想:$min\{ \sum_{i=1}^n (\lfloor\frac{a[i]}{x}\rfloor + a[i] \ mod\ x) \}$ 然而 ...

  2. 【UOJ Round #5】

    构造+贪心/数论 为什么只有两个标题呢……因为第二题我不会…… 怎样提高智商 构造题……然而一开始半天我都yy不出来…… 后来我想:这题应该不会特别麻烦,而且既然样例只给了1,可能再给大一点就让人发现 ...

  3. UOJ Round #15 [构造 | 计数 | 异或哈希 kmp]

    UOJ Round #15 大部分题目没有AC,我只是水一下部分分的题解... 225[UR #15]奥林匹克五子棋 题意:在n*m的棋盘上构造k子棋的平局 题解: 玩一下发现k=1, k=2无解,然 ...

  4. 【BZOJ】2111: [ZJOI2010]Perm 排列计数 计数DP+排列组合+lucas

    [题目]BZOJ 2111 [题意]求有多少1~n的排列,满足\(A_i>A_{\frac{i}{2}}\),输出对p取模的结果.\(n \leq 10^6,p \leq 10^9\),p是素数 ...

  5. 【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值

    [题意]n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui].B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数.当有一 ...

  6. 【UOJ Round #8】

    A 一道不错的题,虽然大家都觉得是水题,然而蒟蒻我想出来的好慢……Orz alpq 发现其实就是一个网格图,每一个大块都是同一颜色……横纵坐标互不干扰…… //UOJ Round #8 A #incl ...

  7. 【bzoj1408】[Noi2002]Robot 数论+dp

    题目描述 输入 输出 样例输入 3 2 1 3 2 5 1 样例输出 8 6 75 题解 语文题+数论+dp 花了大段讲述什么叫mu,什么叫phi,只是新定义的mu将2看作有平方因子,新定义的phi( ...

  8. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律

    [LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...

  9. LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律

    二次联通门 : LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律 /* LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律 set ...

随机推荐

  1. 北京师范大学校赛C

    https://www.nowcoder.com/acm/contest/submit/0dff89ad7b8444719df155d507f3e1dd?ACMContestId=3&tagI ...

  2. Kafka监控安装

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  3. UEP-级联下拉

    级联查询在UEP中采用动态下拉的形式,cascadeid为关键字,注意jsp页面的id的相互嵌套关系, 数据库字段的数值的设置,和动态下拉SQL语句的书写. <td align="ce ...

  4. 狗书无敌,天下第一(flask基础)

    为什么选择使用flask? 和其他框架相比, Flask 之所以能脱颖而出,原因在于它让开发者做主,使其能对程序具有全面的创意控制. 在 Flask 中,你可以自主选择程序的组件,如果找不到合适的,还 ...

  5. centos 6.4 mysql rpm 离线安装【备忘】

    离线状态下使用rpm的安装包进行mysql的安装,仅作备忘 准备工作: 官网下载mysql离线rpm安装包(这里就不演示了,拿现成的做演示) =================更新线 2018-01- ...

  6. 织梦DEDECMS更换目录后页面内的图片和缩略图无法显示解决方法

    http://www.win8f.com/seoyouhua/6609.html 很多人碰到织梦更换目录后内容图片和缩略图无法显示的问题,在此,慧鸿网络特地搜集整理了一篇关于织梦出现缩略图和内容无法显 ...

  7. 阿里云部署SSL证书详解

    http://mp.weixin.qq.com/s/NV7Zad4DVEgzG2GCHYJVLw 查找中间证书 为了确保兼容到所有浏览器,我们必须在阿里云上部署中间证书,如果不部署证书,虽然安装过程可 ...

  8. intellij idea on update action\on frame deactivation ||Servlet 页面不同步问题

    当修改servlet源码时,对应的servlet页面即使刷新也不会改变,,,很烦躁 因为xx.java需要编译成xx.class后,再部署到服务器上才可以运行,所以问题就是服务器里的类文件并没有更新. ...

  9. 阿里大鱼 阿里云api

    阿里短信服务API接入指南及示例  : https://yq.aliyun.com/articles/59928 =========================================== ...

  10. destoon各栏目调用汇总

    ================================================================== destoon各栏目调用汇总 ================== ...