亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

poj1692 Crossed Matchings(dp,最長公共子序列變形,好題)

2019-11-14 12:26:51
字體:
來源:轉載
供稿:網友

Crossed Matchings
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 2838 Accepted: 1840

Description

There are two rows of positive integer numbers. We can draw one line segment between any two equal numbers, with values r, if one of them is located in the first row and the other one is located in the second row. We call this line segment an r-matching segment. The following figure shows a 3-matching and a 2-matching segment. 
We want to find the maximum number of matching segments possible to draw for the given input, such that: 1. Each a-matching segment should cross exactly one b-matching segment, where a != b . 2. No two matching segments can be drawn from a number. For example, the following matchings are not allowed. 
Write a PRogram to compute the maximum number of matching segments for the input data. Note that this number is always even.

Input

The first line of the input is the number M, which is the number of test cases (1 <= M <= 10). Each test case has three lines. The first line contains N1 and N2, the number of integers on the first and the second row respectively. The next line contains N1 integers which are the numbers on the first row. The third line contains N2 integers which are the numbers on the second row. All numbers are positive integers less than 100.

Output

Output should have one separate line for each test case. The maximum number of matching segments for each test case should be written in one separate line.

Sample Input

36 61 3 1 3 1 33 1 3 1 3 14 41 1 3 3 1 1 3 3 12 111 2 3 3 2 4 1 5 1 3 5 103 1 2 3 2 4 12 1 5 5 3 

Sample Output

608

Source

Tehran 1999

參考博客鏈接

題意:

給出兩行數,求上下匹配的最多組數是多少。匹配規則1.匹配對的數字必須相同2.每個匹配必須有且只能有一個匹配與之相交叉,且相交叉的兩組匹配數字必須不同3.一個數最多只能匹配一次

題解:

一開始我以為是個二分匹配的題目,后來想了好久不知道怎么處理第二個條件。

