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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018/7/8-纪中某C组题【jzoj1619,jzoj1620,jzoj1621,jzoj1622】

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018/7/8-纪中某C组题【jzoj1619,jzoj1620,jzoj1621,jzoj1622】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

分數250250,十分開心


正題


T1:音樂節拍

洛谷題目鏈接:https://www.luogu.org/problemnew/show/P2969

大意

有n段音樂,每段音樂持續時間不同,q個詢問求一個時間點再放那首歌

考試時

開始時發現詢問的時間點不是按順序來的,于是就想到了離線算法。

解題思路

先將詢問排個序,然后一個指針指向現在的音樂,如果不是的話就往前推。

代碼

#include<cstdio> #include<algorithm> #define MN 50000 using namespace std; struct node{int num,que,ans; }qu[MN+1]; int n,q,b[MN+1]; bool cmp(node x,node y) {return x.que<y.que; } bool cmp2(node x,node y) {return x.num<y.num; } int main() {//freopen("mnotes.in","r",stdin);//freopen("mnotes.out","w",stdout);scanf("%d%d",&n,&q);for (int i=1;i<=n;i++)scanf("%d",&b[i]);for (int i=1;i<=q;i++){scanf("%d",&qu[i].que);qu[i].num=i;//標記}sort(qu+1,qu+1+q,cmp);//排序int j=1,now=b[1]-1;//記錄現在位置for (int i=1;i<=q;i++){while (qu[i].que>now)//往前推{j++;now+=b[j];}qu[i].ans=j;//記錄}sort(qu+1,qu+1+q,cmp2);//排回原來的順序for (int i=1;i<=q;i++)printf("%d\n",qu[i].ans);//輸出 }

T2:電視游戲問題

大意

洛谷鏈接:https://www.luogu.org/problemnew/show/P2967
有n個價格不同平臺,上面有不同的游戲,每個游戲有不同的價格和價值,要求價格不超過v時價值最大。

考試時

開始就想到了,然后以為會超時就沒打

解題思路

f[0][i]f[0][i]表示到現在并且買了這個平臺用了i元時最大價值
f[1][i]f[1][i]表示到上次用了i元時最大價值
要將上一次繼承過來

f[0][i]=f[1][i?w]f[0][i]=f[1][i?w]

然后動態轉移

f[0][i]=max{f[0][i?w]+c}f[0][i]=max{f[0][i?w]+c}

最后更新f[1]f[1]

f[1][j]=max{f[0][j]??,??f[1][j]}f[1][j]=max{f[0][j],f[1][j]}

代碼

#include<cstdio> #include<algorithm> using namespace std; int n,v,f[51][100001],w,c,k,wc; int main() {freopen("vidgame.in","r",stdin);freopen("vidgame.out","w",stdout);scanf("%d%d",&n,&v);for (int i=1;i<=n;i++){scanf("%d%d",&w,&k);for (int j=w;j<=v;j++)f[0][j]=f[1][j-w];//繼承上次for (int m=1;m<=k;m++){scanf("%d%d",&wc,&c);for (int j=v;j>=w+wc;j--)f[0][j]=max(f[0][j],f[0][j-wc]+c);//動態轉移}for (int j=1;j<=v;j++)f[1][j]=max(f[0][j],f[1][j]),f[0][j]=0;//更新最大}printf("%d",f[1][v]); }

T3:頭暈的奶牛

洛谷鏈接:https://www.luogu.org/problemnew/show/P2017

大意

一個n個點的圖,有m1條有向邊,有m2條無向邊,將無向邊變為有向邊使得圖變為有向無環圖。

考試時

有向無環圖,我就想到了拓撲排序,然后就敲了一個東西發現不行。然后我就研究,發現可以將所有的點都集結在終點是出度為0的。然后打了一個奇怪的東西就80。

解題思路

先用有向邊建圖,然后再進行拓撲排序,之后一條無向邊的話就將拓撲序排在前面的連排在后面的(因為拓撲序排在后面的無論如何也回不到前面)。

代碼

#include<cstdio> #include<algorithm> using namespace std; struct node{int to,next; }a[300001]; int n,m1,m2,x,y,ls[100001],in[100001],tot,head,tail,state[100001]; int d[100001],s,t,star,ta; void addl(int x,int y) {a[++tot].to=y;in[y]++;a[tot].next=ls[x];ls[x]=tot; } void bfs()//拓撲排序 {do{x=state[++head];for (int i=ls[x];i;i=a[i].next){y=a[i].to;if (!d[y]){in[y]--;if (in[y]==0){state[++tail]=y;d[y]=++ta;}}}}while (head<tail); } int main() {//freopen("dizzy.in","r",stdin);//freopen("dizzy.out","w",stdout);scanf("%d%d%d",&n,&m1,&m2);for (int i=1;i<=m1;i++){scanf("%d%d",&x,&y);addl(x,y);}for (s=1;s<=n;s++)if (in[s]==0) state[++tail]=s,d[s]=++ta;//尋找起點bfs(),t++;for (int i=1;i<=m2;i++){scanf("%d%d",&x,&y);if (d[x]<d[y]) printf("%d %d\n",x,y);//判斷else printf("%d %d\n",y,x);} }

T4:過路費

洛谷:https://www.luogu.org/problemnew/show/P2966

