2017 Russian Code Cup (RCC 17), Final Round

Set Theory

思路:原题转换一下就是找一个b数组,使得b数组任意两个数的差值都和a数组任意两个数的差值相等

根据题目数据范围, 肯定可以构造一个1, 1+d, 1+2d, 1+3d, ... , 1+(n-1)*d的序列

代码:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head const int N = , M = 1e6 + ;
int a[N];
bool vis[M];
int main() {
int n, T;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
for (int i = ; i <= n; i++) scanf("%d", &a[i]);
sort(a+, a++n);
bool f = true;
for (int i = ; i <= n; i++) {
if(a[i] == a[i-]) {
f = false;
break;
}
}
if(!f) {
puts("NO");
continue;
}
f = true;
mem(vis, false);
for (int i = ; i <= n; i++) {
for (int j = i+; j <= n; j++) {
vis[a[j] - a[i]] = true;
}
}
for (int i = ; i <= ; i++) {
if(!vis[i]) {
int cnt = ;
for (int j = i+i; j <= ; j += i) {
if(!vis[j]) cnt++;
else break;
}
if(cnt >= n-) {
f = false;
puts("YES");
for (int j = ; j <= n; j ++) printf("%d ", +(j-)*i);
printf("\n");
break;
}
}
}
if(f) puts("NO");
}
return ;
}

Similar Words

思路:对于每一个字符串xy, 如果它删去最前面字母得到的后缀y是某个串的前缀的话,我们把xy -> y

这样就会形成一个内向树森林,然后就是求任意两个相邻点最多选一个的点集的最大大小,这个可以用树形dp实现

然后就是要用字符串hash把字符串映射到数,这道题卡单hash,要用双hash

代码:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head const int N = 1e6 + , base1 = , base2 = ;
const int MOD = 1e9 + ;
string s[N];
bool vis[N];
vector<int> g[N];
vector<pair<ULL, ULL>> vc;
int dp[N][];
int dfs(int u, int o, int st) {
if(~dp[u][st]) return dp[u][st];
if(vis[u]) vis[u] = false;
int ans = ;
if(st) ans = ;
for (int v : g[u]) {
if(v != o) {
if(st == ) ans += dfs(v, u, );
else ans += max(dfs(v, u, ), dfs(v, u, ));
}
}
return dp[u][st] = ans;
}
int main() {
fio;
int T, n;
cin >> T;
while(T--) {
cin >> n;
for (int i = ; i < n; i++) cin >> s[i];
vc.clear();
for (int i = ; i < n; i++) {
ULL pre1 = , pre2 = ;
for (int j = ; j < s[i].size(); j++) {
pre1 = (pre1*base1 + s[i][j]-'a'+) % MOD;
pre2 = pre2*base2 + s[i][j]-'a'+;
vc.pb({pre1, pre2});
}
}
sort(vc.begin(), vc.end());
for (int i = ; i < n; i++) {
ULL pre1 = , nxt1 = , pre2 = , nxt2 = ;
for (int j = ; j < s[i].size(); j++) {
pre1 = (pre1*base1 + s[i][j]-'a'+) % MOD;
pre2 = pre2*base2 + s[i][j]-'a'+;
if(j == ) {
int t = lower_bound(vc.begin(), vc.end(), pair<ULL,ULL>{pre1, pre2}) -vc.begin();
if(!vis[t]) {
vis[t] = true;
}
}
else {
nxt1 = (nxt1*base1 + s[i][j]-'a'+) % MOD;
nxt2 = nxt2*base2 + s[i][j]-'a'+;
int t = lower_bound(vc.begin(), vc.end(), pair<ULL,ULL>{pre1, pre2}) - vc.begin();
if(!vis[t]) {
vis[t] = true;
int tt = lower_bound(vc.begin(), vc.end(), pair<ULL,ULL>{nxt1, nxt2}) - vc.begin();
if(tt != vc.size() && vc[tt] == pair<ULL,ULL>{nxt1, nxt2}) {
g[t].pb(tt);
g[tt].pb(t);
}
}
}
}
}
int up = vc.size();
for (int i = ; i < up; i++) dp[i][] = dp[i][] = -;
int ans = ;
for (int i = ; i < up; i++) {
if(vis[i]) {
ans += max(dfs(i, i, ), dfs(i, i, ));
}
}
cout << ans << endl;
for (int i = ; i < up; i++) g[i].clear(), vis[i] = false;
}
return ;
}

Eleventh Birthday

Masha and Cactus

Satellites

To Play or not to Play

