update
This commit is contained in:
parent
ac9c9571af
commit
261a9ea6ce
@ -40,12 +40,12 @@ int main(){
|
||||
}
|
||||
for(int i=1;i<=m;i++){
|
||||
for(int j=n;j>=0;j--){
|
||||
if(items[i].subNum==2&&j>=(items[i+1].v+items[i+2].v)){
|
||||
dp[j]=max(dp[j],dp[j-(items[i+1].v+items[i+2].v)]+(items[i+1].v*items[i+1].p)+(items[i+2].v*items[i+2].p));
|
||||
}else if((items[i].subNum==2&&j>=items[i+1].v) || (items[i].subNum==1&&j>=items[i+1].v)){
|
||||
dp[j]=max(dp[j],dp[j-items[i+1].v]+(items[i+1].v*items[i+1].p));
|
||||
}else if(items[i].subNum==2&&j>=items[i+2].v){
|
||||
dp[j]=max(dp[j],dp[j-items[i+2].v]+(items[i+2].v*items[i+2].p));
|
||||
if(items[i].subNum==2&&j>=(items[i].v+items[i+1].v+items[i+2].v)){
|
||||
dp[j]=max(dp[j],dp[j-(items[i].v+items[i+1].v+items[i+2].v)]+(items[i].v*items[i].p)+(items[i+1].v*items[i+1].p)+(items[i+2].v*items[i+2].p));
|
||||
}else if((items[i].subNum==2&&j>=(items[i].v+items[i+1].v)) || (items[i].subNum==1&&j>=(items[i].v+items[i+1].v))){
|
||||
dp[j]=max(dp[j],dp[j-(items[i].v+items[i+1].v)]+(items[i].v*items[i].p)+(items[i+1].v*items[i+1].p));
|
||||
}else if(items[i].subNum==2&&j>=(items[i].v+items[i+2].v)){
|
||||
dp[j]=max(dp[j],dp[j-(items[i].v+items[i+2].v)]+(items[i].v*items[i].p)+(items[i+2].v*items[i+2].p));
|
||||
}else if(j>=items[i].v){
|
||||
dp[j] = max(dp[j],dp[j-items[i].v]+items[i].v*items[i].p);
|
||||
}
|
||||
|
4
day14/P3367/1.ans
Normal file
4
day14/P3367/1.ans
Normal file
@ -0,0 +1,4 @@
|
||||
N
|
||||
Y
|
||||
N
|
||||
Y
|
8
day14/P3367/1.in
Normal file
8
day14/P3367/1.in
Normal file
@ -0,0 +1,8 @@
|
||||
4 7
|
||||
2 1 2
|
||||
1 1 2
|
||||
2 1 2
|
||||
1 3 4
|
||||
2 1 4
|
||||
1 2 3
|
||||
2 1 4
|
62
day14/P3367/P3367.cpp
Normal file
62
day14/P3367/P3367.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include <cctype>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
const int MAX_N=1e4+114;
|
||||
int n,m;
|
||||
int b[MAX_N];
|
||||
|
||||
inline int readint();
|
||||
inline int getfather(int n);
|
||||
inline int getroot(int n);
|
||||
inline void pre(int n);
|
||||
|
||||
#define PV(v){cout<<#v<<" : "<<(v)<<endl;}
|
||||
#define L(m){cout<<"[LOG]: "<<(m)<<endl;}
|
||||
|
||||
int main(){
|
||||
n=readint(),m=readint();
|
||||
pre(n);
|
||||
for(int i=1;i<=m;i++){
|
||||
const int z=readint(),x=readint(),y=readint();
|
||||
if(z==1){
|
||||
b[getroot(x)]=getroot(y);
|
||||
}else{
|
||||
|
||||
cout<<(getroot(x)==getroot(y)?"Y":"N")<<endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pre(int n){
|
||||
for(int i=1;i<=n;i++){
|
||||
b[i]=i;
|
||||
}
|
||||
}
|
||||
|
||||
int getroot(int n){
|
||||
int r=getfather(n);
|
||||
while(r!=getfather(r)){
|
||||
r=b[r]=b[b[r]];
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
int getfather(int n){
|
||||
return b[n];
|
||||
}
|
||||
|
||||
int readint(){
|
||||
int x=0,w=1;
|
||||
char ch=0;
|
||||
while (!isdigit(ch)) {
|
||||
if(ch=='-')w=-1;
|
||||
ch=getchar();
|
||||
}
|
||||
while(isdigit(ch)){
|
||||
x=x*10+(ch-'0');
|
||||
ch=getchar();
|
||||
}
|
||||
return x*w;
|
||||
}
|
9
day14/P3367/P3367.json
Normal file
9
day14/P3367/P3367.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"files":["P3367.cpp"],
|
||||
"args":["-O3","-Wall"],
|
||||
"tests":[
|
||||
{"in":"1.in","ans":"1.ans"},
|
||||
{"in":"P3367_2.in","ans":"P3367_2.out"}
|
||||
],
|
||||
"runtimeout":1000
|
||||
}
|
200001
day14/P3367/P3367_2.in
Normal file
200001
day14/P3367/P3367_2.in
Normal file
File diff suppressed because it is too large
Load Diff
100521
day14/P3367/P3367_2.out
Normal file
100521
day14/P3367/P3367_2.out
Normal file
File diff suppressed because it is too large
Load Diff
8
day14/P3865/1.ans
Normal file
8
day14/P3865/1.ans
Normal file
@ -0,0 +1,8 @@
|
||||
9
|
||||
9
|
||||
7
|
||||
7
|
||||
9
|
||||
8
|
||||
7
|
||||
9
|
10
day14/P3865/1.in
Normal file
10
day14/P3865/1.in
Normal file
@ -0,0 +1,10 @@
|
||||
8 8
|
||||
9 3 1 7 5 6 0 8
|
||||
1 6
|
||||
1 5
|
||||
2 7
|
||||
2 6
|
||||
1 8
|
||||
4 8
|
||||
3 7
|
||||
1 8
|
48
day14/P3865/P3865.cpp
Normal file
48
day14/P3865/P3865.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int readint();
|
||||
const int MAX_N = 1e5+5;
|
||||
const int MAX_LN = 20;
|
||||
int s[MAX_N][MAX_LN];
|
||||
int m,n;
|
||||
int l2[MAX_N];
|
||||
|
||||
int main(){
|
||||
n=readint(),m=readint();
|
||||
l2[1]=0;
|
||||
for(int i=2;i<=n;i++){
|
||||
l2[i]=l2[i/2]+1;
|
||||
}
|
||||
for(int i=1;i<=n;i++){
|
||||
s[i][0]=readint();
|
||||
}
|
||||
for (int j=1;j<=l2[n]; j++) {
|
||||
for(int i=1;i<=n-(1<<j)+1;i++){
|
||||
s[i][j]=max(s[i][j-1],s[i+(1<<(j-1))][j-1]);
|
||||
}
|
||||
}
|
||||
for(int i=1;i<=m;i++){
|
||||
const int l=readint(),r=readint();
|
||||
int j = l2[r-l+1];
|
||||
cout<<max(s[l][j],s[r-(1<<j)+1][j])<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
int readint(){
|
||||
int x=0,w=1;
|
||||
char ch=0;
|
||||
while(!isdigit(ch)){
|
||||
if(ch=='-')w=-1;
|
||||
ch=getchar();
|
||||
}
|
||||
while(isdigit(ch)){
|
||||
x=x*10+(ch-'0');
|
||||
ch=getchar();
|
||||
}
|
||||
return x*w;
|
||||
}
|
8
day14/P3865/P3865.json
Normal file
8
day14/P3865/P3865.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"files":["P3865.cpp"],
|
||||
"args":["-O2","-Wall"],
|
||||
"tests":[
|
||||
{"in":"1.in","ans":"1.ans"}
|
||||
],
|
||||
"runtimeout":1000
|
||||
}
|
0
day14/P5788/P5788.cpp
Normal file
0
day14/P5788/P5788.cpp
Normal file
Loading…
Reference in New Issue
Block a user