2018百度之星程序设计大赛资格赛
生活随笔
收集整理的這篇文章主要介紹了
2018百度之星程序设计大赛资格赛
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://acm.hdu.edu.cn/showproblem.php?pid=6344
注意優化
#include<iostream> #include<algorithm> #include<cstring> #include<map> #include<cstdio> using namespace std; int main() {int T;cin >> T;for ( int Time = 1; Time <= T; Time++ ) {int n, m, min_num;scanf ( "%d%d%d", &n, &m, &min_num );char in[1008][12];for ( int i = 0; i < n; i++ )scanf ( "%s", in[i] );map<int, int>ma;int ans = 0;for ( int k = 1; k < ( 1 << m ); k++ ) {bool new_in[1008][12];int flag = 0;for ( int i = 0; i < m; i++ )if ( ( k >> i ) & 1 ) {for ( int j = 0; j < n; j++ )new_in[j][flag] = ( in[j][i] == 'A' );flag++;}ma.clear();for ( int i = 0; i < n; i++ ) {int temp = 0;for ( int j = 0; j < flag; j++ ) {temp = ( temp << 1 );temp = temp | ( new_in[i][j] ? 1 : 0 );}ma[temp]++;}int sum = 0;for ( map<int, int>::iterator it = ma.begin(); it != ma.end(); it++ )sum += ( n - it->second ) * it->second;if ( sum / 2 >= min_num ) ans++;}printf ( "Case #%d: %d\n", Time, ans );}return 0; }?
http://acm.hdu.edu.cn/showproblem.php?pid=6345
這是個基礎dp。按dp簡單處理下即可
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int com[26][100008]; char in[100008]; int main() {int T;cin>>T;for ( int Time = 1; Time <= T; Time++ ) {printf ( "Case #%d:\n", Time );int n, m;scanf ( "%d%d%s", &n, &m, in + 1 );memset ( com, 0, sizeof com );for ( int i = 1; i <= n; i++ ) {for ( int j = 0; j < 26; j++ )com[j][i] = com[j][i - 1];com[in[i] - 'A'][i]++;}while ( m-- ) {int l, r;scanf ( "%d%d", &l, &r );for ( int i = 0; i < 26; i++ )if ( com[i][r] - com[i][l - 1] != 0 ) {printf ( "%d\n", com[i][r] - com[i][l - 1] );break;}}}return 0; }?
總結
以上是生活随笔為你收集整理的2018百度之星程序设计大赛资格赛的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2384):element介绍
- 下一篇: 并查集基础与习题