SGU 403 404 405 406 407 408 409 410 411 413

SGU 403

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

SGU 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 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 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 407

Java大数

题解

SGU 408

显然是2个数字越接近越好,即平方数。。而且答案一定为整数

#include<iostream>
#include<cstdio>
#include<vector>
#include<string.h>
using namespace std;
#define ll long long
#define N 10000
ll 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
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
410

百度有解。。

减到使得最大数是最小数的2倍就停止,然后翻倍再减

SGU
411

后缀数组

#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
413

枚举起点,然后任意2个点先成对,剩下的孤立点再投入相邻的集合里

#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;
}

SGU 403 404 405 406 407 408 409 410 411 413

时间: 2024-08-04 21:57:43

SGU 403 404 405 406 407 408 409 410 411 413的相关文章

http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码

http协议的状态码 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换. 2xx(成功) 表示成功处理了请求的状态码. 200(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.如果是对您的 robots.txt 文件显示此状态码,则表示 Googlebot 已成功检索到该文件. 201(

常见HTTP状态200,304,403,404,503

下面提供 HTTP 状态码的完整列表.您也可以查看 W3C官方HTTP 状态码说明(英文). 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换. 2xx (成功) 表示成功处理了请求的状态码. 200(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.如果是对您的 robots.txt 文

HTTP返回代码 403 404 500等代表的含义

在网站日志中,我们经常会看到很多返回的http代码,如201.304.404.500等等.可是这些具体的返回的HTTP代码究竟什么含义呢,在此做一下知识普及吧,记不住不要紧,到时候看看就行了,但最主要的几个还要要清楚的. 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表.点击链接可了解详情.您也可以访问 HTTP 状态码上的 W3C 页获取更多信息. 1xx(临时响应) 表示临时响应并需要请求者继续执

HTTP常见错误 400/401/403/404/500及更多

HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证书与登录服务器所需的证书不匹配. 请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限. 401.2 未授权:服务器的配置导致登录失败 此错误表明传输给服务器的证书与登录服务器所需的证书不匹配.此错误通常由未发送正确的 WWW 验证表头字段所致. 请与 Web 服务器的管理员联系,

android流媒体之硬编码【代码篇】

转载此处:http://www.apkbus.com/blog-86476-43829.html 上一篇文章进行了思路和16进制文件的分析.这篇该代码实现了.目前没有在真实手机上测试, android4.0之后的模拟器可以用模拟摄像头或者叫做webcam的[其实就是笔记本摄像头].之后会在程序安装包data/data/edu.ustb.videoencoder/下面会有h264.3gp,sps[存放sps数据].pps[存放pps数据].media.xml[存放找到mdat的位置],/sdcar

collection 源码

转自:http://blog.csdn.net/longlong2015/article/details/48174421 http://blog.csdn.net/mra__s__/article/details/55517204 JDK 1.7源码阅读笔记(三)集合类之LinkedList 标签: jdklinkedlist源码阅读 2015-09-02 09:58 644人阅读 评论(0) 收藏 举报  分类: JDK源码(6)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录

从 Node.js 错误中获得的经验

有多少次你发现自己在终端或监控系统内查看堆栈轨迹,但并不能看出个所以然来?如果你的回答是“很多次”,那么这篇帖子你应该看看.如果你不经常碰上这种情况也没关系,你也可以看看这篇文章解闷. 当处理 Node.js 服务器的复杂数据时,要会从可返回给请求方的错误中总结经验,具备此能力至关重要.在处理一个请求时,一个错误出现会引起链接里另一个错误的出现,于是问题就来了.当此脚本出现时,一旦你生成了新错误,并将它返回到了链接,那你就丢失了与原始错误的所有连接.    达尔文达尔文翻译于 5天前 0人顶 顶

各种纯css图标

CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出.直接用CSS3画出这些图形,要比贴图性能更好,体验更加,是一种非常好的网页美观方式. 这32种图形分别为圆形,椭圆形,三角形,倒三角形,左三角形,右三角形,菱形,梯形,长方形,正方形,圆环,平行四边形,五角星,六角星,五边形,六边形,八边形,心形,蛋形,无穷符号,消息提示框,钻石,八卦图,食豆人,扇形,月牙,顶左直角三角形,顶右直角三角形 ,底左直角三角形 ,底右直角三角形 ,八角形, 十二角形.      网页代码中用到(<!--

微软原版SQLHelper类

C# Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84