ZEW 玩游戏 游记

是 1.12,星期五。

6:40 开始比赛,我还没登录网站()原因是在看其他人带表?

开了,第一题,不太习惯在比赛时看网页于是乎寻找 pdf:

done.

打开一看这 pdf 其实挺简陋,然后教练曰马上下文件然后断网。

这时 LuoTianYi 的电脑坏了,下不了文件 hhhh。

召唤教练并尝试使用 ftp,先试用 FileZilla,but 无权限下载 or 复制,后使用文件夹但是还是复制不了,教练考虑去开网(指插上网线,哦原来断网是拔掉网线?),我建议 LuoTianYi 直接双击然后打开了(?)。

所以还是没有开网。

后来(21:30 后):

晓飞:会用文件么?这次是文件输入输出。
同学们:一片惊呼
晓飞:不会的举手。
几个人举手了。
晓飞:?额那改成普通吧。
同学们:又一片惊呼

T1

约 18:50 开始写,7 min done.

直接暴力,一个比较简单的办法是在有雷的时候直接改变周围区域,而不是输入完再查询周围区域。

赛后:

ask shenshen:

shenshen:你这是瞎猫碰上个死对称样例。

于是发现了没有对雷进行特殊标记。

然后再交:

我:?

shenshen:

    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; ++ i) {
        char c = getchar();
        for (int j = 1; j <= m; ++ j) {
            c = getchar();

\[\Huge\downarrow \]

    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; ++ i) {
        char c ;
        for (int j = 1; j <= m; ++ j) {
            cin>>c;

行。

是因为样例和测试数据不同,测试数据是 Windows 造的,回车:\r\n!!1

以后的 char 绝不用 getchar

点击查看代码
/*
compiling in hszxoj
standard c++ 14
ide vscode:g++
g++ mine.cpp -o mine && ./mine
*/
#include <bits/stdc++.h>
#include <bits/extc++.h>
namespace {
#define filein(x) freopen(x".in", "r", stdin)
#define fileout(x) freopen(x".out", "w", stdout)
#define file(x) filein(x), fileout(x)
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define db double
#define un unsigned
#define ui un int
#define ull un ll
#define udb un db
template <typename T>
using pr = pair<T, T>;
#define pii pair<int>
#define pll pair<ll>
#define pdb pair<db>
#define fir first
#define sec second
#define mp(x, y) make_pair(x, y)
const int man = 1e3+10;
const int disx[10] = {-1, 0, 1, -1, 1, -1, 0, 1};
const int disy[10] = {1, 1, 1, 0, 0, -1, -1, -1};
}

int n, m;
int mp[man][man];
void pres ();
int main () {
    pres();
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; ++ i) {
        char c;
        for (int j = 1; j <= m; ++ j) {
            cin >> c;
            if (c == '*') {
                mp[i][j] = -1;
                for (int k = 0; k < 8; ++ k) 
                    if (mp[i+disx[k]][j+ disy[k]] != -1) ++ mp[i+disx[k]][j+disy[k]];
            }
        } }
    for (int i = 1; i <= n; ++ i) {
        for (int j = 1; j <= m; ++ j) printf("%c", mp[i][j]==-1?'*':mp[i][j]+'0');
        puts("");
    }
    return 0;
}

// --- 

void pres () {
#ifndef ONLINE_JUDGE
    file("mine");
#endif
    return ;
}

/*
$O(n^2) = 10^6 < 10^8$.

not dp.

less than 17 min:18:57.

haha, LuoTianYi's computer was broken.

too long.
*/

T3

HS_xh 表示:线性。

我思考了一下:\(\Large\text{二分答案}\)

挺简单。

点击查看代码
/*
compiling in 
standard 
ide 
g++ test.cpp -o test && ./test
*/
#include <bits/stdc++.h>
#include <bits/extc++.h>
namespace {
#define filein(x) freopen(x".in", "r", stdin)
#define fileout(x) freopen(x".out", "w", stdout)
#define file(x) filein(x), fileout(x)
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define db double
#define un unsigned
#define ui un int
#define ull un ll
#define udb un db
template <typename T>
using pr = pair<T, T>;
#define pii pr<int>
#define pll pr<ll>
#define pdb pr<db>
#define fir first
#define sec second
#define mp(x, y) make_pair(x, y)
const int man = 2e2+10;
}

int n, res;
int x[man], y[man];
pii ahd[man][man];
map<pii, int> mp;
void pres ();
int main () {
    pres();
    scanf("%d", &n);
    for (int i = 1; i <= n; ++ i) {
        scanf("%d%d", x+i, y+i);
        for (int j = 1; j < i; ++ j) {
            int xl = abs(x[i]-x[j]), yl = abs(y[i]-y[j]);
            int gxy = abs(__gcd(xl, yl));
            // printf("%d %d : A%d %dB %d %d-%d %d %d\n", i, j, x[i], y[i], x[j], y[j], xl, yl, gxy);
            if ((x[i]<x[j]&&y[i]>y[j]) || (x[i]>x[j]&&y[i]<y[j])) gxy = -gxy;
            if (!xl) ahd[i][j] = mp(0, 1);
            else if (!yl) ahd[i][j] = mp(1, 0);
            else ahd[i][j] = mp(xl/gxy, yl/gxy);
        }
    } // puts("");
    for (int i = 1; i <= n; ++ i) {
        for (int j = 1; j < i; ++ j) {
            // printf("%d %d: %d\n", ahd[i][j].fir, ahd[i][j].sec, mp[ahd[i][j]]);
            if (!mp[ahd[i][j]]) ++ res;
            ++ mp[ahd[i][j]];
        }
    } printf("%d", res);
    return 0;
}
                            
// --- 
                            
void pres () {
#ifndef ONLINE_JUDGE
    file("test");
#endif
    return ;
}

T4

以后一定顺序开题。

瞎开。

先咕着。

按暴力做的,超 \(1\)h 没写出。

T2

这题其实挺简单,但是我一开始看成二分图匹配了(雾)

所以先开了 T4。

后来一看:这点是可以重复选的。

可以列表:

\[\begin{array}{|c|c|c|c|c|c|} \hline point & 1 & 2 & 3 & 4 & \cdots \\ \hline 1 & - & - & - & - & \cdots \\ \hline 2 & x & - & - & - & \cdots \\ \hline 3 & x & x & - & - & \cdots \\ \hline 4 & x & x & x & - & \cdots \\ \hline 5 & x & x & x & x & \cdots \\ \hline \end{array} \]

每一个数使用一个单独下标标记,每一个下标只取一个。

点击查看代码


/*
compiling in 
standard 
ide 
g++ test.cpp -o test && ./test
*/
#include <bits/stdc++.h>
#include <bits/extc++.h>
namespace {
#define filein(x) freopen(x".in", "r", stdin)
#define fileout(x) freopen(x".out", "w", stdout)
#define file(x) filein(x), fileout(x)
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define db double
#define un unsigned
#define ui un int
#define ull un ll
#define udb un db
template <typename T>
using pr = pair<T, T>;
#define pii pr<int>
#define pll pr<ll>
#define pdb pr<db>
#define fir first
#define sec second
#define mp(x, y) make_pair(x, y)
const int man = 2e2+10;
}

int n, res;
int x[man], y[man];
pii ahd[man][man];
map<pii, int> mp;
void pres ();
int main () {
    pres();
    scanf("%d", &n);
    for (int i = 1; i <= n; ++ i) {
        scanf("%d%d", x+i, y+i);
        for (int j = 1; j < i; ++ j) {
            int xl = abs(x[i]-x[j]), yl = abs(y[i]-y[j]);
            int gxy = abs(__gcd(xl, yl));
            // printf("%d %d : A%d %dB %d %d-%d %d %d\n", i, j, x[i], y[i], x[j], y[j], xl, yl, gxy);
            if ((x[i]<x[j]&&y[i]>y[j]) || (x[i]>x[j]&&y[i]<y[j])) gxy = -gxy;
            if (!xl) ahd[i][j] = mp(0, 1);
            else if (!yl) ahd[i][j] = mp(1, 0);
            else ahd[i][j] = mp(xl/gxy, yl/gxy);
            ++ mp[ahd[i][j]];
        }
    } printf("%ld", mp.size());
    return 0;
}
                            
// --- 
                            
void pres () {
#ifndef ONLINE_JUDGE
    file("test");
#endif
    return ;
}
posted @ 2024-01-16 19:13  STA_Morlin  阅读(38)  评论(1编辑  收藏  举报