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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

bzoj 1028: [JSOI2007]麻将

發布時間:2024/10/12 javascript 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj 1028: [JSOI2007]麻将 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

暴力枚舉+貪心

1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cstdlib> 5 #include<algorithm> 6 #include<queue> 7 #include<map> 8 #include<cmath> 9 #define M 100009 10 #define ll long long 11 #define Mo 998244353 12 #define pa pair<int,int> 13 using namespace std; 14 ll read() 15 { 16 char ch=getchar(); 17 ll x=0,f=1; 18 for(;ch<'0'||ch>'9';ch=getchar()) 19 if(ch=='-') 20 f=-1; 21 for(;ch>='0'&&ch<='9';ch=getchar()) 22 x=x*10+ch-'0'; 23 return x*f; 24 } 25 int a[M],shu[M],n,m,ans[M]; 26 bool pan() 27 { 28 for(int i=1;i<=n;i++) 29 a[i]=shu[i]; 30 for(int i=1;i<=n-2;i++) 31 { 32 if(a[i]<0) 33 return 0; 34 a[i]=a[i]%3; 35 a[i+1]-=a[i]; 36 a[i+2]-=a[i]; 37 } 38 if(a[n-1]%3||a[n]%3) 39 return 0; 40 return 1; 41 } 42 int main() 43 { 44 n=read(); 45 m=read(); 46 for(int i=1;i<=3*m+1;i++) 47 { 48 int a1=read(); 49 shu[a1]++; 50 } 51 for(int i=1;i<=n;i++) 52 { 53 shu[i]++; 54 for(int j=1;j<=n;j++) 55 { 56 if(shu[j]<2) 57 continue; 58 shu[j]-=2; 59 if(pan()) 60 { 61 ans[++ans[0]]=i; 62 shu[j]+=2; 63 break; 64 } 65 shu[j]+=2; 66 } 67 shu[i]--; 68 } 69 for(int i=1;i<ans[0];i++) 70 printf("%d ",ans[i]); 71 if(!ans[0]) 72 printf("NO\n"); 73 else 74 printf("%d\n",ans[ans[0]]); 75 return 0; 76 }

?

轉載于:https://www.cnblogs.com/xiw5/p/5656649.html

總結

以上是生活随笔為你收集整理的bzoj 1028: [JSOI2007]麻将的全部內容,希望文章能夠幫你解決所遇到的問題。

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