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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AtCoder ZONe Energy Programming Contest 题解

發(fā)布時(shí)間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AtCoder ZONe Energy Programming Contest 题解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • A - UFO Invasion
  • B - Sign of Friendship
  • C - MAD TEAM
  • D - Message from Aliens
  • E - Sneaking
  • F - Encounter and Farewell

ZONe Energy Programming Contest

A - UFO Invasion

太簡(jiǎn)單了。

#include <cstdio> char ch[10] = { 'Z', 'O', 'N', 'e' }; char s[20];int main() {scanf( "%s", s );int tot = 0, idx = 0;for( int i = 0;i < 12;i ++ ) {if( s[i] == ch[idx] ) {idx ++;if( idx == 4 ) {tot ++;idx = 0;}else;} else idx = ( s[i] == ch[0] );}printf( "%d", tot );return 0; }

B - Sign of Friendship

就是斜率問(wèn)題。

#include <cstdio> #include <iostream> using namespace std; #define maxn 105 double d[maxn], h[maxn]; int n; double D, H;int main() {scanf( "%d %lf %lf", &n, &D, &H );for( int i = 1;i <= n;i ++ )scanf( "%lf %lf", &d[i], &h[i] );double ans = 0;for( int i = 1;i <= n;i ++ )ans = max( ans, H - D * ( ( H - h[i] ) / ( D - d[i] ) ) );printf( "%f\n", ans );return 0; }

C - MAD TEAM

二分最后的答案,利用二進(jìn)制

如果第iii個(gè)的第jjj個(gè)屬性大于答案,設(shè)為111,否則為000

最后相當(dāng)于找三個(gè)二進(jìn)制串或起來(lái)填滿(mǎn)了二進(jìn)制五位25?1=312^5-1=3125?1=31

#include <cstdio> #include <set> using namespace std; #define maxn 3005 set < int > st; int n; int p[maxn][5];bool check( int x ) {st.clear();for( int i = 1;i <= n;i ++ ) {int t = 0;for( int j = 0;j < 5;j ++ ) {t <<= 1;t += ( p[i][j] >= x );}st.insert( t );}for( set < int > :: iterator i = st.begin();i != st.end();i ++ )for( set < int > :: iterator j = st.begin();j != st.end();j ++ )for( set < int > :: iterator k = st.begin();k != st.end();k ++ )if( ( (*i) | (*j) | (*k) ) == 31 ) return 1;return 0; }int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )scanf( "%d %d %d %d %d", &p[i][0], &p[i][1], &p[i][2], &p[i][3], &p[i][4] );int l = 0, r = 1e9, ans;while( l <= r ) {int mid = ( l + r ) >> 1;if( check( mid ) ) ans = mid, l = mid + 1;else r = mid - 1;}printf( "%d\n", ans );return 0; }

D - Message from Aliens

考慮以R作為分界點(diǎn),不妨改寫(xiě)原串1R2R3R4...(1,2,3,4代表一個(gè)整字符串,可以為空)

定義1 ̄\overline{1}1 表示翻轉(zhuǎn)字符串1

手玩一下會(huì)發(fā)現(xiàn),答案的長(zhǎng)相只與R個(gè)數(shù)的奇偶性有關(guān)

  • 個(gè)數(shù)為奇數(shù),3 ̄1 ̄24\overline{3}\overline{1}243124

    奇數(shù)串翻轉(zhuǎn)從大到小,偶數(shù)串從小到大

  • 個(gè)數(shù)為偶數(shù),4 ̄2 ̄135\overline{4}\overline{2}13542135

    偶數(shù)串翻轉(zhuǎn)從大到小,奇數(shù)串從小到大

定義一個(gè)整體翻轉(zhuǎn)標(biāo)記flagflagflag

既可以加在前面又可以加在后面的操作用deque實(shí)現(xiàn)

最后連續(xù)相同的字符需要?jiǎng)h掉。就進(jìn)行判斷,如果即將要入隊(duì)的字符與已加入的最后一個(gè)相同就都扔掉,再定義一個(gè)隊(duì)列操作即可

