消去合法的序列 剩下的不合法序列一定是 ))....(((...
3兩種括號個數各加1除2 手算一下即可4*/
5 #include 6 #include 7 #include 8
9const
int maxn=100010;10
11int
len,top,cnt;
1213
char
s[maxn];
1415
inthh()
25int ans=(top+1)/2+(cnt+1)/2
;26 printf("
%d\n
",ans);
27fclose(stdin);
28fclose(stdout);
29return0;
30}3132
int sb=hh();
33int main(int argc,char**argv)
題解
維護乙個f陣列 f[i]表示i這個時刻 車上已經坐了幾隻怪獸了
3[x,y] z
4for (int i=x; i5
max=max(max,f[i]);
6t=min(z,m-max);
7for (int i=x; i8
ans+=t
9cout<10
顯然 可用線段樹維護區間加和區間查詢最大值
11*/
12 #include13 #include14 #include15 #include16 #include17
#define n 50005
18#define lson (root<<1)
19#define rson (root<<1|1)
20#define max(a,b) a=a>b?a:b
21using
namespace
std;
2223
intk,n,m,x,y,ans,tmp,val;
2425
int tree[n<<2],mark[n<<2
];26
27struct
node
33}node[n];
3435 inline int
qread()
39while(ch>='
0' && ch<='9')
40return x*j;41}
42void pushdown(int
root)
49int query(int root,int l,int r,int l,int
r) 58
void updata(int root,int l,int r,int l,int r,int
to)
65pushdown(root);
66int mid=(l+r)>>1;67
updata(lson,l,mid,l,r,to);
68 updata(rson,mid+1
,r,l,r,to);
69 tree[root]=max(tree[lson],tree[rson]);70}
71int
main()
80 sort(node+1,node+k+1
);81
for(int i=1;i<=k;i++)
89 printf("
%d\n
",ans);
90fclose(stdin);fclose(stdout);
91return0;
92 }
題解
列舉左上角 n^2 列舉右下角n^2 列舉修改的數 n^2 求和 n^2 -> n^8
3求乙個矩陣和,可以通過矩陣字首和做到o(1)
4列舉左上角 n^2 列舉右下角n^2 列舉修改的數 n^2 -> n^6
5預處理出每個矩陣的最小值是多少。 n^4
6列舉左上角 n^2 列舉右下角n^2 修改的數已知(修改最小的或者不修改) -》n^4
7n,m<=300
8假如我們不要求修改數,查詢最大子矩陣
9有n個數,查詢最大子段和 o(n)
10for (i=1; i<=n; i++) f[i]=max(f[i-1]+a[i],a[i]);
11max = 最大子段和
12要求我們修改數
13修改的數一定是最小的那個數。
14f[i][0]以i結尾並且沒有數被修改過的最大和
15f[i][1]以i結尾並且有數被修改過的最大和 //a[i] 第i列的和
16for (int i=1; i<=n; i++)
1721
max 是答案
22*/
23 #include 24 #include 25 #include 26 #include 27 #include 28
29const
int inf=1000000000;30
const
int maxn=305;31
32int
n,m,ans,p,k;
3334
int a[maxn][maxn],min[maxn],b[maxn],dp[maxn][2
],s[maxn][maxn];
3536 inline int min(int a,int
b) 39
40 inline int max(int a,int
b) 43
44int
hh()
52for(int i=1;i<=n;i++)
53for(int j=1;j<=m;j++)
54 s[i][j]=s[i-1][j]+a[i][j];
55for(int i=1;i<=n;i++)
67 } else
68 ans=max(ans,max(dp[m][1],dp[m][0
]));69}
70}71 printf("
%d\n
",ans);72}
73return0;
74}7576
int sb=hh();
77int main(int argc,char**argv)
題解
省隊集訓DAY3
一共要使用六根木棍,那麼分割的方法就兩種,那麼關鍵就是要計算2,3的數量。cnt1 i 表示每種長度的木棍的方案數 cnt2 i 最初表示用不同的木棍拼成長度為i邊的方案數,後來表示選出四根木棍構成的方案數。cnt22 i 表示用兩個長度相同的不同木棍拼成長度為i的邊的方案數。cnt3 i 表示用三...
紀中集訓 Day 3
這幾天一直堅持寫blog 加油吧!早上醒來,說了 我要ak 其實只是蒟蒻的妄想罷了qaq 然後為了不立flag,改成了我要rank 1 然後依舊是有一題不會做qaq 好弱,爭取有一次能全會做吧qaq 然後就230了 rank1 第3題果真是爆搜不過就算寫也難寫啦啦啦 a組的題又是喪病,t1數學題什麼...
集訓Day3 離散化 矩形覆蓋
矩形覆蓋 planting 問題描述 給定在乙個平面座標系上的n 1 n 100 個矩形區域,這n個矩形可能有相互覆蓋的部分。求平面上被所有矩形覆蓋的總面積,重複部分只算一次。輸入格式 planting.in 第一行乙個整數n。接下來n行,每行包含4個整數x1 y1 x2 y2,表示乙個矩形區域。矩...