今天成都,排名98,估计去不了。01居然暴力过了,俺的天啊,O(n^2*lgn)的复杂度啊。09拍了两百多行的代码,一个头账了两个大,无限WA。强哥更甚,竟然拍了四百多行,无限WA+TLE。让我的ICPC在累和心不在焉中悄无声息地落幕吧。合肥干脆也不要去了,去现场赛又有什么意义呢,还不是被虐么。
今天我想发段与DrMario无关的代码,因为前两天一发一陀代码,都没什么人评论,反应好像不太好哈。今天发个短小的实现一个具体的小功能的,顺便向各位牛们请教一下问题出在哪儿?
#include <stdio.h>
#include <stdlib.h>
#include <gl/glut.h>
void setPixel( int x, int y )
{
    glBegin( GL_POINTS );
        glVertex2i( x, y );
    glEnd();
}
void myDisplay(void)
{
    static GLubyte Mask[72]; //我猜它8位一对齐?
    FILE *fp;
    fp = fopen("worm.bmp", "rb");
    if( !fp ) //如果没读取成功
        exit(0);
    if( fseek(fp, -(int)sizeof(Mask), SEEK_END) )//这是什么?
        exit(0);
    if( !fread(Mask, sizeof(Mask), 1, fp) )
        exit(0);
    fclose(fp);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f( 0.0f, 0.0f, 1.0f );
    glEnable(GL_POLYGON_STIPPLE);
    glPolygonStipple(Mask);
    glRectf(160, 240, 184, 264 );  // 在左下方绘制一个有镂空效果的正方形
    glDisable(GL_POLYGON_STIPPLE);
    glRectf(320, 120, 480, 240);    // 在右上方绘制一个无镂空效果的正方形
/*    int x = 0, y = 0;            //我本来想,读进来就可以这样搞了嘛,结果一团乱点,郁闷。
    for ( int i = 0; i < 72; ++i )
    {
        for ( int j = 0; j < 8; ++j )
        {
            if ( (Mask[i]&(1<<j) ) == 0 )
            {
                setPixel( 50+x, 50+y );
            }
                ++x;
                if ( x == 23 )
                {
                    x = 0; 
                    ++y;
                }
        }
    }*/
    glFlush();
}
int main( int argc, char *argv[])
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE );
    glutInitWindowPosition( 100, 100 );
    glutInitWindowSize( 640, 480 );
    glutCreateWindow( "Polygon by PureMilk" );
    glutDisplayFunc( myDisplay );
    gluOrtho2D( 0, 640, 480, 0 );
    glutMainLoop();
    return 0;
}

把它当作镂空图drawPolygon也不错,不过下面错位很严重,不知是什么原因?

囧,太小貌似看不清,就是嘴下面那块儿大部分像素点是错的。
恩,看来glColor3f(0.0f,0.0f,1.0f);这个值还需要调亮一下,太暗对比度不够。
我要好好休息一下,最近几天身体透支。下周估计也闲不下来,无意义的瞎忙啊。我要好好取舍一下,我要自私一点,我要一次只做一件事,做我想做的事。