for (int i = 0; i < maxn; i++) pre[i] = i;
set v;
map<int, node> nodes;
int n;
cin >> n;
while (n–) {
int id, p1, p2, k, houses;
double area;
cin >> id >> p1 >> p2 >> k;
v.insert(id);
if (p1 != -1) {
v.insert(p1);
union0(p1, id);
}
if (p2 != -1) {
v.insert(p2);
union0(p2, id);
}
while (k–) {
int id1;
cin >> id1;
v.insert(id1);
union0(id1, id);
}
cin >> houses >> area;
nodes[id] = node{id, houses, area};
}
set sset;
map<int, vector > mmap;
for (auto it = v.begin(); it != v.end(); it++) {
int fa = find(*it);
mmap[fa].push_back(*it);
sset.insert(fa);
}
cout << sset.size() << endl;
vector families;
for (auto it = sset.begin(); it != sset.end(); it++) {
int fa = find(*it), sz = mmap[fa].size();
double hs = 0, area = 0;
for (int i = 0; i < sz; i++) {
hs += nodes[mmap[fa][i]].houses;
area += nodes[mmap[fa][i]].area;
}
families.push_back(family{mmap[fa][0], sz, hs / sz, area / sz});
}
sort(families.begin(), families.end(), cmp);
for (int i = 0; i < families.size(); i++) {
printf(“%04d %d %.3lf %.3lf”, families[i].id, families[i].members, families[i].ave_houses, families[i].ave_area);
if (i < families.size() - 1) puts(“”);
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
getline(cin,s);
int ans=-1;
for(int i=0;i<s.size();i++)
{
for(int j=s.size()-1;j>=i;j–)
{
int l=i,r=j;
while(s[l]==s[r] && l<=r)
{
l++;
r–;
}
if(l>r)
{
ans=max(ans,j-i+1);
}
}
}
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long
string s;
char p[5000];
int len[5000];
void init()
{
p[0]=‘@’;
int l=s.length();
for(int i=1;i<=l*2;i+=2)
{
p[i]=‘#’;p[i+1]=s[i/2];
}
p[l*2+1]=‘#’;
p[l*2+2]=‘!’;
}
int main()
{
ios::sync_with_stdio(false);
getline(cin,s);
init();
int po=0,mx=0,maxn=0,l;//po最长子串的中心点,mx最长子串的右端点
l=strlen§;
for(int i=1;i<=l;i++)
{
if(i<mx) len[i]=min(len[2*po-i],mx-i);
else len[i]=1;
while(p[i-len[i]]==p[i+len[i]]) //中心扩展
len[i]++;
if(i+len[i]>mx)//更新
{
mx=i+len[i];po=i;
}
maxn=max(maxn,len[i]);
}
cout<<maxn-1;//子串长度为len[i]-1
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct T{
int id;//存储id
int money;//钱数
int sumHb;//红包个数
};
auto cmp=[](T &e1,T &e2){//用来排序的规则
return tie(e2.money,e2.sumHb,e1.id)<tie(e1.money,e1.sumHb,e2.id);
};
int main(){
int N;
cin>>N;
map<int,int>val;
map<int,int>hb;
vectorflag;
for(int i=1;i<=N;i++){
int num,sum=0;
cin>>num;
for(int j=1;j<=num;j++){
int id,mon;
cin>>id>>mon;
if(count(flag.begin(),flag.end(),id)==0){//用来判断id有没有重复抢红包
sum+=mon;//用来统计编号i发放的红包总额
val[id]+=mon;//抢到红包的人 增加其金钱总额
hb[id]++;//存放编号i发放的红包个数
flag.push_back(id);
}
}
val[i]-=sum;//从编号i已有的金钱数减去发放红包的钱数
flag.clear();//清空容器
}
vectorss;//存放编号id 收入金额 红包个数
for(auto item : val){
ss.push_back({item.first,item.second,hb[item.first]});
}
sort(ss.begin(),ss.end(),cmp);//排序
for(int i=0;i<ss.size();i++){
printf(“%d %.2f”,ss[i].id,(ss[i].money*1.0)/100);
if(i+1!=ss.size())
cout<<endl;
}
return 0;
}
#include//C++头文件的标准写法;
#include
using namespace std;
#include//包含了sort函数;
struct node
{
int id;//人的编号;
int num;//人抢到红包的个数;
int value;//抢到红包的金额;
}person[10000];
bool f(struct node a,struct node b)
{
if(a.value!=b.value)//如果金额没有并列,则按照总金额从达到小的顺序递减输出;
{
return a.value>b.value;
}
else if(a.num != b.num)//金额有并列,则按照抢到红包的个数递减输出;
{
return a.num>b.num;
}
else if(a.id != b.id)//如果金额和抢到红包的个数都有并列,则按照人的编号递增输出;
{
return a.id<b.id;
}
}
int main()
{
int n,k,p,i,j,sum=0,n1;//k指的是抢到红包的个数,n指的是抢红包人的编号,p指的是抢到红包的金额;
cin>>n;
for(i=1;i<=n;i++)
{
person[i].id = i;//编号是i的人对应的id值是i;
cin>>k;
sum=0;
for(j=1;j<=k;j++)
{
cin>>n1>>p;
// person[n1].id = n1;易错点,因为你不知道每个人都抢了红包,当有的人没有抢,那么对应的id值就变成了0;
person[n1].value = person[n1].value + p;//记录抢到红包的金额;
person[n1].num ++;//记录抢到红包的个数;
sum = sum + p;//记录第i个人发红包的总金额;
}
person[i].value = person[i].value - sum;//更新编号为i的人剩余的总金额;
}
//因为人的编号n是正整数,故需要将person加1;
//person+n+1包含的范围是person+n,不包括那个1;
//[person+1,person+n+1)---->[1,n]
sort(person+1,person+n+1,f);//自动调用f()函数,包含在头文件 ----> #include
for(i=1;i<=n;i++)
{
//抢到红包的进金额是按照分这个单位来计算的,故需要在输出是转换成元;
printf(“%d %.2lf\n”,person[i].id,person[i].value*1.0/100);
}
}
#include
using namespace std;
int relative[101][101];
int fa[101];
int find(int x) {
return fa[x] == x ? x : find(fa[x]);
}
void unin(int x, int y) {
int a = find(x), b = find(y);
fa[b] = a;
return;
}
int main() {
for (int i = 0; i < 101; i++) {
fa[i] = i;
}
int N, M, K;
cin >> N >> M >> K;
for (int i = 0; i < M; i++) {
int x, y, edge;
cin >> x >> y >> edge;
if (edge == 1)
unin(x, y);
else {
relative[x][y] = -1;
relative[y][x] = -1;
}
}
for (int i = 0; i < K; i++) {
int x, y;
cin >> x >> y;
if (find(x) == find(y) && relative[x][y] != -1)
cout << “No problem”<<endl;
else if (find(x) != find(y) && relative[x][y] != -1)
cout << “OK”<<endl;
else if (find(x) == find(y) && relative[x][y] == -1)
cout << “OK but…”<<endl;
else
cout << “No way”<<endl;
}
return 0;
}
#include
#include
#include
using namespace std;
int pre[35];
int in[35];
typedef struct node* bintree;
queue q;
struct node{
bintree left;
bintree right;
int data;
};
bintree huanyuan(int prel,int prer,int inl,int inr)
{
if(prel>prer)return NULL;
bintree bt=new node;
bt->data=pre[prel];
int k;
for(int i=inl;i<=inr;i++)
{
if(in[i]==pre[prel])
{
k=i;
break;
}
}
bt->right=huanyuan(prel+1,prel+k-inl,inl,k-1);
bt->left=huanyuan(prel+k-inl+1,prer,k+1,inr);
return bt;
}
void layeror(bintree bt,vector &vec)
{
if(bt==NULL)return;
q.push(bt);
while(!q.empty())
{
vec.push_back(q.front()->data);
bintree t=q.front();
q.pop();
if(t->left)q.push(t->left);
if(t->right)q.push(t->right);
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>in[i];
}
for(int i=0;i<n;i++)
{
cin>>pre[i];
}
bintree bt=huanyuan(0,n-1,0,n-1);
vector vec;
layeror(bt,vec);
for(int i=0;i<vec.size();i++)
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料
,n-1,0,n-1);
vector vec;
layeror(bt,vec);
for(int i=0;i<vec.size();i++)
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-XSCc7Zd5-1711462477850)]
[外链图片转存中…(img-H8Vn2Sc4-1711462477851)]
[外链图片转存中…(img-hun3s5xA-1711462477852)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-tBZs28iY-1711462477852)]
最后
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料
[外链图片转存中…(img-U871Mt0Y-1711462477853)]
[外链图片转存中…(img-zgEw3G2b-1711462477853)]