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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

题解 UVA10328 【Coin Toss】

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 题解 UVA10328 【Coin Toss】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這道題目其實就是說有N張紙牌,問至少連續K張正面朝上的可能性是多少。


可以用遞推做。
首先我們將題目所求從


至少K張


轉化為


總數 - 至多K張


(為什么要這樣自己想)

設F[i][j]為前i個紙牌至多K張的種數。其中j記錄第i張紙牌的狀態,1為正面朝上,0為反面。

那么可以總結出

?1 f[i][0] = f[i - 1][0] + f[i - 1][1]; ?

1 f[i][1] = f[i - 1][0] + f[i - 1][1]; 2 if(i == k) f[i][1] -= 1; 3 else if(i > k) f[i][1] -= f[i - k][0];

最后要記住這道題需要寫高精,我第一次就是這么撲街的。

注:高精用的模板,手殘就全加上了,事實上只用加減法。

AC代碼如下(洛谷上不知道為什么被積極拒絕,只好去Vjudge上提交。。。沒去UVa才不是因為我沒有注冊。)

1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <cmath> 6 #include <vector> 7 #include <cassert> 8 using namespace std; 9 10 const int maxn = 105; 11 12 struct BigInteger { 13 typedef unsigned long long LL; 14 15 static const int BASE = 100000000; 16 static const int WIDTH = 8; 17 vector<int> s; 18 19 BigInteger& clean(){while(!s.back()&&s.size()>1)s.pop_back(); return *this;} 20 BigInteger(LL num = 0) {*this = num;} 21 BigInteger(string s) {*this = s;} 22 BigInteger& operator = (long long num) { 23 s.clear(); 24 do { 25 s.push_back(num % BASE); 26 num /= BASE; 27 } while (num > 0); 28 return *this; 29 } 30 BigInteger& operator = (const string& str) { 31 s.clear(); 32 int x, len = (str.length() - 1) / WIDTH + 1; 33 for (int i = 0; i < len; i++) { 34 int end = str.length() - i*WIDTH; 35 int start = max(0, end - WIDTH); 36 sscanf(str.substr(start,end-start).c_str(), "%d", &x); 37 s.push_back(x); 38 } 39 return (*this).clean(); 40 } 41 42 BigInteger operator + (const BigInteger& b) const { 43 BigInteger c; c.s.clear(); 44 for (int i = 0, g = 0; ; i++) { 45 if (g == 0 && i >= s.size() && i >= b.s.size()) break; 46 int x = g; 47 if (i < s.size()) x += s[i]; 48 if (i < b.s.size()) x += b.s[i]; 49 c.s.push_back(x % BASE); 50 g = x / BASE; 51 } 52 return c; 53 } 54 BigInteger operator - (const BigInteger& b) const { 55 assert(b <= *this); // 減數不能大于被減數 56 BigInteger c; c.s.clear(); 57 for (int i = 0, g = 0; ; i++) { 58 if (g == 0 && i >= s.size() && i >= b.s.size()) break; 59 int x = s[i] + g; 60 if (i < b.s.size()) x -= b.s[i]; 61 if (x < 0) {g = -1; x += BASE;} else g = 0; 62 c.s.push_back(x); 63 } 64 return c.clean(); 65 } 66 BigInteger operator * (const BigInteger& b) const { 67 int i, j; LL g; 68 vector<LL> v(s.size()+b.s.size(), 0); 69 BigInteger c; c.s.clear(); 70 for(i=0;i<s.size();i++) for(j=0;j<b.s.size();j++) v[i+j]+=LL(s[i])*b.s[j]; 71 for (i = 0, g = 0; ; i++) { 72 if (g ==0 && i >= v.size()) break; 73 LL x = v[i] + g; 74 c.s.push_back(x % BASE); 75 g = x / BASE; 76 } 77 return c.clean(); 78 } 79 BigInteger operator / (const BigInteger& b) const { 80 assert(b > 0); // 除數必須大于0 81 BigInteger c = *this; // 商:主要是讓c.s和(*this).s的vector一樣大 82 BigInteger m; // 余數:初始化為0 83 for (int i = s.size()-1; i >= 0; i--) { 84 m = m*BASE + s[i]; 85 c.s[i] = bsearch(b, m); 86 m -= b*c.s[i]; 87 } 88 return c.clean(); 89 } 90 BigInteger operator % (const BigInteger& b) const { //方法與除法相同 91 BigInteger c = *this; 92 BigInteger m; 93 for (int i = s.size()-1; i >= 0; i--) { 94 m = m*BASE + s[i]; 95 c.s[i] = bsearch(b, m); 96 m -= b*c.s[i]; 97 } 98 return m; 99 } 100 // 二分法找出滿足bx<=m的最大的x 101 int bsearch(const BigInteger& b, const BigInteger& m) const{ 102 int L = 0, R = BASE-1, x; 103 while (1) { 104 x = (L+R)>>1; 105 if (b*x<=m) {if (b*(x+1)>m) return x; else L = x;} 106 else R = x; 107 } 108 } 109 BigInteger& operator += (const BigInteger& b) {*this = *this + b; return *this;} 110 BigInteger& operator -= (const BigInteger& b) {*this = *this - b; return *this;} 111 BigInteger& operator *= (const BigInteger& b) {*this = *this * b; return *this;} 112 BigInteger& operator /= (const BigInteger& b) {*this = *this / b; return *this;} 113 BigInteger& operator %= (const BigInteger& b) {*this = *this % b; return *this;} 114 115 bool operator < (const BigInteger& b) const { 116 if (s.size() != b.s.size()) return s.size() < b.s.size(); 117 for (int i = s.size()-1; i >= 0; i--) 118 if (s[i] != b.s[i]) return s[i] < b.s[i]; 119 return false; 120 } 121 bool operator >(const BigInteger& b) const{return b < *this;} 122 bool operator<=(const BigInteger& b) const{return !(b < *this);} 123 bool operator>=(const BigInteger& b) const{return !(*this < b);} 124 bool operator!=(const BigInteger& b) const{return b < *this || *this < b;} 125 bool operator==(const BigInteger& b) const{return !(b < *this) && !(b > *this);} 126 }; 127 128 ostream& operator << (ostream& out, const BigInteger& x) { 129 out << x.s.back(); 130 for (int i = x.s.size()-2; i >= 0; i--) { 131 char buf[20]; 132 sprintf(buf, "%08d", x.s[i]); 133 for (int j = 0; j < strlen(buf); j++) out << buf[j]; 134 } 135 return out; 136 } 137 138 istream& operator >> (istream& in, BigInteger& x) { 139 string s; 140 if (!(in >> s)) return in; 141 x = s; 142 return in; 143 } 144 145 int n, k; 146 BigInteger f[maxn][2]; 147 148 int main() { 149 while(cin >> n >> k) { 150 memset(f, 0, sizeof(f)); 151 f[0][1] = 1; 152 for(int i = 1; i <= n; i++) { 153 f[i][0] = f[i - 1][0] + f[i - 1][1]; 154 f[i][1] = f[i - 1][0] + f[i - 1][1]; 155 if(i == k) f[i][1] = f[i][1] - 1; 156 else if(i > k) f[i][1] = f[i][1] - f[i - k][0]; 157 } 158 BigInteger a = 1, t = 2; 159 for(int i = 0; i < n; i++) a = t * a; 160 cout << a - f[n][1] - f[n][0] << endl; 161 } 162 }

