Codeforces Round #246 (Div. 2)
题目链接:Codeforces Round #246 (Div. 2)
A:直接找满足的人数,然后整除3就是答案
B:开一个vis数组记录每一个衣服的主场和客场出现次数。然后输出的时候主场数量加上反复的,客场数量减掉反复的
C:原来是YY乱搞的。原来是哥德巴赫猜想,一个合数能够表示为3个质数相加,然后就先打个素数表,然后从最小的数字一个个模拟往前放就可以。放的时候走的步数直接拆成都是质数就可以
D:KMP算法,利用next数组性质求前缀和后缀匹配,然后在利用累加求和求出每一个串相应的出现次数
代码:
A:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; int n, k, num, i; int main() {
scanf("%d%d", &n, &k);
int ans = 0;
for (i = 0; i < n; i++) {
scanf("%d", &num);
if (5 - num >= k) ans++;
}
printf("%d\n", ans / 3);
return 0;
}
B:
#include <stdio.h>
#include <string.h> const int N = 100005;
int vis[N][2];
int n, x[N], y[N], i; int main() {
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d%d", &x[i], &y[i]);
vis[x[i]][0]++;
vis[y[i]][1]++;
}
for (i = 0; i < n; i++) {
printf("%d %d\n", (n - 1) + vis[y[i]][0], (n - 1) - vis[y[i]][0]);
}
return 0;
}
C:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = 100005; int pri[N], ans[5 * N][2], ansn = 0; void init() {
int vis[N];
memset(vis, 0, sizeof(vis));
for (int i = 2; i < N; i++) {
if (vis[i]) continue;
pri[i] = 1;
for (int j = i; j < N; j += i)
vis[j] = 1;
}
} int n, num[N], v[N], i, snum[N]; void swap(int &a, int &b) {
a ^= b;
b ^= a;
a ^= b;
} int main() {
init();
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &num[i]);
snum[i] = num[i];
v[num[i]] = i;
}
sort(snum, snum + n);
i = 0;
while (i < n) {
while (v[snum[i]] != i) {
for (int j = i; ;j++) {
if (pri[v[snum[i]] - j + 1]) {
ans[ansn][0] = j + 1;
ans[ansn][1] = v[snum[i]] + 1;
ansn++;
int t = v[snum[i]];
v[snum[i]] = j;
v[num[j]] = t;
swap(num[j], num[t]);
break;
}
}
}
i++;
}
printf("%d\n", ansn);
for (i = 0; i < ansn; i++)
printf("%d %d\n", ans[i][0], ans[i][1]);
return 0;
}
D:
#include <stdio.h>
#include <string.h>
#define INF 0x3f3f3f3f
const int N = 100005; char s[N];
int next[N], n, ans[N], ansn = 0; void get_next(char *seq, int m) {
next[1] = 0;
int j = next[1];
for (int i = 2; i <= m; i++) {
while (j && seq[i] != seq[j + 1]) j = next[j];
if (seq[i] == seq[j + 1]) j++;
next[i] = j;
}
} int vis[N]; int main() {
int i = 0;
scanf("%s", s + 1);
n = strlen(s + 1);
get_next(s, n);
int t = next[n];
while (t) {
ans[ansn++] = t;
t = next[t];
}
for (i = n; i > 0; i--)
vis[next[i]]++;
for (i = n; i > 0; i--)
vis[next[i]] += vis[i];
printf("%d\n", ansn + 1);
for (i = ansn - 1; i >= 0; i--)
printf("%d %d\n", ans[i], vis[ans[i]] + 1);
printf("%d %d\n", n, vis[n] + 1);
return 0;
}
Codeforces Round #246 (Div. 2)的更多相关文章
- Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes
D. Prefixes and Suffixes You have a string s = s ...
- Codeforces Round #246 (Div. 2) C. Prime Swaps(贪心,数论)
题目链接:http://codeforces.com/contest/432/problem/C 首先由题意分析出:这些数是从1到n且各不相同,所以最后结果肯定是第i位的数就是i. 采用这样一种贪心策 ...
- Codeforces Round #246 (Div. 2) B. Football Kit
题目的意思是求出每个队穿主场衣服和客场衣服的次数 每个队作为主场的次数是n-1,作为客场的次数是n-1 当每个队打主场的时候肯定穿的主场衣服 当每个队打客场时,如果客场与主场的衣服不同,则穿客场衣服 ...
- Codeforces Round #246 (Div. 2) A. Choosing Teams
给定n k以及n个人已参加的比赛数,让你判断最少还能参加k次比赛的队伍数,每对3人,每个人最多参加5次比赛 #include <iostream> using namespace std; ...
- Codeforces Round #246 (Div. 2)——D题
KMP算法,没写出来,完全不理解NEXT数组.现在理解了很多 答案都在程序中 ,不过这个思想真的很神奇, 还有毛语不好,一直没看懂题目,现在懂了, 大概是:S中前缀等于后缀,求其长度,和其在S中出现了 ...
- Codeforces Round #246 (Div. 2) —B. Football Kit
B. Football Kit time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes(后缀数组orKMP)
D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 megabytes input stan ...
- Codeforces Round #246 (Div. 2) D E
这题说的是给了一个字符串当前缀和后缀相同的时候就计算此时的 整个串种拥有这样的子串友多少个,没想到用KMP解 用0开头的那种类型的 KMP 今天刚好也学了一下,因为KMP的作用是找出最长前缀 KMP ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- Foundation 框架 NSArray、NSMutableArray排序
一.使用selector对数组进行排序(无返回) 数组 book 中包含 AddressCard对象. 1.对数组调用 sortUsingSelector方法 -(void) sortByName { ...
- iOS 中多线程的简单使用
iOS中常用的多线程操作有( NSThread, NSOperation GCD ) 为了能更直观的展现多线程操作在SB中做如下的界面布局: 当点击下载的时候从网络上下载图片: - (void)loa ...
- python的reduce()函数
reduce()函数也是Python内置的一个高阶函数. reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接 ...
- <转> Python的优雅技巧
枚举 不要这么做: 全选复制放进笔记 i = 0 for item in iterable: print i, item i += 1 而是这样: 全选复制放进笔记 for i, item in en ...
- libcprops
Install Howto Download the latest epel-release rpm from http://dl.fedoraproject.org/pub/epel/6/x86_6 ...
- C 根据行来读取文件 字符串的截取
// TestCFile.cpp : Defines the entry point for the console application. // #include "stdafx.h&q ...
- Android studio如何使用SVN进行版本控制?
通过这两天对Android Studio的研究,终于搞通了Android Studio的基本操作及与SVN的相关关联操作(这样才能在公司的开发工作中使用):Google年底将会停止ADT插件的更新和支 ...
- C语言 HTTP上传文件-利用libcurl库上传文件
原文 http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...
- 最新VMware Workstation 10注册码,绝对可用!
最近公司要在solaris上测试产品,需要用到虚拟机,于是下载了最新的虚拟机VMware Workstation 10,并找到了破解码,与大家共享: VMware workstation 10破解序列 ...
- Android实现视频录制
安卓实现视频录制,有两种方法,一种是调用自带的视频功能,一种是使用MediaRecorder. 每种方法都有自己的优缺点.接下来,把两种方法的代码写出来. 先说第一种方法,也是最简单的方法,那就是直接 ...