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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

USACO-Section2.2 Party Lamps

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USACO-Section2.2 Party Lamps 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-9-2

題目描述

給出部分燈最后的狀態以及按的次數,求出可能的結果

解答

注意題意的理解,我對最后的結果進行了排序

代碼

/* ID: 18795871 PROG: lamps LANG: C++ */ #include<iostream> #include<fstream> #include<cstring> #include<cstdio> using namespace std;ifstream fin("lamps.in"); ofstream fout("lamps.out");const int N = 100; char x[N+1]; int f[N+1]; int a[4]; int n,c; char y[N+1][N+1]; int k=0;void init() {int m;fin>>m;while (m!=-1) {f[m]=1;fin>>m;}fin>>m;while (m!=-1) {f[m]=-1;fin>>m;} }int cal() {int sum=0;for (int i=0; i<4; i++) {if (a[i]==1) sum++;}return sum; }void re() {if (a[0]==1) {for (int i=1; i<=n; i++) {x[i]=(x[i]-'0'+1)%2+'0';}}if (a[1]==1) {for (int i=1; i<=n; i++) {if (i%2==1) x[i]=(x[i]-'0'+1)%2+'0';}}if (a[2]==1) {for (int i=1; i<=n; i++) {if (i%2==0) x[i]=(x[i]-'0'+1)%2+'0';}}if (a[3]==1) {for (int i=1; i<=n; i++) {if (i%3==1) x[i]=(x[i]-'0'+1)%2+'0';}} }bool tru() {for (int i=1; i<=n; i++) {if (f[i]==1) {if (x[i]!='1') return false;} else if (f[i]==-1) {if (x[i]!='0') return false;}}return true; }void set() {for(int i=1; i<=n; i++) x[i]='1'; }void res() {for (a[0]=0; a[0]<=1; a[0]++) {for (a[1]=0; a[1]<=1; a[1]++) {for (a[2]=0; a[2]<=1; a[2]++) {for (a[3]=0; a[3]<=1; a[3]++) {set();if (c==0) {if (cal()==0) {if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}}} else if (c==1) {if (cal()==1) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}}} else if (c==2) {if (cal()==0) {if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}} else if (cal()==2) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}}} else {if (c%2==0) {if (cal()==0) {if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}} else if (cal()==2) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}} else if (cal()==4) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}}} else {if (cal()==1) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}} else if (cal()==3) {re();if (tru()) {for (int i=0; i<n; i++)y[k][i]=x[i+1];k++;}}}}}}}}} void out() {if (k==0) fout<<"IMPOSSIBLE"<<endl;int i,j;for (i=0; i<k; i++) y[i][n]='\0';char t[N+1];for (i=0; i<k-1; i++) {for (j=0; j<k-i-1; j++) {if (strcmp(y[j],y[j+1])>0) {strcpy(t,y[j]);strcpy(y[j],y[j+1]);strcpy(y[j+1],t);}}}for (i=0; i<k; i++) {fout<<y[i]<<endl;}}int main() {fin>>n>>c;init();res();out();}

總結

以上是生活随笔為你收集整理的USACO-Section2.2 Party Lamps的全部內容,希望文章能夠幫你解決所遇到的問題。

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