?

轉載于:https://www.cnblogs.com/ilverene/p/UVA10328.html

總結

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

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

主站蜘蛛池模板: 国产一区二区不卡在线 | 91麻豆精品国产91久久久久久 | 丰满人妻一区二区三区四区53 | 亚洲一区无 | 中文字幕视频免费观看 | 在线观看国产一区二区三区 | 亚洲av无一区二区三区怡春院 | 天天干天天做天天操 | 成人免费影院 | 91最新视频 | 欧美日韩视频在线观看一区 | 我要爱爱网 | 误杀1电影免费观看高清完整版 | 秋霞午夜网 | 婷婷射 | 成人福利一区 | 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 国产精品一区二区不卡 | 欧美国产日韩精品 | 五月天婷婷基地 | 青青草97国产精品免费观看 | 美女精品一区二区 | 浴室里强摁做开腿呻吟男男 | 精品人妻少妇嫩草av无码专区 | 福利视频免费 | 操久久久 | 亚洲欧洲日本精品 | 婷婷久| 一级性爱视频 | 成人激情开心 | 欧美第七页 | 夜夜av| wwwwxxxx国产 | 欧美日韩美女 | 中文字幕一区二区三区波野结 | 奇米影视一区二区 | 韩国美女主播跳舞 | 亚洲操图| 国产精品扒开做爽爽爽的视频 | www.99re7.com | 欧美片在线观看 | 激情影院内射美女 | 国产伦理自拍 | 精品黑人一区二区三区观看时间 | 韩日视频一区 | 成人中文在线 | 奇米四色影视 | 另类视频在线观看+1080p | 成人网站免费观看 | 热久久亚洲 | 国产情趣视频 | 欧美亚洲在线视频 | 天堂在线中文字幕 | 女同性做爰全过程 | 欧美专区 日韩专区 | 五月天视频 | 蜜臀久久99精品久久久无需会员 | 欧美99热| 精品久久久久久久久久岛国gif | 亚瑟av在线 | 亚洲国产精品久久AV | 欧美色亚洲| 国产高清精品一区二区三区 | 国产av无码专区亚洲a∨毛片 | 精品国产乱码久久久久久108 | 日日摸日日碰夜夜爽无码 | 男插女视频网站 | 草草影院av | 超碰77| 可以免费看黄的网站 | 一本之道高清无码视频 | 国产在线你懂得 | 91学生片黄 | 亚洲色图美腿丝袜 | 东方av在线免费观看 | 操你啦影院 | 久久免费看片 | 男人操女人的软件 | 久久日本精品字幕区二区 | 亚洲视频a | 青青草精品 | 天堂av在线中文 | 成人片在线免费看 | 男人和女人日批视频 | 中文精品无码中文字幕无码专区 | 亚洲小视频在线 | 一区二区三区网站 | 日韩r级电影在线观看 | 日本少妇网站 | 亚洲 欧美 激情 另类 校园 | 91久久精品日日躁夜夜躁欧美 | 久久99久久久久 | 欧美一级一片 | 欧美三区在线 | 欧美精品久久久久久久久老牛影院 | 极品美女高潮出白浆 | 精品国产99久久久久久宅男i | 第四色在线视频 | 天堂成人网 |