传送门:http://codeforces.com/contest/755

A题题意是给你一个数字n,让你找到一个数字m,使得n*m+1为合数,范围比较小,直接线性筛出1e6的质数,然后暴力枚举一下就好了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define X first
#define Y second
#define clr(u,v); memset(u,v,sizeof(u));
#define in() freopen("data","r",stdin);
#define out() freopen("ans","w",stdout);
#define Clear(Q); while (!Q.empty()) Q.pop();
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e6 + ;
const int INF = 0x3f3f3f3f;
bool prim[maxn];
int main()
{
int n;
int m = sqrt(maxn + 0.5);
for (int i = ; i <= m; i++)
if (!prim[i])
for (int j = i * i; j < maxn; j += i)
prim[j] = ;
prim[] = prim[] = ;
scanf("%d", &n);
for (int i = ; i <= ; i++)
if (prim[i*n+])
{
printf("%d\n", i);
return ;
}
return ;
}

B题题意是A和B玩游戏,A有n个单词,B有m个单词,每个人轮流说一句单词,但是不能说重复的单词,说到最后没得说的人输,A先说,问最后A是否能赢。比较简单的贪心,找出两个人单词中的相同数量,这一部分是必须先讲的,可以处理出AB可以讲的单词数,比较一下大小就可以了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define X first
#define Y second
#define clr(u,v); memset(u,v,sizeof(u));
#define in() freopen("data","r",stdin);
#define out() freopen("ans","w",stdout);
#define Clear(Q); while (!Q.empty()) Q.pop();
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e5 + ;
const int INF = 0x3f3f3f3f;
set <string> s;
int main()
{
int n, m;
scanf("%d%d", &n, &m);
string str;
int same = ;
for (int i = ; i < n; i++)
{
cin >> str;
s.insert(str);
}
for (int i = ; i < m; i++)
{
cin >> str;
if (s.count(str))
same++;
}
int num1 = n - same + (same - same / );
int num2 = m - same + same / ;
if (num1 > num2) puts("YES");
else puts("NO");
return ;
}

C题题意没看懂。。直接看提示大概是给你n个节点,第i个节点和第a[i]个节点在同一棵树上,问有多少棵树。直接并查集或dfs处理出联通块的数量就行了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define X first
#define Y second
#define clr(u,v); memset(u,v,sizeof(u));
#define in() freopen("data","r",stdin);
#define out() freopen("ans","w",stdout);
#define Clear(Q); while (!Q.empty()) Q.pop();
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e5 + ;
const int INF = 0x3f3f3f3f;
int f[maxn];
int find(int x)
{
return f[x] == x ? x : f[x] = find(f[x]);
}
int mix(int x, int y)
{
int fx = find(x), fy = find(y);
if (fx == fy) return ;
f[fx] = fy;
return ;
}
int main()
{
int n, x;
scanf("%d", &n);
int sum = n;
for (int i = ; i <= n; i++) f[i] = i;
for (int i = ; i <= n; i++)
{
scanf("%d", &x);
if(mix(i, x)) sum--;
}
printf("%d\n", sum);
return ;
}

D题是给你n边形,然后每次相隔k个点连上一条边,问每次连边后该n边形一共有多少个面。可以考虑,每连一条边,多出的面数是两点直接线段的数量,所以直接树状数组/线段树统计下走过的点,每次增加的时候直接查询他们之间有多少个点就行了。注意要long long,还有要k=min(k,n-k);不然会多算。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define X first
#define Y second
#define clr(u,v); memset(u,v,sizeof(u));
#define in() freopen("data","r",stdin);
#define out() freopen("ans","w",stdout);
#define Clear(Q); while (!Q.empty()) Q.pop();
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e6 + ;
const int INF = 0x3f3f3f3f;
ll c[maxn];
int n;
int lowbit(int x)
{
return x & (-x);
}
ll getsum(int x)
{
ll ans = ;
while (x > )
{
ans += c[x];
x -= lowbit(x);
}
return ans;
}
void updata(int x)
{
while (x <= n)
{
c[x]++;
x += lowbit(x);
}
}
int main()
{
int k;
scanf("%d%d", &n, &k);
k = min(n - k, k);
ll add = , ans = , cur = ;
for (int i = ; i < n; i++)
{
updata(cur);
if (cur + k <= n) add = getsum(cur + k) - getsum(cur) + ;
else add = getsum(n) - getsum(cur) + getsum((cur + k - ) % n + ) + ;
ans += add;
if (i == n - ) cout << ans - ;
else cout << ans << " ";
cur = (cur + k - ) % n + ;
updata(cur);
// for (int i=1;i<=n;i++)
// cout<<getsum(i)-getsum(i-1)<<" ";
// cout<<endl;
}
return ;
}

这题也可以找规律做。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define X first
#define Y second
#define clr(u,v); memset(u,v,sizeof(u));
#define in() freopen("data","r",stdin);
#define out() freopen("ans","w",stdout);
#define Clear(Q); while (!Q.empty()) Q.pop();
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e6 + ;
const int INF = 0x3f3f3f3f;
int main()
{
ll n, k;
cin >> n >> k;
k = min(k, n - k);
ll c = , add = , ans = ;
for (ll i = ; i <= n; i++)
{
c += k;
if (c > n)
{
add++;
ans += add;
add++;
c %= n;
}
else ans += add;
if (i == n) cout << ans - << " ";
else cout << ans << " ";
}
return ;
}

