NOIP2014模擬10 25A組 鑽石交易

2021-07-26 07:47:58 字數 1133 閱讀 3471

這題明顯要用狀壓。

設f[i][j]表示走到第i個點,然後賣掉的鑽石的二進位制狀態為j。

直接暴力用dfs和bfs來做可以對60分,bfs的用spfa來做。

那麼f[i][j]=max(f[i][j],f[k][j|er[p-1]]-chang[i]+a[j][p])這是自己走別的點的情況,自己走自己的情況也類似。

但是把二進位制放進去的冗餘情況較多,因為乙個二進位制情況可以轉化成很多個二進位制情況。

我們考慮一下有沒有二進位制轉移只轉移一位的情況。

我們考慮列舉二進位制狀態z,然後求出所有點只賣這些鑽石,的最長路。

設d[i]為當前狀態z是的最短路(就是不買鑽石然後更新別的值)。

然後用d值把f[i][z]的值向後多推一位。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

#define fod(i,a,b) for(i=a;i>=b;i--)

#define rep(i,a) for(i=first[a];i;i=next[i])

using namespace std;

const int maxn=1507;

int i,j,k,l,t,n,m,ans,s,x,y,z,p,q;

int a[maxn][maxn];

int first[4007],next[4007],last[4007],num,chang[4007],da;

int f[1507][1507],er[11],cnt,b[1507][11];

int data[maxn*200],d[maxn];

bool bz[maxn],az;

void add(int

x,int

y,int z)

void spfa(int zhi)}}

bz[x]=0;

}fo(i,1,m)

}int main()

noip2014 螺旋矩陣 (模擬)

p1913螺旋矩陣 accepted 標籤 noip普及組2014 乙個 n 行 n 列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第 1 行第 1 列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中 依次填入 1,2...

NOIP2014模擬11 3 蛋糕

今天是bessie的生日,他買了乙個蛋糕和朋友們一起分享,蛋糕可以看成是乙個r行c列的 共有r c個格仔,每個格仔都有乙個0至9的數字,表示該格仔蛋糕擁有的巧克力。現在bessie要把蛋糕橫的切3刀再豎的切3刀,由於bessie刀法厲害,所以每個格仔蛋糕都是完整的,顯然蛋糕會被切成16份,然後bes...

NOIP2014 比例簡化 模擬

輸入檔案 ratio.in輸出檔案 ratio.out簡單對比 時間限制 1 s 記憶體限制 256 mb 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結...