國慶長樂醬油之旅day1

2021-08-28 18:36:19 字數 3907 閱讀 9813

2018-10-01 19:51:01成功a掉

評價:普及+,提高-

思路:首先很容易想到如何判斷兩條線有交點

就是在所給的字串中找到兩個一樣的點

然後在這兩個點之間搜尋

記錄兩點之間所有點出現的次數,判斷是否為偶數即可

然而這是片面的

我們需要找兩個一樣的點也是有限制的,我們要處理一下。

同時我們在記錄交點的時候,不能單純的憑藉奇偶來判斷,要採用特殊的方法

講上面的那些廢話只是因為基本思路比較重要.......

當然**處理起來也特難受

#include

#include

#include

#include

#define size 100010

using

namespace std;

string a;

int num[30]

,start[size]

,end[size]

,pos[size]

,posn[size]

,vis[size]

;//num相當於乙個桶,用於存26個字母出現的次數

//start存區間頭,end存區間尾;

//pos和posn都存順序,具體作用**中解釋

int sign[size]

,ans;

intmain()

else

//如果這個數不是0,即找到了區間的結尾

}for

(int i=

1;i<=tot;i++

)//開始列舉每乙個區間

else

//如果之前訪問過,即前面有字母與之對應

} ans+

=sum;

//累加答案

}printf

("%d"

,ans/2)

;//因為在計算的時候回多算,所以要 /2

return0;

}//by yfengzi

#include

#include

#include

#include

#define size 100010

using

namespace std;

string a;

int num[30]

,start[size]

,end[size]

,pos[size]

,posn[size]

,vis[size]

;int sign[size]

,ans;

intmain()

else

}for

(int i=

1;i<=tot;i++

)else

} ans+

=sum;

}printf

("%d"

,ans/2)

;fclose

(stdin);

fclose

(stdout);

return0;

}

//2018-10-06 21:51:41正式切掉 

//spfa就行了吧,照常求最短路,中間判斷走不走特殊道路即可

//如果要走,那走幾次最好,這在做spfa時都是可以記錄的

//設f[i][j]表示走i此通道,到達j點的值

//如果通道的數量多餘傳送的次數,那我們就可以直接做spfa,中間處理一下他的 i 就行了,對於 j 我們直接搞spfa;

//如果通道的數量少於傳送的次數,那就是裸的spfa了,因為如果傳送次數多了,那就可能造成多餘的浪費,還不如不走;

#include

#include

#include

#include

#define size 5005

using

namespace std;

bool special[size]

;int n,m,q,k,ans;

int tot,head[size]

,ver[size]

,next[size]

,edge[size]

;void

add(

int x,

int y,

int z,

bool love)

bool vis[

600]

;int f[

2001][

601]

;queue<

int> qwq;

//qwq

void

spfa1()

}}}}

}//與spfa1基本一樣,只是f的第一維全部變為0,因為我們不用傳送通道

void

spfa2()

}}}}

intmain()

for(

int i=

1;i<=q;i++)if

(q>=k)

else

return0;

}//by yfengzi

//2018-10-08 10:17:30切掉

//基礎樹形dp

//f[i]代表使以i為根的樹不連通的最小代價

//易得轉移方程

//f[i]=min(edge[i],f[j])

//即使得這棵樹與葉子結點不連通的方法有兩種

//一種是刪除與葉子節點相連的邊,即edge[i]

//一種是刪除包括這些葉子結點的子樹即 f[j]

#include

#include

#include

#define size 100010

using

namespace std;

int n,s,f[size]

;bool vis[size]

;int tot,ver[size*2]

,edge[size*2]

,head[size]

,next[size*2]

;void

add(

int x,

int y,

int z)

void

dfs(

int x)

}int

main()

dfs(s)

;printf

("%d"

,f[s]);

return0;

}//by yfengzi

//2018-10-08 11:14:10切掉 

#include

#include

#include

using

namespace std;

const

long

long inf =((

1ll<<62)

-1<<1)

+1;long

long n,k,s,tt;

long

long tot1,tot2;

long

long ans=inf;

intmain()

tt=n;

while

(tt)

//統計質因子i在n!中出現的次數

ans=

min(ans,tot2/tot1);}

if(k>1)

//處理最後的乙個質因數

ans=

min(ans,tot2);}

printf

("%lld"

,ans)

;return0;

}//by yfengzi

國慶DAY1訓練

j 模擬 題意 移動數字 記錄一下每個數字的位置 然後如果和0的距離為1 則交換 include using namespace std struct node p 1020000 pos intcal int x,int y int a 1020000 intmain while m for in...

國慶集訓Day1

題意 有 n 個數 a 1,a 2,a n 有m個數 b 1,b 2,b n 令 a a 1 times a 2 times times a n 令 b b 1 times b 2 times times b n 判斷 a 是否是 b 的倍數 輸入 n,m 輸出 yes no 做法 就是個一簡單的質...

leetcode刷題之旅(day1)

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...