今天成都,排名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);这个值还需要调亮一下,太暗对比度不够。
我要好好休息一下,最近几天身体透支。下周估计也闲不下来,无意义的瞎忙啊。我要好好取舍一下,我要自私一点,我要一次只做一件事,做我想做的事。