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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SDOI Day2

發布時間:2025/6/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SDOI Day2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天做了SDOI?Day2 覺得自己萌萌噠= =題目真的有點水,一點編程復雜度都沒有

T1:星際戰爭

描述:http://www.lydsy.com/JudgeOnline/problem.php?id=3993

這道題是這兩天最容易的題了吧。。

可以發現這是一個二分圖,考慮二分答案,那么人們在這段時間的輸出傷害就能夠確定了,用最大流判斷是否所有的機器人護甲值都為0,即可。

數據較良心跑得飛快

Code:

1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define maxn 105 7 #define maxm 3000 8 struct edges{ 9 int to,next;double cap; 10 }edge[maxm*2]; 11 int l,next[maxn]; 12 inline void addedge(int x,int y,double z) { 13 l++; 14 edge[l*2]=(edges){y,next[x],z};next[x]=l*2; 15 edge[l*2+1]=(edges){x,next[y],0};next[y]=l*2+1; 16 } 17 int p[maxn],gap[maxn],h[maxn],s,t; 18 double sap(int u,double flow) { 19 if (u==t) return flow; 20 double cnt=0; 21 for (int i=p[u];i;i=edge[i].next) 22 if (edge[i].cap&&h[edge[i].to]+1==h[u]) { 23 double cur=sap(edge[i].to,min(flow-cnt,edge[i].cap)) ; 24 edge[i].cap-=cur;edge[i^1].cap+=cur; 25 p[u]=i; 26 if ((cnt+=cur)==flow) return flow; 27 } 28 if (!(--gap[h[u]])) h[s]=t; 29 gap[++h[u]]++; 30 p[u]=next[u]; 31 return cnt; 32 } 33 inline double maxflow(){ 34 for (int i=1;i<=t;i++) p[i]=next[i]; 35 memset(h,0,sizeof(h)); 36 memset(gap,0,sizeof(gap)); 37 gap[0]=t; 38 double flow=0; 39 while (h[s]<t) flow+=sap(s,1e7); 40 return flow; 41 } 42 int a[maxn],b[maxn]; 43 bool c[maxn][maxn]; 44 int n,m; 45 inline void build(double mid){ 46 l=0; 47 s=n+m+1,t=n+m+2; 48 memset(next,0,sizeof(next)); 49 for (int i=1;i<=n;i++) addedge(s,i,mid*a[i]); 50 for (int i=1;i<=m;i++) addedge(i+n,t,b[i]); 51 for (int i=1;i<=n;i++) 52 for (int j=1;j<=m;j++) 53 if (c[i][j]) addedge(i,j+n,5e6); 54 } 55 int main(){ 56 scanf("%d%d",&m,&n); 57 int sum=0; 58 for (int j=1;j<=m;j++) { 59 scanf("%d",b+j);sum+=b[j]; 60 } 61 for (int i=1;i<=n;i++) scanf("%d",a+i); 62 for (int i=1;i<=n;i++) 63 for (int j=1;j<=m;j++) scanf("%d",c[i]+j); 64 double l=0,r=5e6; 65 while (r-l>1e-4) { 66 double mid=(l+r)/2; 67 build(mid); 68 if (maxflow()<sum) l=mid; 69 else r=mid; 70 } 71 printf("%lf\n",r); 72 return 0; 73 } View Code

?

T2:約數個數和

描述:http://www.lydsy.com/JudgeOnline/problem.php?id=3994

數論渣= =貼下別人的題解吧= =http://blog.codebursts.com/bzoj3994/

順便說一下自己YY出來的另一種解法,記f[i][j][k]為n=i,m=j中n*m的最小質因數大于pri[k]的答案

那么f[i][j][k]=sigma(f[i/(x^a)][j/(x^b)][k+1]*(a+b+1))

好像很漂亮的樣子,但是時間復雜度我不知道怎么樣,求大神給我解答QAQ

T3:道路修建

描述:http://www.lydsy.com/JudgeOnline/problem.php?id=3995

看到這個下意識就想到線段樹了= =

一共有3種解法

解法一:當合并區間時,連上兩條邊變成一個環套樹,然后刪去環上最大的邊

我們考慮維護每個區間最左右的一個類似C型結構,可以發現只有當刪去的邊為縱邊同時這個小區間只有一條縱邊時大區間的這個東西才會改變,否則都是小區間的左右值。

