首页 > 代码库 > codeforces--279--
codeforces--279--
还是太弱啊 终测 C D都挂了 =_=
...porker写的C关于取模的运用 对于以后的题目 都有很好的 移植性 感觉主要是运用了 (a+b)%p = ( a%p+b%p)%p这个性质
贴下 3题代码 当时比赛的时候 可能有点难看 懒的改了
1 #include <cstdio> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 vector<int>ve[4]; 7 int a[10]; 8 9 int main()10 {11 int n , x , y , z , num;12 while( ~scanf("%d",&n) )13 {14 for( int i = 0 ; i<=3 ; i++ )15 ve[i].clear();16 for( int i = 1 ; i<=n ; i++ )17 {18 scanf("%d",&num);19 ve[ num ].push_back( i );20 }21 x = ve[1].size();22 y = ve[2].size();23 z = ve[3].size();24 a[0] = x;25 a[1] = y;26 a[2] = z;27 sort( a , a+3 );28 if( a[0]==0 )29 printf( "0\n" );30 else31 {32 printf( "%d\n",a[0] );33 for( int i = 0 ; i<a[0] ; i++ )34 {35 printf( "%d %d %d\n",ve[1][i],ve[2][i],ve[3][i] );36 }37 }38 }39 return 0;40 }
B其实也蛮有意思的 先要 Hash找出队首 队尾元素 其实找一个就够了 他们出现的特点就是 只出现了1次 然后通过队首元素与第二个位置的元素的与其后继元素的Next关系
进行不断遍历 然后最后输出就可以了
1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 const int size = 1000010; 6 int hash[size] , next[size] , pre[size]; 7 int ans[size]; 8 9 int main()10 {11 int n , x , y , cnt , first , last;12 while( ~scanf("%d",&n) )13 {14 memset( hash , 0 , sizeof(hash) );15 cnt = 0;16 for( int i = 1 ; i<=n ; i++ )17 {18 scanf( "%d %d",&x,&y );19 hash[x] ++;20 hash[y] --;21 next[x] = y;22 pre[y] = x;23 }24 for( int i = 1 ; i<=size ; i++ )25 {26 if( hash[i]==1 )27 {28 ++ cnt;29 first = i;30 ans[1] = first;31 }32 else if( hash[i]==-1 )33 {34 ++ cnt;35 last = i;36 ans[n] = last;37 }38 if( cnt==2 )39 break;40 }41 ans[2] = next[0];42 ans[n-1] = pre[0];43 int u = ans[1];44 int v = ans[2];45 int t = 3;46 int k = 4;47 bool flag = true;48 while(1)49 {50 if( hash[ next[u] ]!=0 )51 {52 flag = false;53 }54 else55 {56 ans[t] = next[u];57 t += 2;58 u = next[u];59 }60 if( hash[ next[v] ]!=0 )61 {62 flag = false;63 }64 else65 {66 ans[k] = next[v];67 k += 2;68 v = next[v];69 }70 if( !flag )71 break;72 }73 for( int i = 1 ; i<=n-1 ; i++ )74 {75 printf("%d ",ans[i] );76 }77 printf("%d\n",ans[n]);78 }79 return 0;80 }
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 bool result[1000010]; 6 7 int main() { 8 string s; 9 bool flag;10 cin >> s;11 long long a, b;12 cin >> a >> b;13 long long temp = 1;14 long long temp2 = 0;15 flag = true;16 for ( int i = s.size() - 1; i > 0; i--) {17 temp %= b;18 temp2 += temp * ( s[i] - ‘0‘ );19 temp2 %= b;20 temp *= 10;21 if ( temp2 == 0 && s[i] != ‘0‘ ) {22 result[i] = true;23 }24 else {25 result[i] = false;26 }27 }28 temp2 = 0;29 for (int i = 0; i < s.size()-1; i++) {30 temp2 *= 10;31 temp2 += s[i] - ‘0‘;32 temp2 %= a;33 if (temp2 == 0 && result[i + 1]) {34 flag = false;35 cout << "YES" << endl;36 for (int j = 0; j <= i; j++) {37 cout << s[j];38 }39 cout << endl;40 for (int j = i + 1; j < s.size(); j++) {41 cout << s[j];42 }43 cout << endl;44 break;45 }46 }47 if( flag )48 cout << "NO" << endl;49 }
codeforces--279--
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。