Sgu 403 404 405 406 407 408 409 410 411 413

Source: Internet
Author: User

Sgu 1, 403

#include<stdio.h>int x;int main(){while(~scanf("%d",&x))printf("%d\n", 2*x+1);return 0;}

Sgu 1, 404

#include<iostream>#include<cstdio>#include<vector>#include<string.h>using namespace std;int n, m;char s[105][105];int main(){    int i ,j;    while(~scanf("%d %d",&m,&n))    {        m--;        for(i = 0; i < n; i++)scanf("%s", s[i]);        printf("%s\n", s[m%n]);    }    return 0;}

Sgu 1, 405

#include <cstdio>#include <algorithm>using namespace std;const int N = 105;int s[N];int main() {int n, m, a, b, x, y;scanf("%d%d", &n, &m);for(int i = 0; i < m; i ++) {scanf("%d%d", &a, &b);for(int j = 0; j < n; j ++) {scanf("%d%d", &x ,&y);if(a == x) s[j]++;if(y == b) s[j]++;if(a-b == x-y) s[j] += 3;if((a-b)*(x-y) > 0) s[j] += 2;if(a == b && x == y) s[j] += 2;}}for(int i = 0; i < n; i ++) {printf("%d%c", s[i], i == n-1 ? '\n' : ' ');}return 0;}
Sgu 1, 406

#include<iostream>#include<cstdio>#include<vector>#include<string.h>using namespace std;int n, m;int a[12][101];vector<int>A[11], tmp, ans, no;int main(){    int i ,j, u, v;    while(~scanf("%d %d",&n,&m))    {        for(i = 1; i <= n; i++)        {            memset(a[i], 0, sizeof a[i]);            A[i].clear();            scanf("%d",&j);            while(j--)            {                scanf("%d",&u);                A[i].push_back(u);                a[i][u]++;            }        }        while(m--)        {            scanf("%d", &u);            tmp.clear();            ans.clear();            no.clear();            memset(a[0], 0, sizeof a[0]);            while(u--)            {                scanf("%d",&v);                if(v<0){no.push_back(-v); continue;}                tmp.push_back(v);            }            for(i = 1; i <= n; i++)            {                bool ok = true;                for(j = 0; ok && j < no.size(); j++)                if(a[i][no[j]])ok = false;                for(j = 0; ok && j < tmp.size(); j++)                if(!a[i][tmp[j]])ok = false;                if(ok)ans.push_back(i);            }            printf("%d\n", ans.size());            for(i = 0; i < ans.size(); i++)            {                u = ans[i];                printf("%d ", A[u].size());                for(j = 0; j < A[u].size(); j++)                    printf("%d%c", A[u][j], (j+1)==A[u].size()?'\n':' ');            }        }    }    return 0;}

Sgu 1, 407

Java large number

Question

Sgu 1, 408

Obviously, the closer the two numbers are, the better, that is, the number of workers .. The answer must be an integer.

#include<iostream>#include<cstdio>#include<vector>#include<string.h>using namespace std;#define ll long long#define N 10000ll n;int main(){    while(cin>>n){        if(n<=1){ cout<<n; puts(".000"); continue;}        ll ans = 5, x = 2, y = 2;        bool yes = true;        for(ll i = 3; i <= n; i++)        {            if(yes) x++;            else y++;            yes ^= 1;            ans += x*y;        }        cout<<ans; puts(".000");    }    return 0;}

Sgu 1, 409

#include <cstdio>#include <cstring>using namespace std;const int N = 25;char a[N][N];char ans[N*N][N*N];int main(){<span style="white-space:pre"></span>int n, k;    scanf("%d%d", &n, &k);    for(int i = 0; i < n; i ++) {    for(int j = 0; j < n; j ++) {    if(k > 0) {    a[i][j] = '*';    k--;    } else a[i][j] = '.';    }    }        for(int i = 0; i < n; i ++) {    for(int j = 0; j < n; j ++) {    for(int ii = 0; ii < n; ii ++) {    for(int jj = 0; jj < n; jj ++) {    ans[i*n+ii][j*n+jj] = a[(ii + j) % n][(jj + i) % n];    }    }    }    }        for(int i = 0; i < n*n; i ++) {    for(int j = 0; j < n*n; j ++) {    printf("%c", ans[i][j]);    } puts("");    }    return 0;}

Sgu 1, 410

Baidu has a solution ..

To make the maximum number 2 times of the minimum number, stop, and then double and then subtract

Sgu 1, 411