大意

一個圖,一個點到另一個點的距離就是路徑邊權和加上路徑上的最大點值。

考試時

寫了一個spfa,然后發現一種情況

這時spfa就會走1?>2?>4?>51?>2?>4?>5代價11,可是如果走1?>3?>4?>51?>3?>4?>5的話代是價10。然后我就想到了一個方法:
f[i][j]f[i][j]表示到達i點時路徑上最大點值的是j時的最短距離。
然后超時70分

解題思路

首先我們將點值進行排序用num[i]num[i]表示點權從小到大排在第ii的點。然后枚舉kk時我們先從點權最小的點開始枚舉,然后

dis[i][j]=min{dis[i][k]+dis[k][j]}dis[i][j]=min{dis[i][k]+dis[k][j]}
cost[i][j]=min{dis[i][j]+max{c[i],c[j],c[k]}}cost[i][j]=min{dis[i][j]+max{c[i],c[j],c[k]}}
排點權的目的是為了保證 max{c[i],c[j],c[k]}max{c[i],c[j],c[k]}中有里面最大的

代碼

#include<cstdio> #include<algorithm> #include<cstring> #define maxs(x,y,z) max(x,max(y,z)) using namespace std; int n,m,k,num[251],dis[251][251],cost[251][251],c[251],x,y,w; int main() {memset(dis,127/3,sizeof(dis));memset(cost,127/3,sizeof(cost));scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=n;i++){num[i]=i;scanf("%d",&c[i]);}for (int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&w);dis[x][y]=dis[y][x]=min(dis[x][y],w);//無向圖}for (int i=1;i<n;i++)for (int j=i+1;j<=n;j++)if (c[num[i]]>c[num[j]])swap(num[i],num[j]);//排序for (int q=1;q<=n;q++){int k=num[q];for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (i!=j&&i!=k&&j!=k){dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);cost[i][j]=min(cost[i][j],dis[i][j]+maxs(c[i],c[j],c[k]));//Floyd}}for (int i=1;i<=k;i++){scanf("%d%d",&x,&y);printf("%d\n",cost[x][y]);} }

總結

以上是生活随笔為你收集整理的2018/7/8-纪中某C组题【jzoj1619,jzoj1620,jzoj1621,jzoj1622】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩色综合 | 茄子视频色 | 日韩欧美字幕 | 日本人做受免费视频 | 特黄视频免费看 | 国产福利一区在线观看 | 日本一区视频在线观看 | 亚洲逼逼 | 婷婷国产在线 | 亚洲精品88 | 久久精品色妇熟妇丰满人妻 | 俺来也俺也啪www色 欧洲一区二区视频 | 在线观看色视频 | bt天堂新版中文在线地址 | 国产免费久久 | 色一区二区 | 欧美激情va永久在线播放 | 黄色男女网站 | 奇米影视四色在线 | 苏晴忘穿内裤坐公交车被揉到视频 | 久久丫精品久久丫 | 国产精品一区二区麻豆 | 中文字幕在线观看日韩 | 久久国产热视频 | 国产精品高清网站 | 欧美自偷自拍 | 青草视频在线看 | 男女在线视频 | 一区二区三区在线播放视频 | 亚洲激情中文 | 天堂影视在线观看 | 99热在线这里只有精品 | 亚洲成人资源 | 在线观看亚洲区 | 欧美特黄aaaaaa | 欧美激情一级 | h片在线免费 | 爱乃なみ加勒比在线播放 | 欧美在线网站 | 91狠狠干| a亚洲天堂 | 欧美伦理一区 | 涩涩涩综合 | 国产高清不卡一区 | 国产在线欧美日韩 | 色视屏 | 亚洲v欧美v | 激情中文网 | 光明影院手机版在线观看免费 | 日韩欧美精品一区二区 | 一区二区三区 中文字幕 | 麻豆一区二区在线观看 | 97福利在线| 国产精品毛片一区二区在线看舒淇 | 深夜毛片 | ass日本粉嫩pics珍品 | 日本在线h| 超碰2021 | 操大爷影院 | 亚洲女优一区 | 欧美日韩免费在线 | 西西444www大胆无视频 | 在线观看毛片网站 | 秋霞影院午夜伦 | 欧美成人黑人猛交 | 欧美日韩一区二区三区在线 | 欧美一级高清片 | 人与动物毛片 | 欧美亚韩一区二区三区 | 国产精品久久久久久久久免费相片 | 国产女人18毛片水真多18精品 | 午夜免费福利小视频 | 99热在线观看 | 糖心视频在线 | 久久久艹| www.色国产 | 日本色影院 | 国产美女一级片 | 久久免费片 | 欧美日韩黄色 | 福利国产在线 | 小泽玛利亚一区二区三区视频 | 一区二区高清在线观看 | 精品一区二区三区人妻 | 天天色综合天天 | 草草在线影院 | 午夜精品久久久久久久第一页按摩 | 三男一女吃奶添下面 | 国产成人在线免费视频 | 可以看的av网站 | 日本三级吃奶头添泬 | 日韩av在线一区 | 色中文在线 | 丰满人妻一区二区 | 99久久久无码国产精品性 | 久久久亚洲天堂 | 国产成年人视频网站 | 在线色综合 | 日本欧美在线观看 |