本解题报告 乱抄,乱写,随性随心,不喜多喷!

SGU 142:

思路:一个string的字串不会超过2^20个,我们枚举出来就好了。

我出错点:数组RE

 #include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<iostream>
#include<set>
#include<map>
#include<vector> using namespace std;
typedef long long ll; #define N 566666 int n;
char s[N];
bool b[<<];
char ss[]; int main()
{
scanf("%d",&n);
scanf("%s",s);
int len=; memset(b,false,sizeof(false)); int tot=<<len; for (int i=;i<n;i++)
{
int num=;
for (int j=;j<len&&i+j<n;j++)
{
if (s[i+j]=='a')
num<<=;
else num=num*+;
b[num]=true;
}
} int pos; for (int i=;i<tot;i++)
if (!b[i])
{
pos=i;
break;
} int num=floor(log(pos)/log()); printf("%d\n",num);
int tmp=num; while (pos>)
{
if (pos&) ss[tmp--]='b';
else ss[tmp--]='a';
pos/=;
} for (int i=;i<=num;i++)
printf("%c",ss[i]); printf("\n");
return ;
}

View C:ode

SGU 146 你WA的话,精度 ,精度

SGU 172:二分图染色,然后二分图的一边

 #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<vector> using namespace std;
typedef long long ll;
#define N 102222 vector<int>mp[];
int vis[]; int col[]; int ans[]; int tmp=;
int flag=;
void dfs(int x)
{
vis[x]=;
for (int i=;i<mp[x].size();i++)
{
int v=mp[x][i];
if (!vis[v])
{
col[v]=-col[x];
dfs(v);
}
else
{
if (col[v]==col[x])
{
flag=;
return ;
}
}
}
} int main()
{
int n,m;
scanf("%d%d",&n,&m); while (m--)
{
int x,y;
scanf("%d%d",&x,&y);
mp[x].push_back(y);
mp[y].push_back(x);
} for (int i=;i<=n;i++)
if (!vis[i])
{
col[i]=;
dfs(i);
if (flag)
{
puts("no");
return ;
}
} puts("yes"); for (int i=;i<=n;i++)
if (col[i]==)
{
ans[++tmp]=i;
} printf("%d\n",tmp);
for (int i=;i<tmp;i++)
printf("%d ",ans[i]); printf("%d\n",ans[tmp]); return ;
}

SGU 149:  经典题,求任意点到树中任意一点的最长距离。

一遍DFS求出一个点,子树在树中的最远和次远距离;

对每个点 求出其父节点的最远距离。dp[father[u]]= max(dp[father[u]],dp[u].first(子树最长)+e.val);(father[u]不再u 的最长路径上)

否则:dp[father[u]]= max(dp[father[u]],dp[u].first(子树次长)+e.val);(father[u]再u 的最长路径上)

 #include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<iostream>
#include<set>
#include<map>
#include<vector> using namespace std;
typedef long long ll; #define N 11111
int head[N];
struct node
{
int v,c,next;
}e[N<<];
int tot; struct node2
{
int idx,val;
}dp[N][],p; void init()
{
tot=;
memset(head,-,sizeof(head));
} void add(int u,int v,int c)
{
e[tot].v=v;
e[tot].c=c;
e[tot].next=head[u]; head[u]=tot++;
} void dfs_son(int u,int pre)
{
for (int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].v;
int c=e[i].c;
if (v==pre) continue;
dfs_son(v,u);
p.val=dp[v][].val+c;
p.idx=v; if (p.val>dp[u][].val)
{
dp[u][]=dp[u][];
dp[u][]=p;
} else if (p.val>dp[u][].val)
{
dp[u][]=p;
}
}
} void dfs_father(int u,int pre)
{
for (int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].v;
int c=e[i].c;
if (v==pre) continue;
int first=dp[u][].val;
int second=dp[u][].val; int idx=dp[u][].idx; if (idx==v) dp[v][].val = max(dp[v][].val,second+c);
else dp[v][].val = max(dp[v][].val,first+c); dp[v][].val=max(dp[v][].val,dp[u][].val+c); dfs_father(v,u);
}
} int main()
{ int n;
scanf("%d",&n);
init(); for (int i=;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
// add(i,x,y);
add(x,i,y);
}
dfs_son(,-);
dfs_father(,-);
for (int i=;i<=n;i++)
printf("%d\n",max(dp[i][].val,dp[i][].val));
return ;
}

