这次多校训练赛好难啊,应该是目前最难的一场吧……因为刘老师在比赛后两小时左右就说,服务器压力不大,可以开放题库了……这不是在说,之后可能提交的人数会很少了……感觉老师在骗我们,明明说好的区分度呢?在两点时,榜单第 137A 137 A 了两道,可怕的是 660 660 同样是 A A 了两道,这区分度……成功的将队伍的阅读速度和手速区分开了啊……好在,这场算是 了三道,水进了前 200 200 ,感觉自己好渣啊~~~
1003-Counting Divisors
>>>合数分解<<< 暴力枚举,素数筛,合数分解……
1009-Questionnaire
描述
题解
签到题,固定 m=2 m = 2 ,然后判断 k k 为 还是 1 1 就行了。
代码
#include <iostream>
using namespace std;
int n;
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
int cnt1 = 0, cnt0 = 0, num;
for (int i = 1; i <= n; i++)
{
scanf("%d", &num);
if (num & 1)
{
cnt1++;
}
else
{
cnt0++;
}
}
if (cnt1 > cnt0)
{
printf("2 1\n");
}
else
{
printf("2 0\n");
}
}
return 0;
}
1011-Time To Get Up
描述
题解
思路很简单,只要判定一下就好了,没什么难度,就是写起来代码好长啊,费事儿……拼的就是手速吧!话说,这个题还 了一发,原因貌似是因为注释……
代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN = 8;
const int MAXM = 22;
char map[MAXN][MAXM];
char tmp[MAXN][MAXN];
int check()
{
if (tmp[4][2] == 'X')
{
if (tmp[3][1] == '.' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == '.')
{
return 2;
}
else if (tmp[3][1] == '.' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
{
return 3;
}
else if (tmp[3][1] == 'X' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X' && tmp[1][3] == '.')
{
return 4;
}
else if (tmp[3][1] == 'X' && tmp[5][1] == '.' && tmp[3][4] == '.' && tmp[5][4] == 'X')
{
return 5;
}
else if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == '.' && tmp[5][4] == 'X')
{
return 6;
}
else if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
{
return 8;
}
else
{
return 9;
}
}
else
{
if (tmp[3][1] == 'X' && tmp[5][1] == 'X' && tmp[3][4] == 'X' && tmp[5][4] == 'X')
{
return 0;
}
if (tmp[3][1] == '.' && tmp[5][1] == '.' && tmp[3][4] == 'X' && tmp[5][4] == 'X' && tmp[1][3] == '.')
{
return 1;
}
else
{
return 7;
}
}
return -1;
}
int main(int argc, const char * argv[])
{
int T;
cin >> T;
while (T--)
{
for (int i = 1; i < MAXN; i++)
{
scanf("%s", map[i] + 1);
}
for (int i = 1; i < MAXN; i++)
{
for (int j = 1; j < 5; j++)
{
tmp[i][j] = map[i][j];
}
}
int A = check();
for (int i = 1; i < MAXN; i++)
{
for (int j = 6, k = 1; j < 10; j++, k++)
{
tmp[i][k] = map[i][j];
}
}
int B = check();
for (int i = 1; i < MAXN; i++)
{
for (int j = 13, k = 1; j < 17; j++, k++)
{
tmp[i][k] = map[i][j];
}
}
int C = check();
for (int i = 1; i < MAXN; i++)
{
for (int j = 18, k = 1; j < 22; j++, k++)
{
tmp[i][k] = map[i][j];
}
}
int D = check();
printf("%d%d:%d%d\n", A, B, C, D);
}
return 0;
}
吐槽
这次的题,差不多会做的都会做,不会做的都没几个人做,只有第一页有区分度……后边的都是拼的手速和英语阅读水平……第三题挺好的,感觉自己很蠢,一开始就想到了对于 i i 求因子的公式,但是加上了 次方后我就竟然不知道在公式上稍微一改动就行了……导致自己儍瞪眼了半天,(  ̄  ̄)σ…( _ _)ノ|补题放在明天再补吧,我还要赶着去警察局立案呢!
1004-Dirt Ratio
>>>二分+线段树<<< 二分答案,线段树维护区间最小。
1012-Wavel Sequence
>>>dp<<< 优化手段十分强势,智商不够用了。自己很难想起来这种手段。
1007-Matching In Multiplication
>>>二分图<<< 图论好题,拓扑删点。巧妙~~~