#include <algorithm> #include <cstring> #include <cstdio> #include <queue> using namespace std; #define maxn 500005 deque < char > q, ans; char s[maxn];int main() {scanf( "%s", s );int len = strlen( s ); bool flag = 0;for( int i = 0;i < len;i ++ ) {if( s[i] == 'R' ) flag ^= 1;elseif( flag ) q.push_front( s[i] );else q.push_back( s[i] );}if( flag ) reverse( q.begin(), q.end() );while( ! q.empty() ) {if( ! ans.empty() && ans.back() == q.front() ) q.pop_front(), ans.pop_back();else ans.push_back( q.front() ), q.pop_front();}while( ! ans.empty() ) printf( "%c", ans.front() ), ans.pop_front();return 0; }

E - Sneaking

建圖跑最短路

特殊情況是點(diǎn)可以無(wú)限往上飛,這導(dǎo)致邊數(shù)過(guò)大,且+1+1+1非常不方便

建虛點(diǎn)i′i'ii?i′→1,i′?i→0,i′?(i?1)′→1i-i'\rightarrow1,i'-i\rightarrow 0,i'-(i-1)'\rightarrow 1i?i1,i?i0,i?(i?1)1

#include <queue> #include <cstdio> #include <vector> #include <cstring> using namespace std; #define maxn 505 struct node {int v, w;node(){}node( int V, int W ) {v = V, w = W;}bool operator < ( node t ) const {return w > t.w;} }; priority_queue < node > q; vector < node > G[maxn * maxn * 2]; int n, m; int A[maxn][maxn], B[maxn][maxn]; int dp[maxn * maxn * 2];void addedge( int u, int v, int w ) {G[u].push_back( node( v, w ) ); }int id( int i, int j ) {return ( i - 1 ) * m + j; }int main() {scanf( "%d %d", &n, &m );for( int i = 1;i <= n;i ++ )for( int j = 1;j < m;j ++ )scanf( "%d", &A[i][j] );for( int i = 1;i < n;i ++ )for( int j = 1;j <= m;j ++ )scanf( "%d", &B[i][j] );for( int i = 1;i <= n;i ++ )for( int j = 1;j <= m;j ++ ) {addedge( id( i, j ), id( i, j ) + n * m, 1 );addedge( id( i, j ) + n * m, id( i, j ), 0 );if( i > 1 ) addedge( id( i, j ) + n * m, id( i - 1, j ) + n * m, 1 );if( i < n ) addedge( id( i, j ), id( i + 1, j ), B[i][j] );if( j > 1 ) addedge( id( i, j ), id( i, j - 1 ), A[i][j - 1] );if( j < m ) addedge( id( i, j ), id( i, j + 1 ), A[i][j] );}memset( dp, 0x7f, sizeof( dp ) );dp[1] = 0;q.push( node( id( 1, 1 ), 0 ) );while( ! q.empty() ) {node t = q.top(); q.pop();int u = t.v, w = t.w;if( u == n * m ) return ! printf( "%d\n", w );for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i].v, cost = G[u][i].w;if( dp[v] > w + cost ) {dp[v] = w + cost;q.push( node( v, dp[v] ) );}}}return 0; }

F - Encounter and Farewell

SSS為被禁止邊權(quán)集,其補(bǔ)集為TTTa→ba\rightarrow bab相當(dāng)于異或若干個(gè)TTT內(nèi)元素,此乃線(xiàn)性基也

有解情況是[1,N)[1,N)[1,N)滿(mǎn)秩