SGU 169: 脑洞题,真心脑洞大开题;看到这么大数位的k,就知道有规律,但是想到的还是太浅太浅,我只是往奇偶数上想了

引用一篇blog:  http://www.cppblog.com/willing/archive/2010/05/04/114304.html

SGU 143

小型树形DP,如果子树大于0,那么父节点加上就好了,

注意:有一个节点的情况,比如第二个test

 #include<stdio.h>
#include<algorithm>
#include<math.h>
#include<vector>
#include<string.h>
#include<string>
#include<set>
#include<iostream>
using namespace std;
typedef long long ll; #define N 26666
vector<int> mp[N]; int a[N];
int n;
int dp[N];
int vis[N]; void dfs(int u)
{
vis[u]=;
for (int i=;i<mp[u].size();i++)
{
int v=mp[u][i];
if (!vis[v])
{
dfs(v);
if (dp[v]>) dp[u]+=dp[v]; }
} } int main()
{
int n;
scanf("%d",&n); for (int i=;i<=n;i++) scanf("%d",&a[i]),dp[i]=a[i]; for (int i=;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
mp[x].push_back(y);
mp[y].push_back(x);
} dfs(); int ans=-; for (int i=;i<=n;i++)
ans=max(ans,dp[i]);
printf("%d\n",ans);
return ;
}

SGU 144:

概率题,一个人等待的时间是(Y-X)*60,如果先到的人等待了Zminute,就会离开,求不会离开的概率

画个矩形图。

SGU 134:

求树的重心;

要么是某一个子树的最大节点,要么是包含根的子树;

 #include<stdio.h>
#include<algorithm>
#include<math.h>
#include<vector>
#include<string.h>
#include<string>
#include<set>
#include<map>
#include<iostream>
#include<set>
using namespace std;
typedef long long ll;
#define N 33333
vector<int>mp[N];
int sum[N];
int a[N];
int dp[N]; void dfs(int u,int pre)
{
for (int i=;i<mp[u].size();i++)
{
int v=mp[u][i];
if (v==pre) continue;
dfs(v,u);
sum[u]+=sum[v];
}
sum[u]++;
} int t=;
int ans=; void cal(int u,int pre)
{
int tmp=sum[u];
dp[u]=;
for (int i=;i<mp[u].size();i++)
{
int v=mp[u][i];
if (v==pre) continue;
cal(v,u);
dp[u]=max(dp[u],sum[v]);
} dp[u]=max(dp[u],sum[]-sum[u]);
if (dp[u]==ans)
{
++t;
a[t]=u;
}
else if (dp[u]<ans)
{
t=;
ans=dp[u];
a[t]=u;
}
} int main()
{
int n;
scanf("%d",&n);
for (int i=;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
mp[x].push_back(y);
mp[y].push_back(x);
}
dfs(,-);
//for (int i=1;i<=n;i++) printf("%d ",sum[i]);
cal(,-);
printf("%d %d\n",ans,t);
sort(a+,a+t+);
for (int i=;i<t;i++) printf("%d ",a[i]);
printf("%d\n",a[t]);
return ;
}

SGU 174:

只要判断当前点是否在一个集合中,不包括自己

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include<string>
#include<map> using namespace std;
#define N 402222
typedef long long ll; pair<int,int> pt;
#define mk make_pair
map<pair<int,int>,int>mp;
int f[N]; int find(int x)
{
if (f[x]!=x) f[x]=find(f[x]);
return f[x];
} int main()
{
int n;
scanf("%d",&n);
int t=;
for (int i=;i<=n*;i++) f[i]=i; int ans=;
for (int i=;i<=n;i++)
{
int x,y,xx,yy;
scanf("%d%d",&x,&y);
scanf("%d%d",&xx,&yy);
if (!mp[mk(x,y)]) mp[mk(x,y)]=++t;
if (!mp[mk(xx,yy)]) mp[mk(xx,yy)]=++t;
x=mp[mk(x,y)];
y=mp[mk(xx,yy)];
x=find(x);
y=find(y);
if (x==y)
{
ans=i;
break;
}
else f[x]=y;
}
printf("%d\n",ans);
return ;
}

