日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嫣然一笑II

發(fā)布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嫣然一笑II 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【問題描述】(模擬)
一張長度為N的紙帶,我們可以從左至右編號為0 ? N(紙帶最左端 標(biāo)號為
0) 。 現(xiàn)在有M次操作, 每次將紙帶沿著某個位置進(jìn)行折疊, 問所有操作之后紙帶
的長度是多少。
【輸入格式】
第一行兩個數(shù)字N,M如題意所述。
接下來一行M個整數(shù)代表每次折疊的位置。
【輸出格式】
一行一個整數(shù)代表答案。
【樣例輸入】
5 2
3 5
【樣例輸出】
2
【樣例解釋】
樹上有只鳥。
【數(shù)據(jù)規(guī)模與約定】
對于60%的數(shù)據(jù),N,M ≤ 3000。
對于100%的數(shù)據(jù),N≤ 10^18, M≤ 3000。

題解:

#include<iostream> #include<cstdio> using namespace std; long long a[50005]; int main() {long long n,m;scanf("%lld%lld",&n,&m);for(int i=1;i<=m;i++){scanf("%lld",&a[i]);}long long r=n;for(int i=1;i<=m;i++){for(int j=i+1;j<=m;j++){if(a[j]<=a[i]){a[j]=a[i]+a[i]-a[j];}}r=max(a[i]+a[i],r);for(int j=i+1;j<=m;j++){a[j]-=a[i];}r-=a[i];}printf("%lld",r);return 0; }

————————————————–我是華麗的分割線—————————————————–

無向圖找環(huán)

Description
給你一副無向圖,每條邊有邊權(quán),保證圖聯(lián)通,現(xiàn)在讓你判斷這個圖是否滿足任意一個環(huán)的邊權(quán)異或和為0。

Input

多組測試數(shù)據(jù),先輸入一個數(shù)字T,T組每組先輸入兩個數(shù)n m,表示圖的點(diǎn)跟邊的數(shù)量。

然后是m行,每行三個數(shù)a b c。代表一條邊的起點(diǎn),終點(diǎn),邊權(quán)。

Input
多組測試數(shù)據(jù),每組先輸入兩個數(shù)n m,表示圖的點(diǎn)跟邊的數(shù)量。

然后是m行,每行三個數(shù)a b c。代表一條邊的起點(diǎn),終點(diǎn),邊權(quán)。

1 <= n<= 100, 1 <= m <= 100.

1 <= a <= n, 1 <= b <= n, a != b.

0 <= c <= 2^16-1

Output
對于每組數(shù)據(jù)輸出Yes或者 No(若滿足輸出Yes,不存在輸出No)。

Sample Input
3 3
1 2 0
2 3 1
3 1 1

Sample Output
Yes

題解(dfs):

#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=505; struct cc{int from,to,cost; }es[maxn]; int first[maxn],next[maxn]; int tot=0; void build(int ff,int tt,int pp) { es[++tot]=(cc){ff,tt,pp}; next[tot]=first[ff]; first[ff]=tot; } int vis[maxn]; int dis[maxn]; bool flag; void dfs(int x) {for(int i=first[x];i;i=next[i]){int u=es[i].to;if(!vis[u]){vis[u]=1;dis[u]=dis[x]^es[i].cost;dfs(u);}else {if((dis[x]^dis[u]^es[i].cost )!=0){flag=1;return ;}}} } void init() {memset(dis,0,sizeof(0));memset(vis,0,sizeof(vis));memset(es,0,sizeof(es));memset(first,0,sizeof(first));memset(next,0,sizeof(next));flag=0; } int main() {int T;scanf("%d",&T);while(T--){init();int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);build(x,y,z);build(y,x,z);}for(int i=1;i<=n;i++){if(!vis[i]){vis[i]=1;dfs(i); }}if(flag){printf("No\n"); }else{printf("Yes\n"); }} return 0; }

——————————————————我是華麗的分割線——————————————————