Suffix Array

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAX_N = 90007;#define F(x) ((x)/3+((x)%3==1?0:tb))#define G(x) ((x)<tb?(x)*3+1:((x)-tb)*3+2)int wa[MAX_N], wb[MAX_N], wv[MAX_N], ws[MAX_N];int height[MAX_N], rank[MAX_N], sa[MAX_N];struct Suffix {int c0(int *r, int a, int b) {return r[a] == r[b] && r[a+1] == r[b+1] && r[a+2] == r[b+2];}int c12(int k, int *r, int a, int b) {if(k==2)  return r[a] < r[b] || r[a] == r[b] && c12(1, r, a+1, b+1);else   return r[a] < r[b] || r[a] == r[b] && wv[a+1] < wv[b+1];}void sort(int *r,int *a,int *b,int n,int m){int i;for(i = 0; i < n; i++) wv[i] = r[a[i]];for(i = 0; i < m; i++) ws[i] = 0;for(i = 0; i < n; i++) ws[wv[i]]++;for(i = 1; i < m; i++) ws[i] += ws[i-1];for(i = n-1; i >= 0; i--) b[--ws[wv[i]]] = a[i];}void dc3(int *r, int *sa, int n, int m) {int i, j, *rn = r + n, *san = sa + n, ta = 0, tb = (n+1) / 3,tbc = 0, p;r[n] = r[n+1] = 0;for(i = 0; i < n; i++) if(i % 3 != 0) wa[tbc++] = i;sort(r + 2, wa, wb, tbc, m);sort(r + 1, wb, wa, tbc, m);sort(r, wa, wb, tbc, m);for(p = 1, rn[F(wb[0])] = 0, i = 1; i < tbc; i++)rn[F(wb[i])] = c0(r, wb[i-1], wb[i]) ? p - 1 : p++;if(p < tbc) dc3(rn, san, tbc, p);else for(i = 0; i < tbc; i++) san[rn[i]]=i;for(i = 0; i < tbc; i++) if(san[i] < tb) wb[ta++] = san[i]*3;if(n % 3 == 1) wb[ta++] = n-1;sort(r, wb, wa, ta, m);for(i = 0; i < tbc; i++) wv[wb[i] = G(san[i])] = i;for(i = 0, j = 0, p = 0; i < ta && j < tbc; p++)sa[p] = c12(wb[j]%3, r, wa[i], wb[j]) ? wa[i++] : wb[j++];for(; i<ta; p++) sa[p] = wa[i++];for(; j<tbc; p++) sa[p] = wb[j++];}void calheight(int *r, int *sa, int n) {for (int i = 1; i <= n; ++i) rank[sa[i]] = i;for (int i = 0, k = 0; i < n; ++i) {if(k) --k;int j = sa[rank[i]-1];while (i + k < n && j + k < n && r[i+k] == r[j+k]) ++k;height[rank[i]] = k; }}};int maxLen, begin;char str[MAX_N], s1[MAX_N], s[MAX_N];int d[MAX_N], p[MAX_N];char m[MAX_N];void Manacher(int st, int len) {int cnt = 0;m[cnt++] = '$', m[cnt++] = '#';int len1 = min(st + len, (int)strlen(s1));for (int i = st; i < len1; ++i) {m[cnt++] = s1[i];m[cnt++] = '#';}m[cnt] = '\0';memset(p, 0, sizeof p);int mx = 0, id = 0;for (int i = 1; i < cnt; ++i) {if (mx > i) p[i] = min(p[2 * id - i], mx - i);else p[i] = 1;while (i - p[i] > 0 && i + p[i] < cnt && m[i - p[i]] == m[i + p[i]]) ++p[i];if (i + p[i] > mx) {mx = i + p[i];id = i;}}int d = 0;for (int i = 1; i < cnt; ++i) {if (p[i] - 1 > maxLen) {maxLen = p[i] - 1;begin = st - (p[i] - 1) / 2 + d;}if (m[i] != '#') ++d;}}int main() {scanf("%s", s1);int l1 = (int) strlen(s1);int cnt = 0;for (int i = 0; s1[i]; ++i) {str[cnt++] = s1[i];}str[cnt++] = 'z' + 1;scanf("%s", s);int l2 = (int) strlen(s);for (int i = 0; s[i]; ++i) {str[cnt++] = s[i];}str[cnt] = '\0';int n = l1 + l2 + 1;for (int i = 0; i < n; ++i) {d[i] = str[i] - 'a' + 1;}d[n] = 0;Suffix ans;ans.dc3(d, sa, n + 1, 30);ans.calheight(d, sa, n);maxLen = 0, begin = 0;for (int i = 1; i <= n; ++i) {if (sa[i - 1] < l1 && sa[i] > l1) {Manacher(sa[i - 1], height[i]);}if (sa[i - 1] > l1 && sa[i] < l1) {Manacher(sa[i], height[i]);}}for (int i = 0; i < maxLen; ++i)  putchar(s1[i + begin]);puts("");return 0;}

Sgu 1, 413

Enumeration start point, and then any two points first become a pair, and the remaining isolated points are then put into the adjacent set.

#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int MAX_N = 107;int n, m;bool vis[MAX_N];vector<int> edge[MAX_N], cou[MAX_N];int bel[MAX_N], sig;void addedge(int u, int v) {edge[u].push_back(v);edge[v].push_back(u);}void clear() {sig = 0;memset(vis, false, sizeof vis);memset(bel, 0, sizeof bel);for (int i = 0; i <= n; ++i)  cou[i].clear();}void dfs(int u) {vis[u] = true;cou[u].push_back(u);for (int i = 0; i < (int) edge[u].size(); ++i) {if (!vis[edge[u][i]]) {dfs(edge[u][i]);if (cou[edge[u][i]].size() == 1) {cou[u].push_back(edge[u][i]);}}}if (cou[u].size() > 1) {++sig;for (int i = 0; i < (int)cou[u].size(); ++i) {bel[cou[u][i]] = sig;}}}bool check() {for (int i = 0; i < n; ++i) {if (bel[i] == 0) return false;}return true;}int main() {int T;scanf("%d", &T);while (T-- > 0) {scanf("%d%d", &n, &m);for (int i = 0; i < 103; ++i)   edge[i].clear();memset(bel, 0, sizeof bel);for (int i = 0; i < m; ++i) {int u, v;scanf("%d%d", &u, &v);--u, --v;addedge(u, v);}for (int i = 0; i < n; ++i) {clear();dfs(i);if (check()) {for (int j = 0; j < n; ++j) {if (j == 0) printf("%d", bel[j]);else printf(" %d", bel[j]);}puts("");break;}}}return 0;}



Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.