#include <cmath> #include <cstdio> using namespace std; #define maxn 262200 int N, M, n; int id[maxn], A[maxn], f[maxn]; bool flag[maxn];int find( int x ) {return x == f[x] ? x : f[x] = find( f[x] ); }void unionSet( int u, int v ) {int fu = find( u ), fv = find( v );f[fv] = fu; }int main() {scanf( "%d %d", &N, &M );while( ( 1 << n ) != N ) n ++;n --;for( int i = 1, x;i <= M;i ++ )scanf( "%d", &x ), flag[x] = 1;for( int i = 1;i < N;i ++ ) {if( flag[i] ) continue;int x = i;for( int j = n;~ j && x;j -- ) {if( x >> j & 1 ) {if( ! A[j] ) A[j] = x, id[j] = i;x ^= A[j];} }}for( int i = 0;i <= n;i ++ )if( ! id[i] ) return ! printf( "-1\n" );for( int i = 0;i < N;i ++ ) f[i] = i;for( int i = 0;i < N;i ++ )for( int j = 0;j <= n;j ++ )if( find( i ) != find( i ^ id[j] ) ) {unionSet( i, i ^ id[j] );printf( "%d %d\n", i, i ^ id[j] );} else;return 0; }

總結(jié)

以上是生活随笔為你收集整理的AtCoder ZONe Energy Programming Contest 题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区在线观看视频 | 中文字幕精品在线 | 亚洲精品一区二区三区蜜桃久 | 久久av资源站 | 中文字幕久久久久久久 | 久久黄色一级视频 | 欧美在线色图 | 日韩黄片一区二区 | 久久影音先锋 | 欧美熟妇精品一区二区 | 久久五十路 | 欧美精品在线第一页 | 欧美夫妻性生活视频 | 欧美三级小视频 | 无码人妻丰满熟妇区毛片18 | 欧美精品乱码视频一二专区 | www伊人网 | 亚洲国产成人无码av在线 | 视频福利在线观看 | 国产特级淫片免费看 | 九一国产视频 | 日韩福利社 | 午夜天堂影院 | 97久久久久久久久久 | 日韩毛片网站 | 神马影院一区二区 | 一级特黄肉体裸片 | 国产精品欧美在线 | 国产成人自拍一区 | 99久久99九九99九九九 | av资源在线免费观看 | 色av网| 亚洲国产精品尤物yw在线观看 | 大胸美女网站 | 女女同性高清片免费看 | 国产一区二区三区18 | 精品视频久久 | 蜜桃臀av一区二区三区 | 欧美91视频 | 欧美中文字幕在线视频 | chinese xxxx videos andvr| 操她视频在线观看 | 亲子乱对白乱都乱了 | 人人爽人人干 | julia一区二区三区中文字幕 | 日日日人人人 | 深夜网站在线 | 天堂аⅴ在线最新版在线 | 久久综合成人网 | 日本不卡一区二区三区在线观看 | 亚洲AV无码精品一区二区三区 | 久久久久久婷 | 人妻少妇一区二区三区 | 东凛在线观看 | 噜噜噜噜私人影院 | 色综合色综合色综合 | 影音先锋欧美资源 | 乳罩脱了喂男人吃奶视频 | 潘金莲激情呻吟欲求不满视频 | av手机免费在线观看 | 亚洲欧洲无码一区二区三区 | 成人特级毛片 | 欧美天天干| 精品人妻无码一区二区性色 | 男男黄网站 | 麻豆av在线 | 中国亚洲老头同性gay男男… | 美女国产精品 | 在线免费观看一区二区 | 国产对白在线 | 国产一区二区视频在线观看免费 | 插插看 | 精品国产一级片 | 亚洲精选一区二区 | 中文字幕欧美在线观看 | 制服丝袜国产在线 | 91欧美一区二区 | www.久久久.com| 黄色羞羞网站 | 国产精品一区二区三区线羞羞网站 | 国产精品成人3p一区二区三区 | 午夜精品无码一区二区三区 | 欧美激情一区二区三区 | 国产精品v日韩精品v在线观看 | 青青国产在线视频 | 影音先锋在线观看视频 | 亚洲砖区区免费 | 六月丁香综合网 | av成人免费观看 | 日本xxxxxwwwww | av动态| 91欧美一区二区 | 狠狠夜| 九色网站在线观看 | 色婷婷亚洲一区二区三区 | 国产草草 | 伊人婷婷久久 | 夫の上司に犯波多野结衣853 | 婷婷久草 |