GD NOIP 2020 迷惑行为大赏

· · 个人记录

GD NOIP 2020 迷惑行为大赏

GD代码最后一个出……

本来全机房都等着看迷惑代码的,迟迟没有看到,于是我来试着做一个

某些不文明词汇用 * 和谐掉了

代码长度人

709.208 KB

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

int n, m;

int main()
{
    freopen("ball.in", "r", stdin);
    freopen("ball.out", "w", stdout);
    scanf("%d%d", &n, &m);
    if(n == 2 && m == 3)
        printf("6\n1 3\n2 3\n2 3\n3 1\n3 2\n3 2\n");
    else if(n == 2 && m == 20)
        printf("71\n1 3\n1 3\n1 3\n1 3\n1 ...");
    else printf("104554\n11 51\n11 51\n50 ...

样例人

181.089 KB

 /* 
 * It is strictly recommended to include "testlib.h" before any other include 
 * in your code. In this case testlib overrides compiler specific "random()".
 *
 * If you can't compile your code and compiler outputs something about 
 * ambiguous call of "random_shuffle", "rand" or "srand" it means that 
 * you shouldn't use them. Use "shuffle", and "rnd.next()" instead of them
 * because these calls produce stable result for any C++ compiler. Read 
 * sample generator sources for clarification.
 ...

checker 人

372.139 KB

 #include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
long long ans;
int T,aN[11000],cN[11000],a[11000],c[11000];
string st;
int num1[32769]={0,0,1,2,4,4,8,6,11,10,14,10,22,12,20,20,26,16,33,18,36,28,32,22,52,28,38,36,50,28,64,30,57,44,50,44,82,36,56,52...

打表人

19.328 KB

    ...
    for(int i=1;i<=s;++i)
        printf("%d %d\n",ans[i].x,ans[i].y);
    return 0;
}
/*
排水系统(water)
【题目描述】
对于一个城市来说,排水系统是极其重要的一个部分。
有一天,小 C拿到了某座城市排水系统的设计图
...
(注:后面就是四题的所有题目描述)

出题人

#include <bits/stdc++.h>

using namespace std;

int main()
{
    freopen("walk.in", "r", stdin);
    freopen("walk.out", "w", stdout);
    cout << -1; //QAQ Goodbye
    return 0;
}

Goodbye 人

#include<bits/stdc++.h>

#define int long long 

using namespace std;

inline int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}

int T,ans,flag[2][1100000];
string s;

signed main(){
    freopen("string.in","r",stdin);
    freopen("string.out","w",stdout);
    T=read();
    while(T--){
        cin>>s;
        int len=s.length();
        cout<<rand()<<endl;
    }
    return 0;
}

随机人

文件人

 ?y H楬??    H?h 婾鼔?荅?   ?枰? 婾鼔凌跟僂?婨?E鑯鍍E??颔    9E?巗荅...

加密人

这位同学的文件看起来是被位置神秘力量加密过了

我们到达现场时只发现了这串不可破译的乱码

(它还差点把我的电脑炸掉)

int main() {
    freopen("ball1.in", "r", stdin); //freopen("ball.out", "w", stdout);
    ...
int main(){
    freopen("string2.in","r",stdin);
    //freopen("string.out","w",stdout);
    ...
int main(){
    //freopen("string.in","r",stdin);
    //freopen("string.txt","w",stdout);
...

注释人 + 错上加错人

...
using namespace std;
void FILEOPEN(){
    #ifndef PBOrz
    freopen("water.in","r",stdin);
    freopen("water.out","w",stdout);
    #else
    freopen("water3.in","r",stdin);
    freopen("water3.out","w",stdout);
    #endif
}
...
...
inline void setfl(const char *s){
    #ifndef PBAKNOIP
    int l=strlen(s);
    FOR(i,0,l-1) fl[i]=s[i];
    fl[l]='.';fl[l+1]='i';fl[l+2]='n';
    freopen(fl,"r",stdin);
    fl[l+1]='o';fl[l+2]='u';fl[l+3]='t';
    freopen(fl,"w",stdout);
    #else
//  freopen("water3.in","r",stdin);
//  freopen("water3.out","w",stdout);
    #endif
}
...

Orz 人

...
int main(){
    freopen("in.txt","r",stdin);
    freopen("walk.out","w",stdout);
    ...

in.txt 人

膜拜人

//sto FY orz
//ORZ_ZDX ZDX AK NOIP
#ifndef PBOrz
...
#ifdef NTFOrz

PB NTF Orz!!!

//sto QuantAsk orz
//wuqingtieshou zhichandaji dashasifang xinei!!! aliang wo diao bu 
//sto stoorz orz
//Which B got the idea of this problem?

@stoorz orz

//sto my_dog orz
//to the one who is looking my code:GOOD FORTUNE!(((

@my_dog???

感谢你的祝福

//sto our red sun CEM!!!! orz
//Out magician!

orz 人们

#define ZYC using
#define AK namespace
#define IOI std

ZYC AK IOI;
cout << "I ak NOIP";

(胸有成竹人)

void gmh_AK_IOI(int x)
{
...
dyp=AK*IOI;
...
zys=AK-IOI;
...
wjq_AK_IOI();

AK 人们

祝福人

...
dft.rp=0;
//while(true) rp++;
while(dft.rp<=10000) 
dft.rp++;
...
...
cout<<ans<<endl;
}*/unsigned long long rp=999999999999999;
cout<<"rp++"<<rp<<endl;
cout<<"wish you succeeded in AK noip2020!";
//while(1) rp++;
//while(1) rp++;
...
注:后面全是相同的
if(n>2)while(1+2+3+4+5+6+7+8+9+10==55)printf("fuck_ccf_noip\nlaozi_rp_++\n");

鲜明对比

//NOIP2020 Rp++
#include<bits/stdc++.h>
using namespace std;

int main(){
    printf("I'm having great fun taking part in NOIP!^_^");
    return 0;
}

然而这就是整个代码……

// **的 ,为什么TLE,RP++ RP++ RP++

RP是解决TLE的最好方法

__人

int _;
    scanf("%d",&_);
    while(_--){
int i,j,k,m,l,__,___,ans=0;

码风人

int gcd_=__gcd(a,b);

__gcd 人(共69处)

真的不能用哦……

试图与评测机交流人

//  if (m!=1) return printf("orz"),0;

膜拜评测机人

//连他都不会,我怎么会呢? 
...
//int pd(int al,int bl,int du)//ab分别的长度,以及这次的段数(就直接暴力吧,累了 (TLE预警 (暴力都不会打了,氧化钙 
if(n > 2){
    printf("我不会[快哭了]\n");
    return 0;
}

不会人

while (1) cout << "NOIP AKed me. & Fuck ccf thanks" << endl;
cout<<"WDNMD!!!\nFUCK_CCF";
if(len<=1000)work(); 
else while(1)cout<<"Fuck CCF!"<<endl;
printf("CCF makes 0 points for everyone");
while(1){
    printf("CCF is stupid!CCF is dumb!CCF makes 0 points for GD-%d\n",++i);
}

感谢人

CCF人

//miko love CCF :(
/*
CCF太帅了
我超爱CCF的
**
*/ 
//ccf is my father

???

/*
I love CCF forever
If CCF can give me 1=
I will thank it
else
I will thank thank you all family
thank thank you mother
indvgusgycgigygasgasckgfdbjsdfffffffffffffffs
------------------------------By GHJ
*/

感谢人+1

//只骗8分   %%%CCF COIN COLLECTING FOUND......... 

终于有人道出了CCF的本质

支持(或“支持”)人们

if (n>2){
    //nofuckccf();
}
//憨批CCF不让说怎么用编译命令! 
//妈的我居然在用虚拟机来编译!
//迷惑行为!!! 

您现在也上迷惑行为了

//  cout<<"FUCK CCF";
...
//  cout<<"FUCK CCF";
...
//  cout<<"FUCK CCF";

恨意之深

/*盲猜luogu会有人翻到我的代码 
fuckccf好评(禁三警告)(大雾 我这个蒟蒻很快就要afo了
这题应该不是网络流吧。。 
*/ 

你猜对了

反对人们

*********

文明人们(共52处)

当然大多与CCF相关

作文人

/*
在太阳西斜的这个世界里 
置身天上之森 
等这场战争结束以后 
不归之人与望眼欲穿的众人 
人人本着正义之名 
长存不灭的过去,逐渐消逝的未来 
我回来了 
纵使日薄西山 
即使看不见未来 
此时此刻的光辉 
盼君勿忘 
++rp
n方过百万,暴力碾标算 
*/

诗人

/*From water to walk,this is my last time to join the noip.I hope I can
get a good score in this contest.At least,I hope I don't make some
fool mistake.Good bye,OI.
--an OIer on his last OI contest*/

泪目

题解人

(最后是最长的题解人)

让我们请出第一位

A

/*
随便写。

应该不会溢出 / TLE 吧?

--8:53 
*/
...

(还真溢出了)

B

/*
一个比较显然的想法是考虑枚举 AB。

然后可以 O(n log n) 求出所有 i。

转化为二维偏序。

log^2?

注意到对于同个 AB,|f(C) - f'(C)| = 1。这个显然。

所以实际只有 2n 个询问。

那就是 log 了。 

就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这就这? 

--9:20
*/
...

C

/*
1-2     2       20
3-5     10      20
6-8     50      85
9-14    50      300
15-20   50      400

太草了,数据范围放样例解释。不愧是你。

--9:20

-------------------------------------------------- 

听说 NOIP 没有 SPJ?

--9:44

首先考虑一个非常显然的做法:直接钦定某柱最下面的球是xxxx。

当然也不行。

不如考虑: 

底           顶 
CCCCCCXXXKKKKK 
CCCXXXXKKKKKKK

820000 = 41 * (n 柱 = 50) * (m 颜色 = 400)
       = 54 * (n 柱 = 50) * (m 颜色 = 300) 
       = 192 * (n 柱 = 50) * (m 颜色 = 85) 
这里 41 是什么玩意?
大胆猜个 25。

---

首先有个很显然的必要条件,就是每个柱子上的所有颜色球数之和等于 m。
(这不是废话么 = =) 
这玩意有点像小木棍...刚好没复习 = =
随便暴搜一下吧。 

如果已经知道了对应的方案,那么就比较好整了。

---

每种颜色的球有 m 个。
**就不能好好看题面?????? 

--11:28

---

40% ok.

--11:55

---

加了个随机化。

maybe, 70%?

取个 50% 吧,谢谢出题人。

--12:05

---

Windows 输出也太慢了吧?光 printf 输出就 2s?写了个快读就 0.1s 了?
= = 我还以为常数 800 倍看了好久 

--12:14 

*/
...

D

/*
可以求出每个循环后它的位移 d1, d2, ..., dn 
以及不走出循环的限制 (l1, r1), (l2, r2), ..., (ln, rn)
那么对于任意一个点 x, y,我们都可以简单求出这玩意。 

sl[i] <= a[1] + d[1] <= sr[i]

40%。 

---

二维怎么做?

考虑钦定它最先走出 x 维边界。如果能做的话对其他维做 O(k) 次即可。

先假设它会在一个循环内走出边界,初始在 (x, y)。

假设

x < lx[i] 或 x > rx[i] 的 i

y < ly[j] 或 y > ry[j] 的 j 

满足 i < j。

可以枚举 i,再考虑 j,就可以直接扫。

1 <= k <= (wx - x) / dx

--9:43

*/
...

题解人 + 游记人 + 计时人

%%%

顺便一提,这位同学平均每题都打了差不多 2k 代码

然而他好像用了 int64 ???

然后让我们请出第二位

A

/*
A
toposort
need \frac{}{} 

你看这个m=1
这样就有80分 我报警了

应该写完A去写C吧 

//记得回来检查空间 
*/
//记得longlong  
...
/*
9:00 写完了

还有4个小时 现在来de一下bug 
9:13 SAMPLE 1 ACCEPTED
9:14 SAMPLE 2 ACCEPTED
9:15 SAMPLE 3 long long gg
谢谢大样例给我longlong
构造题万岁!!!!! 
9:19 SAMPLE 3 ACCEPTED
写出来辣!!!
开C去了 下接C题 
*/

好,那我们来看C题

C

/*
第一道构造题!!!
考前写了挺多构造题,应该能捏出来方案罢 

上接A题

构造题万岁!!!

yysy 这应该是NOIP系列第一次出构造题吧

n 50 m 400

那么一共最多20000 个球
移动次数 有82w 

不管怎么搞 一颗球平均只能移动差不多40 次

这里可以认为每个球移动n次

最终状态的前继状态..

先回去看看B 9:25

数据范围好像贴错图了 不过9:29改了

过去了一小时

10:18 

*/
...
/*
他要把球归类
不过对于n m 比较小 操作次数很多还是比较好做的
我要想一个方案---
事实上我毫无头绪 
还有两个半小时 

我想IDA*  那就写个IDA*水水分吧.. 

来想一下估价函数
我想要估价函数尽量大 
那就..sigma每个柱子里面((m-出现最多次的数)*2)
这个下界已经挺 gg了 

11:00 写完啦 但是估价写的很蠢
有时候估出来比lim还大。。
我也不知道为什么 再优化一下吧
我觉得这样25分已经是谢天谢地力.. 

我应该调整一下估价函数 
而且很不好的一件事是,我没有利用多余的空间优化时间
我这个完全找的是最 优 方 案
这可不是好兆头
而且过不了样例2。。。很取决于操作次数
0分也是可能的。
甚至大概率0分 

想了一下 m过大 
2 20
2 2 2 2 2 2 1 1 1 1 1 1 2 2 2 1 2 2 2 2
1 1 1 1 1 2 1 2 1 2 1 1 2 1 1 2 1 1 2 2 

11:12 先这样吧 看D去
接下来的顺序是D->B->C 
*/

B

/*
B 
just no idea

9:25

首先如果没有这个奇怪的限制奇数次 应该会好想很多 

但是这个奇数次有什么含义呢..

最暴力的做法是枚举C的长度,然后扫一遍看看AB的循环节顺便判断

这样On方

可以拿到48分 加上只有一种字符推推柿子

整整可以拿到56分!!!(?)

那我先写这个吧 

11:51 重新开始写B

先去外面吹吹风 慌得一批 
*/
...
else 

        {
            //只含有一种字符 推柿子 
            //首先长度为n
            /*
            F(A)\leq F(C)
            我觉得On就够了
            这个n拿来干什么呢
            枚举断点? 
            */ 
            ...
            for(int i=3;i<=len;i++){//从i开始是C 
                if((len-i+1)%2==1){//C出现奇数次的字符数量为1 
                    //循环节的长度是i的因数,我感觉需要因数分解
                    //那这玩意还要nsqrtn?
                    for(int j=2;j<=sqrt(i);j++){//枚举AB的长度 
                        if((i-1)%j==0){
                            //可以作为循环节
            ...
/*
10:18 写不出只有一种字符
心态不太好 想看看CD 

*/

吹风人

D

/*
看起来是比较不好做的计数
这维度比较烦人 

输出-1 5分 警告 

答案可能很大 意味着这题有数学成分

我大概能做k=1和第一档?

这个wi大的离谱

不管了 先写第一档。。 

非常好奇这道题正解 

11:51 暴力敲完

要滚了 

*/

同样的题解人 + 游记人 + 计时人

%%%

再顺便一提,这位同学也是平均每题都打了差不多 2k 代码

他好像还是我们学校(GF) 的