SGU 乱乱开的更多相关文章

  1. [转]vnpy乱乱谈 02架构

    vnpy乱乱谈 02架构 转自:http://101.132.65.227/?p=51 听到架构这个词先不要害怕. 其实这部分内容还是挺简单的. 一般而言, 一个交易系统我们可以简单的分成输入, (系 ...

  2. 页面登陆框老是乱乱的?banner跨页图片缩小之后总是在側面不能显示主要部分?哈哈~我来帮你忙~~

    有banner背景图片和登陆框的html.css排布 目的:无论页面大小,背景图片都要居中(显示图片中间主要内容,而不是側面的一些东西),登陆框基本能在页面内显示. 盒子的排列应该是这种: <d ...

  3. 今日SGU 5.29

    sgu 299 题意:给你n个线段,然后问你能不能选出其中三个组成一个三角形,数字很大 收获:另一个大整数模板 那么考虑下为什么如果连续三个不可以的话,一定是不存在呢? 连续上个不合法的话,一定是 a ...

  4. 体验Visual Studio 2015 之 MVC - 视图组建

    VS2015 PERVIEW中可以创建MVC 项目. 我们可以 发现有几大亮点. 首先我们看目录结构: 当前项目包含两个主要的文件夹:Solution Items .src 很明显src文件夹下为当前 ...

  5. Model--汇总

    NSFileManager.NSURL.NSFileHandle.NSData.NSXMLParser.NSUserDefaults.NSKeyedArchiver.NSKeyedUnarchiver ...

  6. 论一次iOS面试

    最近觉得现在所在公司平台用户量太少,自身技术已经到了一个瓶颈,是时候需要换一个用户量多的平台,好好研究下iOS的性能优化.内存优化等问题了. 所面试的公司由于一些默认的规定,就不多说了,大致是面了一个 ...

  7. UVA 10497 - Sweet Child Makes Trouble 高精度DP

    Children are always sweet but they can sometimes make you feel bitter. In this problem, you will see ...

  8. HDU5568/BestCoder Round #63 (div.2) B.sequence2 dp+高精度

    sequence2 Problem Description Given an integer array bi with a length of n, please tell me how many ...

  9. TWaver初学实战——如何在EasyUI中插入TWaver(续)

    上次文章虽然简单易懂,但很有些小伙伴不满意:你这TWaver和EasyUI结合,只不过生硬地把TWaver图形插进去了,数据和人家EasyUI没一毛钱关系.嘿嘿,不就是想发生关系嘛,没问题啊!咱就还用 ...

随机推荐

  1. 用jquery操作xml文件

    一. xml文件\内容读取 1.读取xml文件 $.get( xmlfile.xml , function (xml){ //xml即为可以读取使用的内容,具体读取见第2点 }); 2.读取xml内容 ...

  2. ratio_to_report分析函数求占比

    drop table test; create table test ( name varchar(20), kemu varchar(20), score number  ); insert int ...

  3. windows显示文件扩展名

    搜索打开windows的文件资源管理选项,如下去掉“隐藏已知文件类型的扩展名”即可 打开之后显示如下:

  4. Redis原理及集群相关知识

    读书笔记 <Redis开发与运维 > Redis使用场景 作为缓存层 减少对Mysql的压力 计数功能 比如使用原子命令incr 共享Session 设置过期时间 可以限制短信接口等调用 ...

  5. Python中单元测试出错了,会怎么样?

    在上一篇中,我们看到了单元测试正常通过时的情况,如果我们边修改一下要测试的函数,然后再运行单元测试,会出现什么情况. 原say_hello_name.py def hello_name(name): ...

  6. 使用selenium和phantomJS浏览器获取网页内容的小演示

    # 使用selenium和phantomJS浏览器获取网页内容的小演示 # 导入包 from selenium import webdriver # 使用selenium库里的webdriver方法调 ...

  7. 电子邮件中的to、cc、bcc

    电子邮件中的to.cc(carbon copy)和bcc(blind carbon copy),分别是收件人.抄送.密送 to 收件人 你想要给其发邮件的人 cc 抄送人 cc和to是一样的,但是cc ...

  8. Educational Codeforces Round 26

    Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...

  9. POJ-2186 Popular Cows,tarjan缩点找出度为0的点。

    Popular Cows 题意:一只牛崇拜另外一只牛,这种崇拜关系可以传导.A->B,B->C =>A->C.现在给出所有的关系问你有多少牛被其他所有的牛都崇拜. 思路:就是一 ...

  10. [Kubernetes]Pod字段自动填充

    PodPreset(Pod预设置)在Kubernetes v1.11以后出现,开发人员只需要提交一个基本的Pod YAML,Kubernetes就可以自动给对应的Pod对象加上运维人员设定好的其他必要 ...