保存左右兩邊C的橫邊最大值以及縱邊最大值還有縱邊數量即可

解法二:考慮直接生成新區間的樹

可以發現這個區間只有可能是或

那么怎么維護這個聯通塊—聯通塊的問題呢= =

有3種情況= =

或還有

然后考慮怎么維護聯通塊—聯通塊—聯通塊的問題了= =

我去這怎么辦啊

據某位同學透露,這個一共只有3種情況所以可以直接維護(我去我怎么搞出了超多種情況= =,但人家還真的a了而且跑得飛快= =)

具體的實現方法可以私信我

解法三:

可以看出,可能成為樹的是該區間的所有點都和暴露在外面的四個點之一相連,所以我們可以考慮用聯通性的方法來解決這道題

枚舉所有的聯通性并考慮轉移,還是能寫的= =

時間上就有點拙計了

Code:(解法一)

1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define maxn 60010 7 struct bo{ 8 int c[2],cost,mx[2][2];bool flag; 9 }; 10 inline bo update(bo x,bo y){ 11 bo ans; 12 ans.c[0]=y.c[0]; 13 ans.c[1]=y.c[1]; 14 ans.cost=x.cost+y.cost+x.c[0]+x.c[1]; 15 ans.mx[0][0]=x.mx[0][0],ans.mx[0][1]=x.mx[0][1]; 16 ans.mx[1][0]=y.mx[1][0],ans.mx[1][1]=y.mx[1][1]; 17 int tmp=max(max(x.mx[1][0],y.mx[0][0]),max(x.c[0],x.c[1])); 18 if (tmp>=max(x.mx[1][1],y.mx[0][1])) { 19 ans.cost-=tmp;ans.flag=0;return ans; 20 } 21 ans.flag=x.flag&y.flag; 22 if (x.mx[1][1]>y.mx[0][1]) { 23 ans.cost-=x.mx[1][1]; 24 if (x.flag) { 25 ans.mx[0][0]=max(ans.mx[0][0],tmp); 26 ans.mx[0][1]=y.mx[0][1]; 27 } 28 return ans; 29 } 30 ans.cost-=y.mx[0][1]; 31 if (y.flag) { 32 ans.mx[1][0]=max(ans.mx[1][0],tmp); 33 ans.mx[1][1]=x.mx[1][1]; 34 } 35 return ans; 36 } 37 38 int a[maxn][3]; 39 struct node{ 40 int l,r;bo b; 41 }t[maxn*8]; 42 #define mid ((l+r)>>1) 43 #define lc (x<<1) 44 #define rc (lc^1) 45 void build(int x,int l,int r){ 46 t[x].l=l;t[x].r=r; 47 if (l==r) { 48 t[x].b.c[0]=a[l][0]; 49 t[x].b.c[1]=a[l][1]; 50 t[x].b.cost=a[l][2]; 51 t[x].b.flag=1; 52 memset(t[x].b.mx,0,sizeof(t[x].b.mx)); 53 t[x].b.mx[1][1]=t[x].b.mx[0][1]=a[l][2]; 54 return ; 55 } 56 build(lc,l,mid);build(rc,mid+1,r); 57 t[x].b=update(t[lc].b,t[rc].b); 58 } 59 void set(int x,int y){ 60 int l=t[x].l,r=t[x].r; 61 if (l>y||r<y) return ; 62 if (l==r) { 63 t[x].b.c[0]=a[l][0]; 64 t[x].b.c[1]=a[l][1]; 65 t[x].b.cost=a[l][2]; 66 t[x].b.flag=1; 67 memset(t[x].b.mx,0,sizeof(t[x].b.mx)); 68 t[x].b.mx[1][1]=t[x].b.mx[0][1]=a[l][2]; 69 return ; 70 } 71 set(lc,y);set(rc,y); 72 t[x].b=update(t[lc].b,t[rc].b); 73 } 74 bo query(int x,int x1,int y1) { 75 int l=t[x].l,r=t[x].r; 76 if (x1<=l&&r<=y1) return t[x].b; 77 if (y1<=mid) return query(lc,x1,y1); 78 if (mid<x1) return query(rc,x1,y1); 79 return update(query(lc,x1,y1),query(rc,x1,y1)); 80 } 81 int main(){ 82 int n,m; 83 scanf("%d%d",&n,&m); 84 for (int i=1;i<n;i++) scanf("%d",&a[i][0]); 85 for (int i=1;i<n;i++) scanf("%d",&a[i][1]); 86 for (int i=1;i<=n;i++) scanf("%d",&a[i][2]); 87 build(1,1,n); 88 while (m--) { 89 char opt[2]; 90 int x0,x1,y0,y1,z; 91 bo x,y; 92 scanf("%s",opt); 93 switch (opt[0]) { 94 case 'Q' : 95 scanf("%d%d",&x1,&y1); 96 printf("%d\n",query(1,x1,y1).cost); 97 break; 98 case 'C': 99 scanf("%d%d%d%d%d",&x0,&y0,&x1,&y1,&z); 100 if (y0>y1) swap(y0,y1); 101 if (y0==y1) a[y0][2]=z; 102 else a[y0][x0-1]=z; 103 set(1,y0); 104 break; 105 } 106 } 107 return 0; 108 } View Code