2017 Russian Code Cup (RCC 17), Final Round的更多相关文章

  1. 2017 Russian Code Cup (RCC 17), Elimination Round D - Acute Triangles

    D - Acute Triangles 思路: 极角排序+点积叉积 在一个三角形中,如果它是直角或者顿角三角形,那么直角和顿角只会出现一次 所以直角和顿角三角形的个数等于直角和顿角的个数 所以锐角三角 ...

  2. 2016 Russian Code Cup (RCC 16), Final Round B - Cactusophobia

    B - Cactusophobia 思路: 点双联通分量+最大流 用tarjan求出每个点双联通分量 对于大小大于1的点双联通分量,它就是个环,那么源点和这个环相连, 容量为环的大小减一,这个环和环上 ...

  3. [Russian Code Cup 2017 - Finals [Unofficial Mirror]]简要题解

    来自FallDream的博客,未经允许,请勿转载,谢谢. Div1难度+ACM赛制  和几个大佬组队逛了逛 A.给一个大小为n的集合ai(1<=ai<=1000000),要求你构造一个大小 ...

  4. CF Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)

    1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort    暴力枚举,水 1.题意:n*m的数组, ...

  5. 2017中国无人机公开赛 总决赛 CDR Final 竞赛规则

    2017中国无人机公开赛总决赛 CDR Final竞赛规则 V2 二〇一七年八月(修订) 一. 竞赛项目描述(一) 无人机绕标竞速赛(专业组)飞行员通过佩戴眼镜或显示屏采用第一视角飞行,使用无线电遥控 ...

  6. Yandex.Algorithm 2018, final round

    Yandex.Algorithm 2018, final round A Smart Vending B LIS vs. LDS C Eat And Walk D Search Engine E Gu ...

  7. Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words

    Google Code Jam Africa 2010 Qualification Round Problem B. Reverse Words https://code.google.com/cod ...

  8. IntelliJ IDEA 2017.3.5 安装 lombok-plugin-0.17 失败,通过网络下载总是超时

    1.问题: IntelliJ IDEA 2017.3.5 安装 lombok-plugin-0.17 失败,通过网络下载总是超时: 2.原因:IntelliJ IDEA 2017.3.5 目前还不支持 ...

  9. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)

    这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...

随机推荐

  1. django-CRM-项目部署

    流程 rbac组件的应用 1:拷贝rbac组件到新的项目中,执行注册 2:数据库迁移 先删除rbac下migrations下除了init之外的所有文件 修改用户表 class User(models. ...

  2. svn和NetBeans一起使用造成svn老是死锁, database is locked

    其实我一直没发现,又一次我以为需要写些前端吧NetBeans关了,使用HBuilder写vue,因为内存只有8G,乱七八糟的一些东西一开,只剩20%左右,我就把 NetBeans关了,发现更新svn的 ...

  3. Codeforces 1114 - A/B/C/D/E/F - (Undone)

    链接:http://codeforces.com/contest/1114 A - Got Any Grapes? 题意:甲乙丙三个人吃葡萄,总共有三种葡萄:绿葡萄.紫葡萄和黑葡萄,甲乙丙三个人至少要 ...

  4. hash 位运算 练习

    hash  位运算 [以下代码仅做位运算的练习,算法本身不合理  php转译python] 从头到尾彻底解析Hash表算法_知识库_博客园 https://kb.cnblogs.com/page/18 ...

  5. ES6 Map 与 Set

    Map 对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. Maps 和 Objects 的区别 一个 Object 的键只能是字符串或者 Symbols,但一个 Ma ...

  6. 【托业】【新东方托业全真模拟】TEST07~08-----P5~6

    unless ---conj:barring(除非,不包括)perp+名词短语 be capable of doing 有能力做某事 qualified commensurate with 与……相应 ...

  7. 手写RPC框架

    https://www.bilibili.com/video/av23508597?from=search&seid=6870947260580707913 https://github.co ...

  8. 深入理解Java虚拟机3-chap4-5-斗之气10段

    一.虚拟机性能监控与故障处理 1.JDK的命令行工具:对jdk/lib/tools.jar的薄包装,Linux下可能是Shell编写,执行类似于Linux中的命令 2.可视化工具JConsole 打开 ...

  9. cocos2d JS-(JavaScript) 冒泡排序

    思想: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最 ...

  10. iterator与const_iterator

    iterator与const_iterator 所有的标准库容器都定义了相应的迭代器类型.迭代器对所有的容器都适用,现代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素. 1.iterato ...