青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
BFS,用位壓縮..值得紀念的一題...
 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 #include <queue>
 5 #include <vector>
 6 
 7 using namespace std;
 8 struct Node
 9 {
10     int bplus;
11     int bminus;
12     int time;
13 
14     int eplus;
15     int eminus;
16     Node(int bs=0,int bm=0,int t=0,int es=0,int em=0):bplus(bs),bminus(bm),time(t),eplus(es),eminus(es){};
17     bool operator<(const Node& c)const{
18         return time<c.time;
19     }
20 };
21 int hash[1050000];
22 struct ExNode
23 {
24     int num;
25     int time;
26     bool operator<(const ExNode& x)const{
27         return time>x.time;
28     }
29     ExNode(int n=0,int t=0):num(n),time(t){};
30 };
31 vector<Node> vec;
32 int n,m;
33 inline void Input()
34 {
35     memset(hash,-1,sizeof(hash));
36     int t;
37     string s1,s2;
38     vec.clear();
39     for(int i=0;i<m;i++){
40         cin>>t>>s1>>s2;
41         Node tmp;
42         tmp.time=t;
43         for(int j=0;j<s1.size();j++){
44             if(s1[j]=='+')tmp.bplus|=1<<(n-j-1);
45             else if(s1[j]=='-')tmp.bminus|=1<<(n-j-1);
46         }
47         for(int j=0;j<s2.size();j++){
48             if(s2[j]=='+')tmp.eplus|=1<<(n-j-1);
49             else if(s2[j]=='-')tmp.eminus|=1<<(n-j-1);
50         }
51         vec.push_back(tmp);
52     }
53     sort(vec.begin(),vec.end());
54 }
55 bool BFS()
56 {
57     priority_queue<ExNode> que;
58     ExNode start;
59     for(int i=0;i<n;i++)
60         start.num|=1<<i;
61     que.push(start);
62     while(!que.empty()){
63         ExNode f=que.top();
64         que.pop();
65         if(f.num==0){
66             printf("Fastest sequence takes %d seconds.\n\n",f.time);
67             return true;
68         }
69         ExNode d=f;
70         for(int i=0;i<m;i++){
71             d=f;
72             if(!((~d.num&vec[i].bplus)||(d.num&vec[i].bminus))){
73                 d.num|=vec[i].eplus;
74                 d.num&=(~vec[i].eminus);
75                 d.time=f.time+vec[i].time;
76                 if(hash[d.num]==-1||hash[d.num]>d.time){
77                     hash[d.num]=d.time;
78                     que.push(d);
79                 }
80             }
81         }
82     }
83     return false;
84 }
85 int main()
86 {
87     int p=1;
88     while(scanf("%d%d",&n,&m),n+m){
89         Input();
90         printf("Product %d\n",p++);
91         if(BFS()==false){
92             printf("Bugs cannot be fixed.\n\n");
93             continue;
94         };
95     }
96     return 0;
97 }

posted @ 2008-09-09 14:25 小果子 閱讀(157) | 評論 (0)編輯 收藏

二、仿射變換(轉)

仿射變換是空間直角坐標變換的一種,它是一種二維坐標到二維坐標之間的線性變換,保持二維圖形的“平直線”和“平行性”,其可以通過一系列的原子變換的復合來實現,包括平移(Translation)、縮放(Scale)、翻轉(Flip)、旋轉(Rotation)和剪切(Shear)

此類變換可以用一個3×3的矩陣來表示,其最后一行為(0, 0, 1)。該變換矩陣將原坐標(x, y)變換為新坐標(x', y'),這里原坐標和新坐標皆視為最末一行為(1)的三維列向量,原列向量左乘變換矩陣得到新的列向量:

