SRM 11爆0記
阿新 • • 發佈:2017-08-08
char fin 分類討論 div pla .cn iostream cor ext ,同理易得ans
難度區間:NOIP提高-
第一題
題意:
滾來滾去
Solution
剛開始寫了O(n)的60分模擬,打了1h的狀態表,結果寫砸了只剩35分QAQ
對於30%的數據:O(n^2)模擬
對於60%的數據:O(1)求橫向翻轉,O(n)模擬向下翻轉的情況
對於100%的數據:時間復雜度:O(1)
分類討論:
用真.骰子模擬可得:
當c%4=0時,ans=r*c/2*7;
當c%4=1時,循環節為(第1-4行):即:1,5,6,2,易得ans=c/4*14*r+循環節sum=(c>>1)*7*r+循環節sum
當c%4=2時,循環節為(第1-6行): ,同理易得ans
當c%4=3時,循環節為(第1-2行):
Code:
1 #include <iostream> 2 #include <cstdio> 3 #define ll long long 4 using namespace std; 5 ll r,c,yu2[10],yu1[10];// 1:r 0:l 6 void read(ll &k) 7 { 8 ll f=1;k=0;char c=getchar(); 9 while (c<‘0‘||c>‘9‘)c==‘-‘&&(f=-1),c=getchar(); 10 while (c>=‘View Code0‘&&c<=‘9‘)k=k*10+c-‘0‘,c=getchar(); 11 k*=f; 12 } 13 int main() 14 { 15 freopen("dice.in","r",stdin); 16 freopen("dice.out","w",stdout); 17 read(r);read(c); 18 yu2[1]=5;yu2[2]=11;yu2[3]=19;yu2[4]=28;yu2[5]=36;yu2[0]=0; 19 yu1[1]=1;yu1[2]=6;yu1[3]=12;yu1[0]=0; 20 ll chu=c/4,yu=c%4; 21 if (yu==3)printf("%lld\n",chu*14*r+11*r); 22 if (yu==2)printf("%lld\n",chu*14*r+42*((ll)r/6)+yu2[r%6]); 23 if (yu==1)printf("%lld\n",chu*14*r+14*((ll)r/4)+yu1[r%4]); 24 if (!(c%4))printf("%lld\n",r*(c>>1)*7); 25 }
SRM 11爆0記