完美的序列(sequence)
Time Limit:1000ms Memory Limit:64MB
題目描述
LYK 認(rèn)為一個完美的序列要滿足這樣的條件:對于任意兩個位置上的數(shù)都不相同。然而
并不是所有的序列都滿足這樣的條件。
于是 LYK 想將序列上的每一個元素都增加一些數(shù)字(當(dāng)然也可以選擇不增加),使得整個
序列變成美妙的序列。
具體地, LYK 可以花費(fèi) 1 點(diǎn)代價將第 i 個位置上的數(shù)增加 1,現(xiàn)在 LYK 想花費(fèi)最小的代價
使得將這個序列變成完美的序列。
輸入格式(sequence.in)
第一行一個數(shù) n,表示數(shù)字個數(shù)。
接下來一行 n 個數(shù) ai 表示 LYK 得到的序列。
輸出格式(sequence.out)
一個數(shù)表示變成完美的序列的最小代價。
輸入樣例
4
1 1 3 2
輸出樣例
3
數(shù)據(jù)范圍
對于 30%的數(shù)據(jù) n<=5。
對于 60%的數(shù)據(jù) n<=1000。
對于 80%的數(shù)據(jù) n<=30000,ai<=3000。
對于 100%的數(shù)據(jù) n<=100000,1<=ai<=100000。

題解(排序?!):

#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[300005]; int main() {int n;scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);a[x]++;}int ans=0;for(int i=1;i<=300000;i++){if(a[i]>1){ans+=a[i]-1;a[i+1]+=a[i]-1;}}printf("%d",ans);return 0; }

—————————————————我是華麗的分割線——————————————————-

LYK 與實(shí)驗(yàn)室(lab)
Time Limit:5000ms Memory Limit:64MB
題目描述
LYK 在一幢大樓里,這幢大樓共有 n 層,LYK 初始時在第 a 層上。
這幢大樓有一個秘密實(shí)驗(yàn)室,在第 b 層,這個實(shí)驗(yàn)室非常特別,對 LYK 具有約束作用,
即若 LYK 當(dāng)前處于 x 層,當(dāng)它下一步想到達(dá) y 層時,必須滿足|x-y|<|x-b|,而且由于實(shí)驗(yàn)室
是不對外開放的,電梯無法停留在第 b 層。
LYK 想做一次旅行,即它想按 k 次電梯,它想知道不同的旅行方案個數(shù)有多少個。
兩個旅行方案不同當(dāng)前僅當(dāng)存在某一次按下電梯后停留的樓層不同。
輸入格式(lab.in)
一行 4 個數(shù),n,a,b,k。
輸出格式(lab.out)
一個數(shù)表示答案,由于答案較大,將答案對 1000000007 取模后輸出。
輸入樣例 1
5 2 4 1
輸出樣例 1
2
輸入樣例 2
5 2 4 2
輸出樣例 2
2
輸入樣例 3
5 3 4 1
輸出樣例 3
0
數(shù)據(jù)范圍
對于 20%的數(shù)據(jù) n,k<=5。
對于 40%的數(shù)據(jù) n,k<=10。
對于 60%的數(shù)據(jù) n,k<=500。
對于 90%的數(shù)據(jù) n,k<=2000。
對于 100%的數(shù)據(jù) n,k<=5000。

題解(dp):

#include<iostream> #include<cstdio> using namespace std; const int mod=1000000007; long long dp[5005],sum[5005]; int main() { int n,a,b,k;qscanf("%d%d%d%d",&n,&a,&b,&k); dp[a]=sum[a]=1;int ans=0;for(int i=a+1;i<=n;i++){sum[i]=1;//前綴和 }for(int i=1;i<=k;i++){for(int j=1;j<=n;j++){if(j<b)//實(shí)驗(yàn)室下半部分到不了實(shí)驗(yàn)室上方 {dp[j]=(sum[(j+b-1)/2]-sum[j]+sum[j-1]+mod)%mod;}if(j>b)//實(shí)驗(yàn)室上半部分到不了實(shí)驗(yàn)室下方 {dp[j]=(sum[n]-sum[(j+b)/2]+mod-sum[j]+sum[j-1]+mod)%mod; }if(j==b){dp[j]=0;//實(shí)驗(yàn)室不能到達(dá)}}for(int j=1;j<=n;j++){sum[j]=(sum[j-1]+dp[j])%mod;//前綴和 }}for(int i=1;i<=n;i++){ans=(ans+dp[i])%mod;//統(tǒng)計(jì) }printf("%d",ans);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/-feather/p/7779901.html

總結(jié)

以上是生活随笔為你收集整理的嫣然一笑II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。