[x']   [m00 m01 m02] [x]   [m00*x+m01*y+m02]

[y'] = [m10 m11 m12] [y] = [m10*x+m11*y+m12]

[1 ]   [ 0   0   1 ] [1]   [     1         ]

用代數式表示如下:

x’ = m00*x+m01*y+m02

             y’ = m10*x+m11*y+m12

如果將它寫成按旋轉、縮放、平移三個分量的復合形式,則其代數式如下:


 

 


    其示意圖如下:

幾種典型的仿射變換:

1.public static AffineTransform getTranslateInstance(double tx, double ty)

平移變換,將每一點移動到(x+tx, y+ty),變換矩陣為:

[   1    0    tx  ]

[   0    1    ty  ]

[   0    0    1   ]

(譯注:平移變換是一種“剛體變換”,rigid-body transformation,中學學過的物理,都知道啥叫“剛體”吧,就是不會產生形變的理想物體,平移當然不會改變二維圖形的形狀。同理,下面的“旋轉變換”也是剛體變換,而“縮放”、“錯切”都是會改變圖形形狀的。) 

2.public static AffineTransform getScaleInstance(double sx, double sy)

縮放變換,將每一點的橫坐標放大(縮小)至sx倍,縱坐標放大(縮小)至sy倍,變換矩陣為:

[   sx   0    0   ]

[   0    sy   0   ]

[   0    0    1   ]

3.public static AffineTransform getShearInstance(double shx, double shy)

剪切變換,變換矩陣為:

[   1   shx   0   ]

[  shy   1    0   ]

[   0    0    1   ]

相當于一個橫向剪切與一個縱向剪切的復合

[   1      0    0   ][   1   shx   0   ]

[  shy    1    0   ][   0     1   0  ]

[   0      0    1   ][   0     0    1  ]

(譯注:“剪切變換”又稱“錯切變換”,指的是類似于四邊形不穩定性那種性質,街邊小商店那種鐵拉門都見過吧?想象一下上面鐵條構成的菱形拉動的過程,那就是“錯切”的過程。) 

4.public static AffineTransform getRotateInstance(double theta)

旋轉變換,目標圖形圍繞原點順時針旋轉theta弧度,變換矩陣為:

[   cos(theta)    -sin(theta)    0   ]

[   sin(theta)     cos(theta)    0   ]

[       0           0            1   ] 

5.public static AffineTransform getRotateInstance(double theta, double x, double y)

旋轉變換,目標圖形以(x, y)為軸心順時針旋轉theta弧度,變換矩陣為:

[   cos(theta)    -sin(theta)    x-x*cos+y*sin]

[   sin(theta)     cos(theta)    y-x*sin-y*cos ]

[       0              0          1            ]

相當于兩次平移變換與一次原點旋轉變換的復合:

[1  0  -x][cos(theta)  -sin(theta)  0][1  0  x]

[0  1  -y][sin(theta)   cos(theta)  0][0  1  y]

[0  0  1 ][   0           0        1 ][0  0  1]

posted @ 2008-09-07 16:35 小果子 閱讀(760) | 評論 (0)編輯 收藏

 

1.創建DirectDraw對象的方法,創建主DirectDraw對象并使用QueryInterface()得到一個IDirectDraw7接口.
或者直接用DirectDrawCreateEx()創建一個DirectDraw7的接口.
HRESULT WINAPI DirectDrawCreate(GUID FAR 
*lpGUID,//guid of object
LPDIRECTDRAW FAR *lplpDD,//receives interface
IUnknown FAR *pUnkOuter);//com stuff
LpGUID--NULL,(視頻卡驅動的Globally Unique Identifier)
lplpDD
--返回一個DirectDraw的接口而不是DirectDraw7的接口.
pUnkOuter
--NULL(always set to zero)

 

自行發送消息:
1.SendMessage()---send a message which is processed immediately to a window.In fact,
it calls WinProc().
LRESULT SendMessage(HWND hWnd,UINT,WPARAM,LPARAM);

2.PostMessage()---send a message to the messagequeue.just that.if it's succeed,it return a value(!0).
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

 

1.SetBkMode(hdc,TRANSPARENT);
2.FillRect(hdc,&r,(HBRUSH)GetStockObject(WHITE_BRUSH));
3.CreateSolidBrush(RGB(255,0,0));
4.wchar_t tmp[20];
    GetDlgItemText(hDlg,IDC_EDIT1,tmp,
20);
    ::wstringstream 
is;
    
is<<tmp;
    
is>>size;   
5.InvalidateRect(hWnd,0,1);
6.DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, inputsize);
7.WM_CLOSE is sent before WM_DESTYOY.

//創建全屏(空白)模式窗口:
if(!(hWnd = CreateWindowEx(NULL,//extend style
WINDOW_CLASS_NAME,//class
"BX",//title
WS_POP|WS_VISIBLE,
0,0,//initial x,y
GetSystemMetrics(SM_CXSCREEN),//Initial width
GetSystemMetrics(SM_CYSCREEN),//Initial height
NULL,//handle to parent
NULL,//handle to menu
hinstance,//instance of this application
NULL)))//extra creation parms
return (0);
posted @ 2008-08-25 16:05 小果子 閱讀(273) | 評論 (1)編輯 收藏
今天做了一題仿自Google Code Jam Round 1 C. Numbers的題目...
大意是求高斯函數y=[(2^(0.5)+3^(0.5))^(2n)]%1024的值
以下是我的解題思路:
//高斯函數y=[pow(2,0.5)+pow(3,0.5)]^(2n)]
//y=[(5+2*pow(6,0.5))^n]
//添加項(5-2*pow(6,0.5))^n
//構造Y=(5+2*pow(6,0.5))^n+(5-2*pow(6,0.5))^n;
//由二項展開得Y是整數...
//因為0<(5-2*pow(6,0.5))<1,所以y=[pow(2,0.5)+pow(3,0.5)]^(2n)]=(5+2*pow(6,0.5))^n + (5-2*pow(6,0.5))^n - 1
//將y展開得y=2*(C0n*5^n+C2n*5^(n-2)(2*pow(6,0.5))^2+Cn4*5^(n-4)*(2*pow(6,0.5))^4+....)%1024
//分析得y=2*(C0n*5^n+C2n*5^(n-2)(2*pow(6,0.5))^2+Cn4*5^(n-4)*(2*pow(6,0.5))^4)%1024
//直接計算可得...
posted @ 2008-08-25 01:19 小果子 閱讀(333) | 評論 (0)編輯 收藏

今天寫了下http://acm.pku.edu.cn/JudgeOnline/problem?id=1451
兩份代碼在vc下ac,用g++交RE...
如下:

  1 #include <iostream>
  2 #include <algorithm>
  3 #include <string>
  4 #include <vector>
  5 
  6 using namespace std;
  7 
  8 int const NUM=26;
  9 vector< vector<char> >vec;
 10 struct Node
 11 {
 12     string ss;
 13     int pro;
 14     bool operator<(const Node& c)const{
 15         if(pro!=c.pro)return pro>c.pro;
 16         return ss<c.ss;
 17     };
 18     Node(string m="",int p=0):ss(m),pro(p){};
 19 };
 20 class _Trie
 21 {
 22 public:
 23     _Trie():val(0){
 24         for(int i=0;i<NUM;i++)next[i]=NULL;
 25     }
 26     ~_Trie(){
 27         for(int i=0;i<NUM;i++)delete next[i];
 28     }
 29     _Trie* next[NUM];
 30     int val;
 31 };
 32 Node ans[505];
 33 string ss;
 34 void dfs(_Trie* now,int level,string sm)
 35 {
 36     if(ss[level]=='1')return;
 37     string mm=sm;
 38     for(int i=0;i<vec[ss[level]-48].size();i++){
 39         _Trie* p=now->next[vec[ss[level]-48][i]-'A'];
 40         if(p!=NULL){
 41             mm+=(vec[ss[level]-48][i]+32);
 42             if(p->val>ans[level+1].pro&&level+1<505){
 43                 ans[level+1].pro=p->val;
 44                 ans[level+1].ss=mm;
 45             }
 46             else if(p->val==ans[level+1].pro){
 47                 if(ans[level+1].ss>mm){
 48                     ans[level+1].ss=mm;
 49                 }
 50             }
 51             dfs(p,level+1,mm);
 52             mm=sm;
 53         }
 54     }
 55     return;
 56 }
 57 int main()
 58 {
 59     vec.resize(29);
 60     vec[2].push_back('A'),vec[2].push_back('B'),vec[2].push_back('C');
 61     vec[3].push_back('D'),vec[3].push_back('E'),vec[3].push_back('F');
 62     vec[4].push_back('G'),vec[4].push_back('H'),vec[4].push_back('I');
 63     vec[5].push_back('J'),vec[5].push_back('K'),vec[5].push_back('L');
 64     vec[6].push_back('M'),vec[6].push_back('N'),vec[6].push_back('O');
 65     vec[7].push_back('P'),vec[7].push_back('Q'),vec[7].push_back('R'),vec[7].push_back('S');
 66     vec[8].push_back('T'),vec[8].push_back('U'),vec[8].push_back('V');
 67     vec[9].push_back('W'),vec[9].push_back('X'),vec[9].push_back('Y'),vec[9].push_back('Z');
 68     int T;
 69     cin>>T;
 70     for(int r=1;r<=T;r++){
 71         _Trie root;
 72         int n;
 73         cin>>n;
 74         string str;
 75         int pro;
 76         while(n--){
 77             _Trie* point=&root;
 78             cin>>str>>pro;
 79             for(int i=0;i<str.size();++i){        
 80                 if(!point->next[str[i]-'a'])
 81                     point->next[str[i]-'a']=new _Trie;                
 82                 point=point->next[str[i]-'a'];
 83                 point->val+=pro;
 84             }
 85         }
 86         cout<<"Scenario #"<<r<<":\n";
 87         cin>>n;
 88         while(n--){
 89             memset(ans,0,sizeof(ans));
 90             cin>>ss;
 91             int cnt=0;
 92             for(int i=0;i<ss.size();i++){
 93                 if(ss[i]=='1')break;
 94                 else cnt++;
 95             }
 96             _Trie* now=&root;
 97             dfs(now,0,"");
 98             sort(ans+1,ans+cnt+1);
 99             for(int i=0;i<cnt;++i){
100                 if(ans[i+1].pro!=0)cout<<ans[i+1].ss<<endl;
101                 else cout<<"MANUALLY"<<endl;
102             }
103             cout<<endl;
104         }    
105         cout<<endl;
106     }
107     return 0;
108 }
109 
經過兩個多小時周折,終于在G++下也ac......聰明的你...能否改改...同樣也能在G++下ac...
ps:絕對是一個挑戰...至少忍耐力會上一個臺階...(我幾乎已崩潰,沒找出錯誤,我在G++下
1 if(p->val>ans[level+1].pro&&level+1<505){
2                 ans[level+1].pro=p->val;
3                 ans[level+1].ss=mm;
4             }
5             else if(p->val==ans[level+1].pro){
6                 if(ans[level+1].ss>mm){
7                     ans[level+1].ss=mm;
8                 }
9             }
ans[level+1].ss=mm,跳出"程序訪問違例(段異常)",
改完ac的acmers留個言...^_^,值得挑戰...
原因分析:是memset時出了問題...不能對本身有構造函數的類或類成員中有構造函數的類成員memset..本例就是
string出了問題...
posted @ 2008-08-15 16:33 小果子 閱讀(333) | 評論 (0)編輯 收藏
僅列出標題
共58頁: First 46 47 48 49 50 51 52 53 54 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99www免费人成精品| 免费不卡在线视频| 国产日韩欧美| 亚洲黄色大片| 久久综合一区| 欧美国产乱视频| 久久综合给合久久狠狠狠97色69| 国产夜色精品一区二区av| 欧美日韩一级黄| 国产精品午夜在线观看| 欧美私人网站| 永久免费精品影视网站| 在线观看亚洲精品视频| 一区二区日韩| 欧美在线日韩| 亚洲一区二区在线观看视频| 免费在线一区二区| 午夜日韩在线| 国产日韩精品一区二区浪潮av| 国产精品亚洲人在线观看| 欧美在线观看视频一区二区| 欧美在线观看一区| 91久久黄色| 亚洲欧洲一区二区三区| 午夜在线视频观看日韩17c| 久久深夜福利| 国产视频欧美| 老司机午夜精品视频| 日韩一级精品| 欧美性理论片在线观看片免费| 亚洲视频日本| av成人黄色| 毛片精品免费在线观看| 国产精品天天摸av网| 久久免费的精品国产v∧| 亚洲欧美日韩视频二区| 欧美成人69av| 亚洲电影观看| 欧美日韩中文在线| 国产精品老牛| 午夜在线成人av| 午夜精品久久久久影视 | 久久亚洲精选| 亚洲视频在线视频| 卡通动漫国产精品| 亚洲国产高清aⅴ视频| 久久久久久91香蕉国产| 久久久久一区二区三区四区| 一区二区久久久久久| 9l视频自拍蝌蚪9l视频成人| 国产真实乱偷精品视频免| 亚洲一级黄色| 欧美一区二区视频在线| 国产精品乱人伦中文| 久久精品网址| 免费观看一级特黄欧美大片| 欧美一区二区观看视频| 久久阴道视频| 欧美在线资源| 欧美福利视频| 亚洲欧美一区二区精品久久久| 欧美激情精品| 欧美成人国产| 欧美视频三区在线播放| 免费久久精品视频| 国内精品国产成人| 午夜日韩av| 正在播放日韩| 免费久久精品视频| 一本久久知道综合久久| 久久精品综合网| 欧美在线免费观看视频| 欧美韩日一区二区三区| 日韩网站在线观看| 久久精品人人| 亚洲欧洲精品一区二区| 国产精品v亚洲精品v日韩精品| 午夜久久久久久久久久一区二区| 欧美久久电影| 亚洲福利视频三区| 99精品国产在热久久| 国产精品va| 亚洲欧美日韩国产一区二区三区 | 亚洲日本一区二区| 亚洲——在线| 亚洲日本中文字幕| 欧美视频四区| 免费不卡在线观看| 夜夜夜久久久| 欧美高清在线精品一区| 亚洲少妇最新在线视频| 国产日韩欧美一区在线| 久热综合在线亚洲精品| 亚洲视频欧美视频| 欧美77777| 久久亚洲私人国产精品va| 国产一级揄自揄精品视频| 久久久99精品免费观看不卡| 欧美成人精品三级在线观看| 亚洲精品中文在线| 亚洲天堂av电影| 欧美精品久久久久久久| 99re8这里有精品热视频免费| 亚洲欧美日韩成人| 国产一区999| 国产精品福利在线| 欧美激情精品久久久久| 久久久久久久久久久久久女国产乱| 亚洲免费一在线| 亚洲黄色在线| 亚洲精品视频一区| 久久亚洲影音av资源网| 欧美在线日韩在线| 久久久久国产精品一区二区| 亚洲先锋成人| 国产精品久久久久久久久久免费看 | 亚洲午夜小视频| 午夜在线视频一区二区区别| 亚洲精品偷拍| 亚洲激情不卡| 久久九九热免费视频| 久久一区二区三区四区| 国产视频一区在线观看| 久久在线视频在线| 欧美成人伊人久久综合网| 日韩视频在线观看| 欧美日韩一区二区视频在线| 精品不卡视频| 亚洲一区在线看| 91久久久精品| 亚洲欧美日韩在线高清直播| 在线观看一区二区精品视频| 亚洲在线中文字幕| 午夜精品免费视频| 欧美日韩亚洲三区| 亚洲欧美国产一区二区三区| 美女视频黄免费的久久| 亚洲一二三区精品| 国产原创一区二区| 国产精品激情| 欧美亚洲一区二区在线| 国精产品99永久一区一区| 欧美丰满高潮xxxx喷水动漫| 亚洲欧美经典视频| 欧美二区乱c少妇| 国产精品久久九九| 亚洲人成啪啪网站| 亚洲人成7777| 久久免费视频在线观看| 久久久精品国产免大香伊| 国模私拍视频一区| 久久精品国产欧美激情| 一区二区三区四区精品| 欧美日韩国产免费| 一区二区三区日韩欧美精品| 国产午夜一区二区三区| 久久综合国产精品台湾中文娱乐网| 一区二区三区四区五区精品| 亚洲精品国产精品乱码不99按摩 | 亚洲天堂偷拍| 91久久精品一区二区三区| 亚洲国产网站| 日韩一区二区久久| 免费观看欧美在线视频的网站| 亚洲黄色免费电影| 亚洲神马久久| 国产情侣久久| 欧美日韩国产经典色站一区二区三区| 亚洲欧美国产精品桃花| 亚洲第一区在线观看| 欧美一级二级三级蜜桃| 亚洲人成亚洲人成在线观看图片 | 欧美三级中文字幕在线观看| 久久网站热最新地址| 欧美在线观看一二区| 欧美影院成人| 亚洲私人黄色宅男| 亚洲宅男天堂在线观看无病毒| 亚洲黄色有码视频| 亚洲手机在线| 久久婷婷久久| 日韩一级精品| 欧美在线日韩| 伊人久久成人| 老牛影视一区二区三区| 亚洲三级电影在线观看| 国产精品资源| 国产精品亚洲产品| 欧美色大人视频| 欧美午夜欧美| 欧美激情小视频| 久久综合五月天婷婷伊人| 久久精品在线| 老司机免费视频一区二区三区 | 欧美一级夜夜爽| 久久av红桃一区二区小说| 久久久999| 欧美国产激情二区三区| 亚洲第一区在线| 久久精品国亚洲|