?

轉載于:https://www.cnblogs.com/New-Godess/p/4445456.html

總結

以上是生活随笔為你收集整理的SDOI Day2的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 狂野欧美性猛交免费视频 | 美女扒开内裤让男人捅 | 国产精品自拍一区 | 国产精品国产一区二区 | 男人插女人下面视频 | 国产麻豆xxxvideo实拍 | 中国字幕一色哟哟 | 中文字幕乱码一二三区 | 欧美日韩资源 | 天天色天天草 | 狠狠操婷婷 | 久久久亚洲av波多野结衣 | 黄色小视频在线看 | 动漫女被黄漫免费视频 | 欧美在线观看视频一区二区 | 99综合| 熟妇五十路六十路息与子 | 亚洲成人一区在线观看 | 成人动漫亚洲 | 加勒比久久综合 | 一区视频在线 | 国产伦精品一区二区三区高清版 | 可以免费看的av网站 | 97超碰97 | 正在播放日韩 | caoporen超碰 | 免费极品av一视觉盛宴 | 播放男人添女人下边视频 | 88av在线| 爱插视频 | 日本美女性生活视频 | 亚洲欧美伊人 | 91在线视频导航 | 成人在线视频网址 | 99久久免费精品 | 亚洲2022国产成人精品无码区 | 亚洲色鬼| 国产重口老太伦 | 亚洲熟妇中文字幕五十中出 | 成人免费高清在线观看 | 日韩激情精品 | 人妻丰满熟妇av无码区免 | 韩国伦理av | 台湾佬综合网 | 哪里可以看毛片 | 欧美人妻精品一区二区三区 | 色噜噜日韩精品欧美一区二区 | 久久免费福利 | 色秀av| 免费看黄网站在线 | 亚洲一区av在线 | jzzjzz日本丰满成熟少妇 | 国产99久久九九精品无码免费 | 亚洲视频色图 | 高贵麻麻被调教成玩物 | 日本公与丰满熄 | 艳妇臀荡乳欲伦交换在线看 | 黄色特级一级片 | 亚洲精品国产精品国自产观看 | 免费高清成人 | 九色影院| 国产精品性 | 国产专区欧美专区 | 色戒在线免费 | 99国产精品欲 | 99热精品在线播放 | 丁香一区二区 | 精品无码国产一区二区三区av | 天天干天天插天天操 | 插插插网站| 日韩视频免费观看高清完整版在线观看 | 日韩欧美不卡在线 | 日韩中文字幕在线不卡 | 国产精品一区二区亚洲 | 天天5g天天爽免费观看 | 老头吃奶性行交 | 亚洲精品免费看 | 免费的一级片 | 欧美日韩在线视频一区 | 亚洲欧洲免费视频 | 艳妇臀荡乳欲伦交换h漫 | 乳孔很大能进去的av番号 | 啪啪av导航 | 欧美大色网 | 4438x在线观看 | 伊人222成人综合网 亚洲日本中文 | 稀缺小u女呦精品呦 | 日韩欧美一级在线 | 精品国产aⅴ一区二区三区四川人 | 色老头网址 | 伊人久久大香网 | 色01看片网 | 精品乱码一区二区三四区视频 | 男人添女人下部高潮全视频 | 成人黄色在线网站 | 绿帽视频| 中文天堂| 少妇高潮喷水在线观看 | 黄色片子看看 |