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

Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
    昨天開始做的ZJU 2011年保研復試題, 早就聽鯨魚隊長說過題目超水的, 就想著速度水過, 結果被Diff那題卡了快2天, 后來問了鯨魚隊長, 去年考試現場貌似真木有人做出來... (個人認為這題題目說的真不清楚... PE到抓狂...這題下面再細說)

1. Twin Prime Conjecture
    水題, 給你一個整數n (n < 1e5), 問<n的數中有多少對素數, 滿足它們的差為2
    先線性篩素數, 然后預處理出所有n (n < 1e5) 中, <n的滿足條件的素數對數, 然后對于每個Query, 直接輸出
//浙大計算機研究生保研復試上機考試-2011年 Twin Prime Conjecture
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define N 100010

int lenPr, record[N], prime[N], sum[N], ans[N];

void init() {
    memset(record, 
0sizeof(record));    
    lenPr 
= 0;
    record[
0= 1;
    record[
1= 1;
    
for (int i = 2; i <= 100000++i) {
        
if (!record[i]){
            
++lenPr;
            prime[lenPr 
- 1= i;
        }

        
for(int j = 0; j <= lenPr - 1++j) {
            
if (i * prime[j] > 100000break;
            record[i 
* prime[j]] = 1;
            
if (!(i % prime[j])) break;
        }

    }

}


int main() {
    
int i, n, pre;
    init();
    
int cnt = 0;
    pre 
= 2;
    
for(i = 0; i <= 100000++i) {
        
if(!record[i]) {
            
if(i - pre == 2) ans[i] = ++cnt;
            
else 
                ans[i] 
= cnt;
            pre 
= i;
        }

        
else
            ans[i] 
= cnt;
    }

    
while(scanf("%d"&n), n > 0{
        printf(
"%d\n", ans[n]);
    }

    
return 0;
}


2. Is It Symmetric
    水題, 判斷一個數是否是回文數, 該數可做任意多次循環左移/右移操作
    暴力之, 假設數的長度為len, 做len次, 每次循環左移一位, 然后判斷
//浙大計算機研究生保研復試上機考試-2011年 Is It Symmetric
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int l, ll;
char s[200], ss[200];

int main() {
    
int i, j;
    
while(scanf("%s", s), s[0!= '#'{
        l 
= strlen(s);
        ll 
= l >> 1;
        
for(i = 0; i < l; ++i) {
            memset(ss, 
0x00sizeof(ss));
            
for(j = i; j < l; ++j) ss[j - i] = s[j];
            
for(j = 0; j < i; ++j) ss[j + l - i] = s[j];
            
for(j = 0; j < ll; ++j) {
                
if(ss[j] != ss[l - j - 1]) break;
            }

            
if(j == ll) break;
        }

        
if(i == l) puts("NO");
        
else
            printf(
"YES %d\n", (i + ll) % l);
    }

    
return 0;
}


3. Magic Coupon
    貪心, coupons 和 product value的所有正數值從大到小排序, 大的和大的相乘, 小的和小的相乘; 所有負值從小到大排序, 也是小的和小的相乘(絕對值大的), 大的和大的相乘
    注意用__int64, 包括coupons和product value的值, 否則相乘時會越界(WA 3次才發現, 弱啊... ...)
//浙大計算機研究生保研復試上機考試-2011年  Magic Coupon
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<algorithm>
using namespace std;
#define N 1000010
#define I __int64

struct M{
    I val;
}
p[N], q[N];


bool cmp1(M a, M b) {
    
return a.val < b.val;
}


int nc, np;
I ans;

int main() {
    
int i, j;
    
while(scanf("%d"&nc), nc >= 0{
        
for(i = 0; i < nc; ++i) {
            scanf(
"%I64d"&p[i].val);
        }

        sort(p, p 
+ nc, cmp1);
        scanf(
"%d"&np);
        
for(i = 0; i < np; ++i) {
            scanf(
"%I64d"&q[i].val);
        }

        sort(q, q 
+ np, cmp1);
        ans 
= 0;
        
for(i = nc - 1, j = np - 1; i >= 0, j >= 0--i, --j) {
            
if(!(p[i].val > 0 && q[j].val > 0)) break;
            ans 
+= p[i].val * q[j].val;
        }

        
for(i = 0, j = 0; i < nc, j < np; ++i, ++j) {
            
if(!(p[i].val < 0 && q[j].val < 0)) break;
            ans 
+= p[i].val * q[j].val;
        }

        printf(
"%I64d\n", ans);
    }

    
return 0;
}


4. Diff
    卡了快2天, 題目真的是沒有說清楚多行的時候應該怎么輸出啊...!!
    一開始看了很久都沒有理解最后一個sample, 好不容易想出一種能說得通的理解方式, 敲了半天, 果斷WA (還有幾次TLE是WA得頭昏了, freopen忘記去掉了...), 昨天網上改來改去終于WA變成PE, 就PE到死也莫名了... ...
    實在無奈, 今天搜到一個解題報告, www.cnblogs.com/while2/archive/2011/03/14/1983524.html 對拍之后發現有幾個多行的case輸出不同, 但是對解題報告為什么那樣輸出理解不能... ... 猥瑣地用小號試了下解題報告的代碼, 完美地AC了, 于是把輸出的那里改成解題報告的那種思路了... ... 改完對拍了下, 還是有一些數據不同... 交了下, 竟然就AC了, 莫名啊... = =||

PE的代碼, 依然莫名中...
路過的大牛有空指教的話不甚感激
//浙大計算機研究生保研復試上機考試-2011年 Diff
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define N 5010

int n, m, l1, l2, fi, fj, nt, dp[N][N], flg[N][N], f[N], g[N];
char s[100], ss1[N], ss2[N], common[N];

void LCS(char *a, char *b) {
    
int i, j;
    
bool ok = false;
    fi 
= fj = 0;
    
for(i = 0; i <= l1; ++i) dp[i][0= 0;
    
for(i = 0; i <= l1; ++i) dp[0][i] = 0;
    
for(i = 1; i <= l1; ++i) 
        
for(j = 1; j <= l2; ++j)
            
if(a[i - 1== b[j - 1]) {
                dp[i][j] 
= dp[i - 1][j - 1+ 1;
                flg[i][j] 
= 1;
            }

            
else {
                
if(dp[i - 1][j] > dp[i][j - 1]) {
                    dp[i][j] 
= dp[i - 1][j];
                    flg[i][j] 
= 2;
                }

                
else {
                    dp[i][j] 
= dp[i][j - 1];
                    flg[i][j] 
= 3;
                }

            }

            
return;
}


void traceback(int i, int j) {
    
while(i > 0 && j > 0{
        
if(flg[i][j] == 1{
            
--i; --j;
            common[nt
++= ss1[i];
        }

        
else if(flg[i][j] == 2{
            
--i;
        }

        
else if(flg[i][j] == 3{
            
--j;
        }

    }

}


int main() {
    
//freopen("d:\\in.txt", "r", stdin);
    
//freopen("d:\\out.txt", "w", stdout);
    int i, j, pos, line;
    
bool ff, nl;
    
while(scanf("%d"&n), n >= 0{
        scanf(
"%d"&m);
        getchar();
        memset(f, 
0sizeof(f));
        memset(g, 
0sizeof(g));
        memset(ss1, 
0x00sizeof(ss1));
        memset(ss2, 
0x00sizeof(ss2));
        memset(common, 
0x00sizeof(common));
        
for(i = 0; i < n; ++i) {
            gets(s);
            strcat(ss1, s);
            f[strlen(ss1)] 
= 1;
        }

        
for(i = 0; i < m; ++i) {
            gets(s);
            strcat(ss2, s);
            g[strlen(ss2)] 
= 1;
        }

        l1 
= strlen(ss1), l2 = strlen(ss2);
        LCS(ss1, ss2);
        
if(dp[l1][l2] == 0) puts("Totally different");
        
else if(dp[l1][l2] == l1 && l1 == l2) puts("No difference found");
        
else {
            nt 
= 0;
            traceback(l1, l2);
            printf(
"%d\n", dp[l1][l2]);
            i 
= 1, j = 1; pos = nt - 1; line = 2;
            puts(
"line #1");
            nl 
= false;
            
while(pos >= 0{
                ff 
= false;
                
while(ss1[i - 1!= common[pos]) {
                    putchar(ss1[i 
- 1]);
                    ff 
= true;
                    nl 
= true;
                    
if(f[i]) {
                        printf(
"-\nline #%d\n", line++);
                        
++i;
                        ff 
= false;
                        nl 
= false;
                        
goto M;
                    }

                    
++i;
                }

                
if(ff) {
                    putchar(
'-');
                    nl 
= true;
                    ff 
= false;
                }

                
if(f[i] && nl && i < l1) {
                    printf(
"\nline #%d\n", line++);
                    nl 
= false;
                }

                
else if(f[i] && nl && i == l1) {
                    puts(
"");
                    nl 
= false;
                }

                
++i;
                ff 
= false;
                
while(ss2[j - 1!= common[pos]) {
                    ff 
= true;
                    putchar(ss2[j 
- 1]);
                    nl 
= true;
                    
if(g[j]) {
                        putchar(
'+');
                        puts(
"");
                        nl 
= false;
                        ff 
=false;
                    }

                    
++j;
                }

                
if(ff) {
                    putchar(
'+');
                    ff 
= false;
                }

                
else if(g[j] && nl) {
                    puts(
"");
                    nl 
= false;
                }

                
++j;
                
if(i > l1 || j > l2) break;
                pos
--;
M:                    ;
            }

            ff 
= false;
            
while(i <= l1) {
                ff 
= true;
                putchar(ss1[i 
- 1]);
                nl 
= true;
                
if(f[i]) {
                    putchar(
'-');
                    nl 
= true;
                    
if(i < l1) {
                        printf(
"\nline #%d\n", line++);
                        nl 
= false;
                    }

                    ff 
=false;
                }

                
++i;
            }

            
if(ff) {
                putchar(
'-');
                nl 
= true;
            }

            ff 
= false;
            
while(j <= l2) {
                ff 
= true;
                putchar(ss2[j 
- 1]);
                nl 
= true;
                
if(g[j]) {
                    putchar(
'+');
                    nl 
= true;
                    
if(j < l2) {
                        puts(
"");
                        nl 
= false;
                    }

                    ff 
= false;
                }

                
++j;
            }

            
if(ff) putchar('+');
            
if(nl)puts("");
        }

    }

    
return 0;
}


AC的代碼
//浙大計算機研究生保研復試上機考試-2011年 Diff
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define N 5010

int n, m, l1, l2, nt, na, line, dp[N][N], flg[N][N], f[2][N], ned[2], usd[2];
char s[100], ss[2][N], common[N], ans[2 * N], mark[3= "-+";

void LCS(char *a, char *b) {
    
int i, j;
    
bool ok = false;
    
for(i = 0; i <= l1; ++i) dp[i][0= 0;
    
for(i = 0; i <= l2; ++i) dp[0][i] = 0;
    
for(i = 1; i <= l1; ++i) 
        
for(j = 1; j <= l2; ++j)
            
if(a[i - 1== b[j - 1]) {
                dp[i][j] 
= dp[i - 1][j - 1+ 1;
                flg[i][j] 
= 1;
            }

            
else {
                
if(dp[i - 1][j] > dp[i][j - 1]) {
                    dp[i][j] 
= dp[i - 1][j];
                    flg[i][j] 
= 2;
                }

                
else {
                    dp[i][j] 
= dp[i][j - 1];
                    flg[i][j] 
= 3;
                }

            }

            
return;
}


void traceback(int i, int j) {
    
while(i > 0 && j > 0{
        
if(flg[i][j] == 1{
            common[nt
++= ss[0][i - 1];
            
--i; --j;
        }

        
else if(flg[i][j] == 2--i;
        
else
            
--j;
    }

}


void addmk(int i) {
    
if(na != 0 && ans[na - 1!= '+' && ans[na - 1!= '-')
        ans[na
++= mark[i];
}


void addline(int i) {
    
if(na != 0 && ans[na - 1!= '\n'{
        addmk(i);
        printf(
"%s\n", ans);
        
if(!i) printf("line #%d\n", line++);
        na 
= 0; memset(ans, 0x00sizeof(ans));
    }

}


void checked(int i, int idx) {
    
if(ned[i] > usd[i] && idx == f[i][usd[i]]) {
        usd[i]
++;
        addline(i);
    }

}


void out(int i, int &idx, char ed) {
    
if(ss[i][idx] == ed) {
        
++idx;
        
checked(i, idx);
        
return;
    }

    
while(ss[i][idx] != ed) {
        ans[na
++= ss[i][idx];
        
++idx;
        
checked(i, idx);
    }

    
++idx;
    addmk(i);
    
checked(i, idx);
    
return;
}


int main() {
    
//freopen("d:\\in.txt", "r", stdin);
    
//freopen("d:\\out.txt", "w", stdout);
    int i, j;
    
while(scanf("%d"&n), n >= 0{
        scanf(
"%d"&m);
        getchar();
        memset(f, 
0sizeof(f));
        memset(ss, 
0x00sizeof(ss));
        memset(ans, 
0x00sizeof(ans));
        memset(common, 
0x00sizeof(common));
        ned[
0= ned[1= 0;
        
for(i = 0; i < n; ++i) {
            gets(s);
            strcat(ss[
0], s);
            
if(i < n - 1)f[0][ned[0]++= strlen(ss[0]);
        }

        
for(i = 0; i < m; ++i) {
            gets(s);
            strcat(ss[
1], s);
            
if(i < m - 1)f[1][ned[1]++= strlen(ss[1]);
        }

        
if(!strcmp(ss[0], ss[1])) {
            puts(
"No difference found");
            
continue;
        }

        l1 
= strlen(ss[0]); l2 = strlen(ss[1]);
        LCS(ss[
0], ss[1]);
        
if(!dp[l1][l2]) {
            puts(
"Totally different");
            
continue;
        }

        nt 
= na = 0;
        memset(ans, 
0x00sizeof(ans));
        printf(
"%d\n", dp[l1][l2]);
        traceback(l1, l2);
        i 
= 0, j = 0; line = 2;
        usd[
0= usd[1= 0;
        printf (
"line #1\n");
        
while(nt > 0{
            
char ch = common[nt - 1];
            nt
--;
            
out(0, i, ch);
            
out(1, j, ch);
        }

        
out(0, i, 0);
        
out(1, j, 0);
        printf(
"%s\n", ans);
    }

    
return 0;
}

我AC的代碼跟解題報告跑出來結果不同的數據:
1 1
ababab
babab
1 1       //前兩組數據一樣, 但解題報告的代碼跑出來的第一次多一個回車...
ababab
babab
2 2
fdasf
sdfdsg
fhgfh
dfhfdhfd
4 4
sdf
tre
ghjdf
wtrwt
erte
wet
ytrye
eqtqe
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99精品免费视频| 伊人久久婷婷| 欧美一区二区免费观在线| 这里只有精品视频| 亚洲一区综合| 欧美一区二区福利在线| 久久精品亚洲乱码伦伦中文| 久久综合狠狠| 欧美激情一区二区在线| 欧美午夜宅男影院在线观看| 国产欧美精品一区aⅴ影院| 狠狠色综合一区二区| 亚洲美女精品成人在线视频| 亚洲欧美精品在线观看| 久久精品国产欧美激情| 亚洲大片在线| 91久久久亚洲精品| 亚洲日本中文字幕| 欧美日韩国产综合视频在线| 欧美日韩综合久久| 国产伦精品一区二区三区高清| 国内视频精品| 亚洲精品一区二| 性欧美1819性猛交| 欧美成人免费观看| 国产精品99久久久久久宅男 | 女女同性女同一区二区三区91| 欧美激情一区二区三区在线视频| 99精品视频免费在线观看| 欧美一区二区三区视频在线 | 亚洲午夜黄色| 久久在线免费观看视频| 亚洲日本国产| 久久激情视频| 欧美三级视频| 亚洲欧洲在线播放| 久久爱www久久做| 亚洲精品久久嫩草网站秘色| 欧美一区二区三区视频免费| 欧美日韩中文字幕在线视频| 在线精品观看| 亚洲欧美日韩国产综合| 欧美黄免费看| 久久久99国产精品免费| 国产日韩精品一区二区三区| 一本色道久久88综合日韩精品| 美女国产一区| 亚洲一区在线视频| 欧美视频在线观看免费| 日韩视频在线观看一区二区| 欧美成人精品激情在线观看| 欧美影院成人| 国产一区二区三区的电影| 欧美一级成年大片在线观看| 亚洲狠狠婷婷| 久久野战av| 伊人久久大香线蕉综合热线| 久久九九国产精品怡红院| 亚洲欧美日韩一区二区| 国产精品美女诱惑| 午夜精品久久久久久久久久久| 亚洲精品偷拍| 欧美特黄一区| 亚洲欧美成人一区二区在线电影 | 午夜一区在线| 中文av字幕一区| 欧美激情精品久久久久久免费印度| 中文国产一区| 亚洲国产成人午夜在线一区| 久久久久国产一区二区三区| 欧美亚洲日本国产| 亚洲福利在线视频| 久久大逼视频| 午夜精品视频| 欧美国产精品人人做人人爱| 久久亚洲一区二区| 好吊日精品视频| 欧美一区二区日韩一区二区| 亚洲欧美在线一区| 国产精一区二区三区| 中国女人久久久| 制服丝袜亚洲播放| 国产精品久久久久久一区二区三区| 日韩一级黄色片| 亚洲欧美日韩国产综合在线 | 欧美xxx在线观看| 欧美日韩精品系列| 亚洲午夜羞羞片| 久久久久久久久久久成人| 一区二区三区在线高清| 久久久久久欧美| 亚洲欧洲精品一区二区三区| 亚洲精选国产| 国产午夜精品美女视频明星a级| 欧美在线免费播放| 亚洲欧洲在线看| 久久黄色级2电影| 亚洲日本中文| 国产精品久久波多野结衣| 亚洲在线成人精品| 免费不卡在线视频| 午夜精品亚洲| 亚洲欧美视频一区| 欧美激情1区2区3区| 欧美一区国产一区| 亚洲一区日韩在线| 亚洲免费观看高清在线观看 | 国产精品久久久久久影视| 性欧美videos另类喷潮| 亚洲黄色成人网| 毛片基地黄久久久久久天堂| 亚洲欧美中文在线视频| 亚洲精品在线观看免费| 91久久午夜| 亚洲国产精品专区久久| 在线成人激情| 亚洲国产一区二区精品专区| 在线观看欧美一区| 亚洲欧洲日韩在线| 中文国产成人精品久久一| 99国内精品久久| 亚洲视频碰碰| 欧美专区在线| 免费视频一区二区三区在线观看| 久久久精品动漫| 蜜臀a∨国产成人精品 | 国产精品一区亚洲| 国产女主播在线一区二区| 在线成人性视频| 激情欧美国产欧美| 欧美自拍丝袜亚洲| 欧美激情一区二区久久久| 日韩一级在线观看| 国产精品一区视频网站| 欧美成年人视频网站| 国产精品综合av一区二区国产馆| 亚洲在线播放| 欧美成黄导航| 一区二区三区鲁丝不卡| 国产日韩欧美高清免费| 午夜精品视频在线| 亚洲人成欧美中文字幕| 久久久久久久久久久一区 | 国产精品国产三级欧美二区| 亚洲免费观看| 麻豆视频一区二区| 久久综合狠狠| 亚洲一区www| 女人色偷偷aa久久天堂| 欧美视频网址| 国产一在线精品一区在线观看| 亚洲人成人77777线观看| 欧美一级视频| 99热精品在线观看| 裸体丰满少妇做受久久99精品| 国产精品久久久久免费a∨| 在线国产欧美| 久久综合狠狠综合久久激情| 亚洲欧美日韩在线不卡| 国产精品成人国产乱一区| 亚洲综合好骚| 亚洲私拍自拍| 国产欧美日韩中文字幕在线| 亚洲欧美日韩在线不卡| 亚洲一区二区久久| 国产日韩精品一区二区| 久久久精品动漫| 久久夜色精品国产亚洲aⅴ| 国产在线麻豆精品观看| 欧美成人三级在线| 欧美日韩第一区日日骚| 亚洲免费中文| 久久久久国产一区二区三区四区 | 你懂的视频欧美| 狠狠狠色丁香婷婷综合激情| 久久深夜福利免费观看| 欧美成人一区在线| 亚洲综合丁香| 性欧美办公室18xxxxhd| 午夜在线电影亚洲一区| 国产伊人精品| 亚洲三级性片| 国产精品亚洲美女av网站| 老**午夜毛片一区二区三区| 久久精品日产第一区二区三区| 好看的av在线不卡观看| 亚洲电影第1页| 国产日韩在线不卡| 一区二区三区高清不卡| 国产精品一区二区三区久久久| 亚洲激情午夜| 亚洲免费av电影| 欧美日韩高清在线一区| aa亚洲婷婷| 欧美在线观看一二区| 国产亚洲一级| 欧美成人午夜剧场免费观看| av成人毛片| 久久国产精品高清| 国产一区二区三区在线观看免费|