总结:这次前面的题比较水,虽然是摸黑打的,手速慢了点,好在D没fst掉,升了171分,直接蓝名了,不枉熬夜到4点。可惜没把房间里十几个D题hack掉,终测完发现自己变成房间第一。总之再接再厉。

2017-01-16 15:34:14

8VC Venture Cup 2017 - Elimination Round的更多相关文章

  1. 解题报告8VC Venture Cup 2017 - Elimination Round

    题目链接:http://codeforces.com/contest/755 本蒟蒻做了半天只会做前两道题.. A. PolandBall and Hypothesis 题意:给出n,让你找出一个m, ...

  2. 8VC Venture Cup 2017 - Elimination Round - C

    题目链接:http://codeforces.com/contest/755/problem/C 题意:PolandBall 生活在一个森林模型的环境中,定义森林由若干树组成,定义树为K个点,K-1条 ...

  3. 8VC Venture Cup 2017 - Elimination Round - B

    题目链接:http://codeforces.com/contest/755/problem/B 题意:给定PolandBall 和EnemyBall 这2个人要说的单词,然后每一回合轮到的人要说一个 ...

  4. 8VC Venture Cup 2017 - Elimination Round - A

    题目链接:http://codeforces.com/contest/755/problem/A 题意:给定一个正整数N,问你是否存在一个数M使得N*M+1不是素数(M的范围在[1,1000]). 思 ...

  5. Codeforces Round #393 (Div. 2) (8VC Venture Cup 2017 - Final Round Div. 2 Edition)A 水 B 二分 C并查集

    A. Petr and a calendar time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  6. 8VC Venture Cup 2016 - Elimination Round D. Jerry's Protest 暴力

    D. Jerry's Protest 题目连接: http://www.codeforces.com/contest/626/problem/D Description Andrew and Jerr ...

  7. 8VC Venture Cup 2016 - Elimination Round

    在家补补题   模拟 A - Robot Sequence #include <bits/stdc++.h> char str[202]; void move(int &x, in ...

  8. 8VC Venture Cup 2016 - Elimination Round (C. Block Towers)

    题目链接:http://codeforces.com/contest/626/problem/C 题意就是给你n个分别拿着2的倍数积木的小朋友和m个分别拿着3的倍数积木的小朋友,每个小朋友拿着积木的数 ...

  9. codeforces 8VC Venture Cup 2016 - Elimination Round C. Lieges of Legendre

    C. Lieges of Legendre 题意:给n,m表示有n个为2的倍数,m个为3的倍数:问这n+m个数不重复时的最大值 最小为多少? 数据:(0 ≤ n, m ≤ 1 000 000, n + ...

随机推荐

  1. 写给新手的WebAPI实践

    此篇是写给新手的Demo,用于参考和借鉴,用于发散思路.老鸟可以忽略了. 自己经常有这种情况,遇到一个新东西或难题,在了解和解决之前总是说“等搞定了一定要写篇文章记录下来”,但是当掌握了之后,就感觉好 ...

  2. Linux编程之UDP SOCKET全攻略

    这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...

  3. Oracle EBS中分类账和法人实体 的关系(有sql语句实例)

    Oracle EBS中分类账和法人实体 的关系(有sql语句实例) 2012-12-06 16:05 2822人阅读 评论(0) 收藏 举报  分类: Oracle EBS(12)  Oracle数据 ...

  4. 一键安装Redmine

    群英汇·项目管理系统:http://www.ossxp.com/HelpCenter/00040_Redmine 其中包含中文说明及管理手册 一键安装下载:http://bitnami.org/sta ...

  5. 浅析ARP协议及ARP攻击

    一. ARP数据包结构 (1)硬件类型:指明发送方想知道的硬件接口类型,以太网的值为1:(2)协议类型:指明发送方提供的高层协议类型:它的值为 0x0800 即表示 IP地址.(3)硬件地址长度和协议 ...

  6. getResourceAsStream和getResource的用法

    用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大家最经常用的,就是用JAVA的File类,如要取得 D:/test.txt文件,就会这样用File file ...

  7. JavaEE XML SAX解析

    SAX解析XML @author ixenos SAX解析工具 SAX解析工具-  Sun公司提供的.内置在jdk中.org.xml.sax.* 核心的API: SAXParser类: 用于读取和解析 ...

  8. C#笔记(一)常量

    常量必须在声明时初始化 常量的值必须能在编译时用于计算.因此,不能用从一个变量中提取的值来初始化常量. 常量总是静态的.但注意,不必(实际上,是不允许)在常量声明中包含修饰符static .

  9. OpenCV备忘

    都是转来的内容的,算是整理一下 OpenCV备忘 深度和通道的理解 CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵 CV_8UC1 CV_8SC1 ...

  10. java 执行redis的部分方法

    @Autowired private RedisTemplate<String, Object> redisTemplate; public void setRedisTemplate(R ...