题目链接: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)的更多相关文章

  1. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes

                                                        D. Prefixes and Suffixes You have a string s = s ...

  2. Codeforces Round #246 (Div. 2) C. Prime Swaps(贪心,数论)

    题目链接:http://codeforces.com/contest/432/problem/C 首先由题意分析出:这些数是从1到n且各不相同,所以最后结果肯定是第i位的数就是i. 采用这样一种贪心策 ...

  3. Codeforces Round #246 (Div. 2) B. Football Kit

    题目的意思是求出每个队穿主场衣服和客场衣服的次数 每个队作为主场的次数是n-1,作为客场的次数是n-1 当每个队打主场的时候肯定穿的主场衣服 当每个队打客场时,如果客场与主场的衣服不同,则穿客场衣服 ...

  4. Codeforces Round #246 (Div. 2) A. Choosing Teams

    给定n k以及n个人已参加的比赛数,让你判断最少还能参加k次比赛的队伍数,每对3人,每个人最多参加5次比赛 #include <iostream> using namespace std; ...

  5. Codeforces Round #246 (Div. 2)——D题

    KMP算法,没写出来,完全不理解NEXT数组.现在理解了很多 答案都在程序中 ,不过这个思想真的很神奇, 还有毛语不好,一直没看懂题目,现在懂了, 大概是:S中前缀等于后缀,求其长度,和其在S中出现了 ...

  6. 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 ...

  7. 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 ...

  8. Codeforces Round #246 (Div. 2) D E

    这题说的是给了一个字符串当前缀和后缀相同的时候就计算此时的 整个串种拥有这样的子串友多少个,没想到用KMP解 用0开头的那种类型的 KMP 今天刚好也学了一下,因为KMP的作用是找出最长前缀 KMP ...

  9. 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 ...

随机推荐

  1. 16进制的颜色怎么转换为我们iOS所用的RGB颜色

    这个我们就是可以直接宏定义到 我们的工程中,这样我们就可以用我们UI小妹,给我们16进制的颜色表示,愉快的编程了... #define UIColorFromRGB(rgbValue) [UIColo ...

  2. POJ 3268 Silver Cow Party 正反图最短路

    题目:click here 题意: 给出n个点和m条边,接着是m条边,代表从牛a到牛b需要花费c时间,现在所有牛要到牛x那里去参加聚会,并且所有牛参加聚会后还要回来,给你牛x,除了牛x之外的牛,他们都 ...

  3. PHP练习项目笔记之COOKIES

    主要是在登录和退出的时候,设置cookies.来保存登录和安全退出 1:在登录页面设置 //设置cookies的值 _setcookies($_rows['tg_username'], $_rows[ ...

  4. Loadrunner11点击录制脚本无响应,IE页面弹不出——解决方案汇总

    以前用Loadrunner的时候都没有遇到过这个问题,后来将服务器重装系统(win7)后,重新安装Loadrunner11,浏览器版本刚开始为IE11,后来降为IE8,IE访问部署在虚拟机里的平台能正 ...

  5. selenium 学习笔记 ---新手学习记录(7) 问题总结(java)

    1.想要获取固定ul下所有li的个数  如下图: //获取ul下li的个数 List<WebElement> elements = driver.findElement(By.id(&qu ...

  6. 帝国cms7.0,列表模板调用不支持附表字段

    帝国cms在制作列表模板时,是不支持一些字段的调用的,原因是因为有些字段所在的位置为附表,本段详细向你介绍 帝国如何调用副表字段 我们可在 系统---管理数据表---管理字段中查看 如果我们需要调用附 ...

  7. PROTEL 99SE的打印设置

    现在市面上关于PTROTEL99SE的书很多,但都没有具体叙述有关电路图的打印设置方法.PROTEL99SE的打印设置较之以前的版本有了很多不同之处.特别是在实际做电路板时有些细节须注意. 原理图的打 ...

  8. 一键搜索之Win10锁屏壁纸

    前天无意发现win10的锁屏壁纸挺漂亮的,就想着能不能保存下来?网上一搜果然有资料,当时参考的连接如下 http://jingyan.baidu.com/article/fedf07375ea2513 ...

  9. Nginx CORS实现JS跨域

    1. 什么是跨域 简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象. 同源是指相同的协议.域名.端口.特别注意两点: 如果 ...

  10. BZOJ 1002 轮状病毒 (基尔霍夫矩阵)

    题解:http://vfleaking.blog.163.com/blog/static/17480763420119685112649/ #include <iostream> #inc ...