CF#316 Div.2

第一篇文章

额大半夜 爬起来做CF

SB题被hack之后还是错 没药救了

E题再有3分钟就调出来了

读题要认真,写题要专心QAQ

Problem A Elections

#include <cstdio>
#include <algorithm>
using namespace std;
#pragma warning (disable : 4996)

int f[101];

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= m; i++)
	{
		int ma = -1, mai;
		for (int j = 1; j <= n; j++)
		{
			int t;
			scanf("%d", &t);
			if (ma < t)
			{
				ma = t;
				mai = j;
			}
		}
		f[mai]++;
	}
	int ma = -1, mai;
	for (int i = 1; i <= n; i++)
		if (ma < f[i])
		{
			ma = f[i];
			mai = i;
		}
	printf("%d", mai);
	return 0;
}

Problem B Simple Game

对就是这题!

#include <cstdio>
#pragma warning (disable : 4996)

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	if (m == 1 && n == 1) printf("%d", 1);
	else if (2 * m < n + 1) printf("%d", m + 1);
	else printf("%d", m - 1);
	return 0;
}

Problem C Replacement

#include <cstdio>
#pragma warning (disable : 4996)

char a[300002];

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	scanf("%s", a + 1);
	int now = 0, ans = 0;
	for (int i = 1; i <= n; i++)
		if (a[i] == ‘.‘) now++;
		else if (now >= 1)
		{
			ans += now - 1;
			now = 0;
		}
	if (now > 1) ans += now - 1;
	for (int i = 1; i <= m; i++)
	{
		int x;
		char c;
		scanf("%d %c", &x, &c);
		if (a[x] == c || (a[x] != ‘.‘&&c != ‘.‘));
		else if (c == ‘.‘)
		{
			if ((a[x - 1] != ‘.‘) && (a[x + 1] != ‘.‘));
			else if ((a[x - 1] == ‘.‘) ^ (a[x + 1] == ‘.‘)) ans += 1;
			else ans += 2;
		}
		else
		{
			if ((a[x - 1] != ‘.‘) && (a[x + 1] != ‘.‘));
			else if ((a[x - 1] == ‘.‘) ^ (a[x + 1] == ‘.‘)) ans -= 1;
			else ans -= 2;
		}
		printf("%d\n", ans);
		a[x] = c;
	}
	return 0;
}

Problem E Pig and Palindromes

#include <cstdio>
#include <cstring>
using namespace std;
#pragma warning (disable : 4996)

#define mod 1000000007
char a[501][501];
int f[2][501][501];

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)
		scanf("%s", a[i] + 1);
	f[0][1][1] = a[1][1] == a[n][m];
	for (int i = 3; i <= ((n + m) >> 1) + 1; i++)
	{
		bool o = i & 1;
		memset(f[o], 0, sizeof f[o]);
		for (int j = 1; j < i&&j <= n; j++)
			if (i - j <= m)
				for (int k = 1; k < i&&k <= n; k++)
					if (i - k <= m)
					{
						int x1 = j, y1 = i - j, x2 = n + 1 - k, y2 = m + 1 - i + k;
						if (a[x1][y1] == a[x2][y2])
						{
							if (x1 > 1)
							{
								if (x2 < n) f[o][j][k] = (f[o][j][k] + f[!o][x1 - 1][n - x2]) % mod;
								if (y2 < m) f[o][j][k] = (f[o][j][k] + f[!o][x1 - 1][n - x2 + 1]) % mod;
							}
							if (y1 > 1)
							{
								if (x2 < n) f[o][j][k] = (f[o][j][k] + f[!o][x1][n - x2]) % mod;
								if (y2 < m) f[o][j][k] = (f[o][j][k] + f[!o][x1][n - x2 + 1]) % mod;
							}
						}
					}
	}
	int ans = 0;
	if ((n + m) & 1)
	{
		int i = ((n + m) >> 1) + 1;
		bool o = i & 1;
		for (int j = 1; j < i&&j <= n; j++)
			if (i - j <= m)
			{
				int x1 = j, y1 = i - j;
				if (x1 < n)
					ans = (ans + f[o][j][n - x1]) % mod;
				if (y1 < m)
					ans = (ans + f[o][j][n - x1 + 1]) % mod;
			}
	}
	else
	{
		int i = ((n + m) >> 1) + 1;
		bool o = i & 1;
		for (int j = 1; j < i&&j <= n; j++)
			if (i - j <= m)
				ans = (ans + f[o][j][n + 1 - j]) % mod;
	}
	printf("%d", ans);
	return 0;
}

又臭又长 滚动数组

碎觉去了

还有一题明天上课写

时间: 2024-12-26 14:36:07

CF#316 Div.2的相关文章

CF #371 (Div. 2) C、map标记

1.CF #371 (Div. 2)   C. Sonya and Queries  map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的匹配. #include<bits/stdc++.h> #define max(a,b) a>b?a:b #define F(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,sizeof(a)) #define INF

CF#247(Div. 2)部分题解

引言: 在软件项目中,Maven提供了一体化的类库管理系统,非常实用.但是,如果新增的类库jar在网络上无法获取到,如何在本地按照Maven的规则添加进来呢?本文将通过一个小例子展示新增过程. 背景介绍: 一个Maven管理的Java项目,提供一个系统级别的POM.xml,其中定义了整个项目使用的类库. 需求: 需要添加一个自定义的类库到当前项目中.假定当前的类库文件名为:abc.jar.. 如何将类库添加进来? 1.  找到当前Maven的Repository类库位置 一般默认情况下,在win

CF #375 (Div. 2) D. bfs

1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多少个湖,然后输出. #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,s

CF #374 (Div. 2) D. 贪心,优先队列或set

1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优先队列 #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,sizeof(

cf #254 (Div. 2)

a题 #include<stdio.h> #include<string.h> char c[101][101]; int main() { long n,m,i,j; scanf("%ld%ld",&n,&m); gets(c[0]); for(i=1;i<=n;i++) gets(c[i]); for(i=1;i<=n;i++) { for(j=0;j<m;j++) if(c[i][j]=='-') printf("

B. Mr. Kitayuta&#39;s Colorful Graph (CF #286 (Div. 2) 并查集)

B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The vertices of the g

CF #374 (Div. 2) C. Journey dp

1.CF #374 (Div. 2)    C.  Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径,经过的点数要最多. #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,

CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)

转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有出现偶数次的数异或的值. 思路:容易想到,把区间内的所有的数都异或得到的是出现奇数次的数的值,然后再异或该区间内的所有出现过的数(每个数只统计一次),得到的ans了. 第一个问题:得到询问区间的

CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组

题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有出现偶数次的数异或的值. 思路:容易想到,把区间内的所有的数都异或得到的是出现奇数次的数的值,然后再异或该区间内的所有出现过的数(每个数只统计一次),得到的ans了. 第一个问题:得到询问区间的所有数的异或值,由 a[l~r] ^ a[0~(l-1)] = a[l~r] 可以用数组all_xor[i