zoukankan      html  css  js  c++  java
  • 奇迹银桥「1」

    每次写三个需要奇迹银桥的题,不满三个不发

    也许有人能拿这些搞事?(模拟赛?)

    我会粘题面的

    T1「LOJ#4」Quine

    内存限制:256 MiB  时间限制:1000 ms

    标准输入输出            题目类型:传统

    评测方式:Special Judge

    题目描述

    写一个程序,使其能输出自己的源代码。

    代码中必须至少包含十个可见字符。

    输入格式

    输入文件为空。

    输出格式

    你的源代码。


    题解

    这个题,猛地一看,简单啊,cout

    但是你仔细想想。

    你要把源代码输出,莫非要递归? cout<<"cout<<"cout<<...."" 这显然是不行的。

    所以要想办法打断递归。

    窟思冥想。

    可以用 printf ,有 "%s" 可以用,就是我们可以保证一个%s就可以输出一层了,然后就停下了。

    信心满满的去码了。

    然后,发现第二个问题:

    在C++中,一个" "代表换行,一个"""代表双引号,而只有"\"才代表一个反斜杠。

    (一个要用\输出,用\又有用\\输出……)

    又炸了。

    再次去规避这些问题。

    打一个表出来:

    " 34
    ' ' 10

    好了,我们应该可以切了这个题了。

    用%c输出10,34来换行,加引号。

    但还是要避免换行,减少码长。

    #include<cstdio>
    int main(){char s[]="#include<cstdio>%cint main(){char s[]=%c%s%c;printf(s,10,34,s,34);}";printf(s,10,34,s,34);}
    

     T2 排座椅

    题目描述

    上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之

    后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的

    通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果

    一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

    请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。

    输入格式

    输入文件seat.in的第一行,有5个用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K<M,0<=L<N,D<=2000)。

    接下来的D行,每行有4个用空格隔开的整数。第i行的4个整数Xi,Yi,Pi,Qi,表示坐在位置(Xi,Yi)与(Pi,Qi)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

    输入数据保证最优方案的唯一性。

    输出格式

    输出文件seat.out共两行。

    第一行包含K个整数,a1,a2……aK,表示第a1行和a1+1行之间、第a2行和a2+1行之间、…、第aK行和第aK+1行之间要开辟通道,其中ai< ai+1,每两个整数之间用空格隔开(行尾没有空格)。

    第二行包含L个整数,b1,b2……bL,表示第b1列和b1+1列之间、第b2列和b2+1列之间、…、第bL列和第bL+1列之间要开辟通道,其中bi< bi+1,每两个整数之间用空格隔开(列尾没有空格)。

    样例

    样例输入

    4 5 1 2 3
    4 2 4 3
    2 3 3 3
    2 5 2 4
    

    样例输出

    2
    2 4
    

    题解

    这个题很简单,只是说一个其基因桥,用小数点存一些相关信息

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    using namespace std;
    float tcl[2001]={0};
    float tch[2001]={0};
    void pour(float a[],int b){
    	for(int i=1;i<=b;i++){
    		cout<<a[i]<<" ";
    	}
    	cout<<"
    ";
    }
    int main(){	
    	int h,l,cuh,cul,cdn;
    	int ch1,cl1,ch2,cl2;
    	cin>>l>>h>>cuh>>cul>>cdn;
    	for(int i=1;i<=cdn;i++){
    		cin>>cl1>>ch1>>cl2>>ch2;
    		if(ch1==ch2){
    			tch[cl1<=cl2?cl1:cl2]++;
    //			pour(tcl,l);
    		}	
    		if(cl1==cl2){
    			tcl[ch1<=ch2?ch1:ch2]++;
    //			pour(tch,h);
    		}	
    	}
    	for(int i=1;i<=l;i++){
    		if(tcl[i]!=0)	tcl[i]+=(float)i/10000;
    		else tcl[i]=0;
    //		pour(tcl,l);
    	//	cout<<" l"<<tcl[i]<<endl;
    	}
    	for(int j=1;j<=h;j++)
    	{
    		if(tch[j]!=0)	tch[j]+=(float)j/10000;
    		else tch[j]=0;
    	//	pour(tch,h);
    	}
    	sort(tcl+1,tcl+l+1,greater<float>());
    //	pour(tcl,l);
    	sort(tch+1,tch+h+1,greater<float>());
    //	pour(tch,h);
    	int r;
    	for(int i=1;i<=h;i++){
    		if(tch[i]<=0){
    			tch[i]=1001.1;
    			continue;
    		}
    		r=(int)tch[i];
    		tch[i]=(tch[i]-r)*10000;
    	}
    	for(int i=1;i<=l;i++){
    		if(tcl[i]<=0){
    			tcl[i]=1001.1;
    			continue;
    		}
    		r=(int)tcl[i];
    		tcl[i]=(tcl[i]-r)*10000;
    	}
    	sort(tcl+0,tcl+cul+1,less<float>());
    	sort(tch+0,tch+cuh+1,less<float>());
    //	pour(tch,h);pour(tcl,l);
    	for(int i=1;i<=cuh;i++){
    		//cout<<"r"<<r<<endl;
    	/*	if(r<1000)*/printf("%.0f",tch[i]);
    		//cout<<"l"<<tcl[i]<<endl;
    		if(i==cuh){
    			printf("
    ");
    			break;
    		}
    		else printf(" ");
    		}
    	for(int i=1;i<=cul;i++){
    		//cout<<"r"<<r<<endl;
    	/*	if(r<1000)*/printf("%.0f",tcl[i]);
    //		cout<<(tch[i]-r)*1000;
    		if(i==cul){
    			printf("
    ");
    			break;
    		}
    		else printf(" ");
    	}
    	
    	getchar();
    	return 0;
    }
    

     T3 [LOJ#3]Copycat

    题目描述

    这道题用于测试文件输入输出,请注意使用文件输入输出,而非标准输入输出。

    输入一个正整数$a$,输出这个数$a$

    输入格式

    第一行一个正整数$T$,表示有$T$组测试数据。

    接下来$T$行,每行一个正整数$a$.

    输出格式

    输出$T$行,每行一个正整数$a$。

    样例

    样例输入 1

    3
    1
    2
    3
    

    样例输出 1

    1
    2
    3
    

    样例输入 2

    1
    1000000000000000000000000000000000
    

    样例输出 2

    1000000000000000000000000000000000

    题解

    这不是题解,是比较一下各种文件输入输出的速度哒!

    最上面是:fopen

    #include <cstdio>
    char st[99999];
    int main() {
        FILE *fin, *fout;
        fin = fopen("copycat.in", "rb");
        fout = fopen("copycat.out", "wb");
        int num;
        fscanf(fin, "%d", &num);
        for (int i = 1; i <= num; i++) {
            fscanf(fin, "%s", st);
            fprintf(fout, "%s
    ", st);
        }
        fclose(fin), fclose(fout);
        return 0;
    }
    

    中间是:fstream(我喜欢流输入输出)

    #include <iostream>
    #include <fstream>
    #include <cstdio>
    #include <string>
    using namespace std;
    int T;
    string a;
    int main() {
        fstream fin, fout;
        fin.open("copycat.in", ios_base::in);
        fout.open("copycat.out", ios_base::out);
        fin >> T;
        while (T--) {
            fin >> a;
            fout << a << endl;
        }
        fin.close();
        fout.close();
        return 0;
    }
    

     最下面是:freopen(简单)

    #include <iostream>
    #include <fstream>
    #include <cstdio>
    #include <string>
    using namespace std;
    int T;
    string a;
    int main() {
        freopen("copycat.in", "r", stdin);
        freopen("copycat.out", "w", stdout);
        cin >> T;
        while (T--) {
            cin >> a;
            cout << a << endl;
        }
        fclose(stdin), fclose(stdout);
        return 0;
    }
    

     终于水完了

    这是第一弹的全部内容!

  • 相关阅读:
    二、Java面向对象(11)_final修饰符
    二、Java面向对象(10)_代码块
    二、Java面向对象(9)_面向对象——多态思想
    二、Java面向对象(8)_继承思想——Object类
    二、Java面向对象(8)_继承思想——子类初始化过程
    二、Java面向对象(8)_继承思想——super关键字
    二、Java面向对象(8)_继承思想——方法覆盖
    WP8.1 RT 生命周期详解‏‏‏‏‏‏‏‏‏‏‏‏‏
    将十六进制色值转换成Color
    WindowsPhone8.1RT建立空白应用挂起没反应的解决方案
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/QJYQ1.html
Copyright © 2011-2022 走看看