并没有满分,好可惜,还找不到错。难受的一批。
代码没有整理,写的很一般,第一题路过的朋友请不吝赐教
//
// Created by 江左 on 2021/9/11.
//
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>
#include <algorithm>
using namespace std;
const int N=10010;
int n,k;
unordered_map<int,int> m ;
vector<int> vv;
int size[N];
int sum[N];
unordered_map<int ,int> res;
int main()
{
cin>>n>>k;
for (int i = 0; i < n; ++i) {
int t,len;cin>>t>>size[i];
vv.push_back(t);
if(i==0) sum[i]=len;
else sum[i]=sum[i-1]+len;
}
int idx=0,cnt=0;
while(true)
{
for (int i = 0; i < size[idx] ; ++i) {
m[cnt++]=idx;
}
idx++;
if(idx==n) break;
}
int maxx=-1;
while (k--)
{
int e;cin>>e;
if(e>=cnt) printf("Illegal Access\n");
else {
int tt=m[e];
if(tt!=0)
{
int res=vv[tt]+(e-sum[tt-1])*4;
cout<<res<<endl;
}else
{
int res=vv[tt]+e*4;
cout<<res<<endl;
}
if(m[e]>maxx){maxx=m[e];}
}
}
cout<<maxx+1;
return 0;
}
//
// Created by jiangzuo on 2021/9/11.
//
#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map>
#include <stack>
using namespace std;
const int N=10010;
struct node{
int w,order;
}nodes[N];
struct hat{
int w,order;
}hats[N];
bool cmp(node a,node b){
return a.w>b.w;
}
stack<int> h;
vector<int >v;
unordered_map<int,int> m,mm;
int n;
int main() {
cin>>n;
for (int i = 0; i < n; ++i) {
int t;cin>>t;
h.push(t);
v.push_back(t);
}
sort(v.begin(),v.end(),greater<int>());
for (int i = 0; i < v.size(); ++i) {
mm[v[i]]=i+1;
}
for (int i = 0; i < n; ++i) {
cin>>nodes[i].w;
nodes[i].order=i+1;
}
sort(nodes,nodes+n,cmp);
while (!h.empty())
{
int temp=h.top();h.pop();
int orders=mm[temp];
cout<<nodes[orders-1].order;
if(!h.empty()) cout<<" ";
}
}
//
// Created by jiangzuo on 2021/9/11.
//
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N=110;
int e[N][N];
bool st[N];
int n,m,a,b,c,cnt=0;
bool ff=true;
void dfs(int x)
{
//cout<<x<<" ";
cnt++;
st[x]=true;
bool f=false;
for (int i = 1; i <= n+1 ; ++i) {
if(ff&&!st[i]&&e[x][i]!=0){
dfs(i);f=true;
}
}
if(!f) ff= false;
}
int res,maxx=-1;
int main() {
cin>>n>>m;
for (int i = 0; i < m; ++i) {
cin>>a>>b;
e[a][b]=e[b][a]=1;
}
for (int i = 1; i <= n; ++i) {
fill(st,st+n+1,false);
ff=true;cnt=0;
dfs(i);
if(cnt>maxx){
res=i;maxx=cnt;
}
}
cout<<res<<" "<<maxx;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
const int N=35;
struct node{
int k,p;
}nodes[N];
vector<vector<int>> v;
vector<vector<int>> v2;
//int order[N];
map<int,int> order;
bool cmp(node a,node b)
{
return a.k<b.k;
}
void build(int l,int r,int root,int dep)
{
if(l>r) return;
v[dep].push_back(nodes[root].k);
v2[dep].push_back(nodes[root].p);
int minn=999999,u=999999;
if(l<root)
{
for (int i = l; i <= root-1; ++i) {
if(nodes[i].p<minn)
minn=nodes[i].p;
}
build(l,root-1,order[minn],dep+1);
}
if(r>root)
{
for (int i = root+1; i <= r; ++i) {
if(nodes[i].p<u)
u=nodes[i].p;
}
build(root+1,r,order[u],dep+1);
}
}
int minP=999999;
int main() {
int n;cin>>n;
v.resize(n+1);
v2.resize(n+1);
for (int i = 0; i < n; ++i) {
cin>>nodes[i].k>>nodes[i].p;
minP=min(nodes[i].p,minP);
}
sort(nodes,nodes+n,cmp);
for (int i = 0; i < n; ++i) {
order[nodes[i].p]=i;
}
build(0,n-1,order[minP],0);
int idx=0;
while (!v[idx].empty())
{
for (int i = 0; i < v[idx].size(); ++i) {
if(idx!=0)
cout<<" ";
cout<<v[idx][i];
}
idx++;
}
cout<<endl;
idx=0;
while (!v2[idx].empty())
{
for (int i = 0; i < v2[idx].size(); ++i) {
if(idx!=0) cout<<" ";
cout<<v2[idx][i];
}
idx++;
}
return 0;
}