這題其實是動態規劃題。分析:用dp[i][j]表示第一行取i個數,第二行取j個數字的最多匹配項對于某個dp[i][j]:1.不匹配第一行i個,或不匹配第二行第j個:dp[i][j]=Max(dp[i-1][j],dp[i][j-1])2.如果a[i]==b[j],不產生新匹配,匹配結果為1的值3.若a[i]!=b[j]:a.則第一行從i往前掃,直到掃到第一個a[k1]==b[j](k1 b.同理,第二行從j往前掃,直到掃到第一個b[k2]==a[i](k2 若找不到這樣的k1,k2則不能才產生新匹配,跳過若存在這樣的k1,k2,此時匹配(a[i],b[k2])、(a[k1],b[j])匹配,才生新的匹配情形,匹配數量為:dp[k1-1][k2-1]+2。

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<stack>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb push_back#define fi first#define se secondtypedef vector<int> VI;typedef long long ll;typedef pair<int,int> PII;const int inf=0x3fffffff;const ll mod=1000000007;const int maxn=100+10;int n,m;int a[maxn],b[maxn];int d[maxn][maxn];int main(){    int cas;    scanf("%d",&cas);    while(cas--)    {        scanf("%d%d",&n,&m);        rep(i,1,n+1) scanf("%d",&a[i]);        rep(i,1,m+1) scanf("%d",&b[i]);        memset(d,0,sizeof(d));        rep(i,2,n+1) rep(j,2,m+1)        {            d[i][j]=max(d[i][j-1],d[i-1][j]);            if(a[i]==b[j]) continue;            else            {                int p1=0,p2=0;                for(int k=i-1;k>0;k--)                {                    if(a[k]==b[j])                    {                        p1=k;                        break;                    }                }                for(int l=j-1;l>0;l--)                {                    if(b[l]==a[i])                    {                        p2=l;                        break;                    }                }                if(p1&&p2) d[i][j]=max(d[i][j],d[p1-1][p2-1]+2);            }        }        printf("%d/n",d[n][m]);    }        return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费一线在线观看| 国产一区二区免费| 久久天天躁狠狠躁夜夜av| 性色av一区二区三区红粉影视| 欧美大片在线看免费观看| 国产精品xxxxx| 国产91色在线播放| 国产精品福利在线观看| 久久综合伊人77777蜜臀| 欧美成人在线免费| 欧美精品一区三区| 在线免费看av不卡| 日韩亚洲精品视频| 国产mv免费观看入口亚洲| 成人免费视频在线观看超级碰| 日韩精品视频免费专区在线播放| 日韩电影中文 亚洲精品乱码| 亚洲一级黄色av| 亚洲一区www| 久久精品视频va| 尤物九九久久国产精品的特点| 国产在线观看91精品一区| 日韩免费看的电影电视剧大全| 国产一区二区三区三区在线观看| 国产精品久久久久久久久免费看| 97国产精品人人爽人人做| 日韩美女中文字幕| 57pao国产精品一区| 色av吧综合网| 中文字幕亚洲无线码在线一区| 国产美女主播一区| 亚洲天堂免费在线| 一区二区亚洲精品国产| 欧美激情精品久久久久久大尺度| 亚洲一区二区福利| 日韩在线免费视频| xxav国产精品美女主播| 羞羞色国产精品| 亚洲欧美在线免费观看| 久久综合五月天| 欧美日韩国产一区二区三区| 成人av在线亚洲| 亚洲欧美日韩图片| 国产精品美女999| 午夜精品一区二区三区在线视频| 国产成人久久久| 91精品在线观| 国产精品久久久久久久久影视| 亚洲色图狂野欧美| 国产精品一区二区久久久| 欧美日韩国产影院| 日韩精品视频免费在线观看| 亚洲免费影视第一页| 日韩av在线高清| 97视频在线观看免费高清完整版在线观看| 欧美日韩亚洲91| 日韩精品中文字幕在线| 18性欧美xxxⅹ性满足| 日韩在线免费观看视频| 中文字幕视频在线免费欧美日韩综合在线看| 正在播放国产一区| 国产欧洲精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕日韩在线播放| 久久av红桃一区二区小说| 国产成人免费av| 亚洲韩国欧洲国产日产av| 国产欧美精品日韩精品| 亚洲精品动漫100p| 日韩成人中文字幕在线观看| 欧洲成人在线视频| 国产精品亚洲综合天堂夜夜| 91沈先生作品| 精品视频9999| 午夜精品久久久久久久99黑人| 欧美视频一二三| 欧美俄罗斯乱妇| 日韩欧美有码在线| 亚洲精品中文字幕女同| 欧美一区亚洲一区| 国产免费一区二区三区香蕉精| 中文字幕亚洲自拍| 亚洲免费小视频| 九九久久久久99精品| 精品中文字幕在线观看| 97久久精品在线| 69久久夜色精品国产7777| 一本一本久久a久久精品牛牛影视| 国产女人18毛片水18精品| 亚洲福利在线视频| 欧美激情久久久| 成人妇女淫片aaaa视频| 日韩av片永久免费网站| 欧美日韩国产色| 在线观看久久av| 日韩美女在线观看| 国产成人福利视频| 亚洲国产另类 国产精品国产免费| 国产一区红桃视频| 精品国产户外野外| 亚洲天天在线日亚洲洲精| 日韩欧美精品中文字幕| 日韩免费在线播放| 国产亚洲激情视频在线| 欧美日韩综合视频网址| 国产97在线播放| 国产精品偷伦一区二区| 国产午夜精品久久久| 午夜精品福利电影| 国产精品一久久香蕉国产线看观看| 国内精品久久久久影院优| 国色天香2019中文字幕在线观看| 欧美日韩电影在线观看| 日韩欧美在线免费观看| 92福利视频午夜1000合集在线观看| 国产精品丝袜久久久久久高清| 欧美性猛交xxxx偷拍洗澡| 亚洲男人的天堂在线| 国产一区二区三区视频免费| 精品成人乱色一区二区| 亚洲欧洲一区二区三区久久| 欧美亚洲第一页| 8090成年在线看片午夜| 色七七影院综合| 色婷婷综合成人av| 亚洲最新视频在线| 日韩av影视综合网| 欧美激情极品视频| 国产日韩在线视频| 日韩毛片在线看| 中文字幕日韩欧美| 久久久久这里只有精品| 亚洲女人天堂网| 久热精品视频在线观看一区| 美日韩丰满少妇在线观看| 欧美国产视频日韩| 亚洲成人激情图| 久久久国产一区二区| 久久免费观看视频| 日韩av电影手机在线观看| 国产激情综合五月久久| 91中文字幕在线观看| 日韩欧美中文免费| 精品福利樱桃av导航| 国产亚洲欧洲高清一区| 亚洲电影免费观看高清| 欧美wwwwww| 日韩电影中文字幕一区| 欧美人交a欧美精品| 久久深夜福利免费观看| 亚洲精品xxxx| 91免费精品视频| 久久综合88中文色鬼| 日韩精品亚洲视频| 久久精品91久久香蕉加勒比| 亚洲区bt下载| 成人午夜两性视频| 欧美xxxx做受欧美.88| 国产免费一区二区三区在线观看| 日本一区二区不卡| 综合136福利视频在线| 欧美日韩裸体免费视频| 欧美一级免费视频| 精品视频—区二区三区免费|