C
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
#include<string>
#include<vector>
#include<set>
#include<bitset>
#include<algorithm>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define endl '\n'
#define clr(a) memset(a, 0, sizeof(a))
#define lowbit(x) x & -x
#define ls rt << 1, l, mid
#define rs rt << 1 | 1, mid + 1, r
#define PB push_back
#define POP pop_back
const double pi = acos(-1);
const int maxn = 1e5 + 10;
const int maxm = 1200;
const ll mod = 1e9 + 7;
const int hash_mod = 19260817;
int cnt, n, m, num;
int head[maxn], vis[maxn], vis_e[maxn<<2], du[maxn];
vector<int> ans[maxn], v;
struct node{
int to, next;
}edge[maxn << 2];
void add(int u, int v){
edge[++cnt].to = v;
edge[cnt].next = head[u];
head[u] = cnt;
}
void init(){
int u, v;
clr(head); clr(vis); clr(vis_e); clr(du);
cnt = 1; num = 0;
for(int i = 1 ; i <= m ; ++ i){
scanf("%d %d", &u, &v);
add(u, v); add(v, u);
du[u] ++; du[v] ++;
}
}
void dfss(int u){
for(int i = head[u] ; i != 0 ; i = edge[i].next){
if(!vis_e[i]){
vis_e[i] = vis_e[i^1] = 1;
int v = edge[i].to;
dfss(v);
if(i > 2 * m + 1) num ++;
else (i & 1) ? ans[num].PB(i/2) : ans[num].PB(-i/2);
}
}
}
void dfs(int u){
vis[u] = 1;
if(du[u] & 1) v.PB(u);
for(int i = head[u] ; i != 0 ; i = edge[i].next){
int v = edge[i].to;
if(vis[v]) continue;
dfs(v);
}
}
void solve(){
for(int i = 1 ; i <= n ; ++ i){
if(!vis[i] && du[i]){
dfs(i);
for(int j = 2 ; j < v.size() ; j += 2){
add(v[j], v[j+1]);
add(v[j+1], v[j]);
}
num ++;
if(v.size()) dfss(v[0]);
else dfss(i);
v.clear();
}
}
cout << num << endl;
for(int i = 1 ; i <= num ; ++ i){
int sz = ans[i].size();
cout << sz << ' ';
for(int j = 0 ; j < sz ; ++ j){`在这里插入代码片`
cout << ans[i][j] << ' ';
}
ans[i].clear();
cout << endl;
}
}
int main(){
while(~scanf("%d %d", &n, &m)){
init();
solve();
}
return 0;
}
D
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e6+7;
int main (){
int n;
while(~scanf("%d",&n))
cout<<"Yes"<<endl;
return 0;
}
G
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
#include<string>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define endl '\n'
const double pi = acos(-1);
const int maxn = 1e5 + 10;
const int maxm = 1200;
const ll mod = 109;
int n, m;
char s[10];
int mn[maxn<<2], pre[maxn<<2], lazy[maxn<<2], b[maxn];
void pushdown(int p){
if(lazy[p]){
lazy[p<<1] += lazy[p]; lazy[p<<1|1] += lazy[p];
mn[p<<1] -= lazy[p]; mn[p<<1|1] -= lazy[p];
lazy[p] = 0;
return;
}
}
void pushup(int p){
mn[p] = min(mn[p<<1], mn[p<<1|1]);
pre[p] = pre[p<<1] + pre[p<<1|1];
}
void build(int p, int l, int r){
lazy[p] = 0;
pre[p] = 0;
if(l == r){
mn[p] = b[l];
return;
}
int mid = (l + r) >> 1;
if(l <= mid) build(p << 1, l, mid);
if(r > mid) build(p << 1 | 1, mid + 1, r);
pushup(p);
}
void update(int p, int l, int r, int L, int R){
if(L <= l && r <= R && mn[p] > 1){
lazy[p] ++;
mn[p] --;
return;
}
if(l == r){
mn[p] = b[l];
pre[p] ++;
return;
}
pushdown(p);
int mid = (l + r) >> 1;
if(L <= mid) update(p << 1, l, mid, L, R);
if(R > mid) update(p << 1 | 1, mid + 1, r, L, R);
pushup(p);
}
ll query(int p, int l, int r, int L, int R){
if(L <= l && r <= R) return pre[p];
pushdown(p);
ll ans = 0;
int mid = (l + r) >> 1;
if(L <= mid) ans += query(p << 1, l, mid, L, R);
if(R > mid) ans += query(p << 1 | 1, mid + 1, r, L, R);
return ans;
}
int main(){
int l, r;
while(~scanf("%d %d", &n, &m)){
for(int i = 1 ; i <= n ; ++ i) scanf("%d", &b[i]);
build(1, 1, n);
while(m--){
scanf("%s %d %d", s, &l, &r);
if(s[0] == 'a') update(1, 1, n, l, r);
if(s[0] == 'q'){
/*for(int j = 1 ; j <= n ; ++ j){
cout << query(1, 1, n, j, j) << ' ';
}
cout << endl;*/
cout << query(1, 1, n, l, r) << endl;
}
}
}
return 0;
}
J
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
#include<string>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define endl '\n'
const double pi = acos(-1);
const int maxn = 1e5 + 10;
const int maxm = 1200;
const ll mod = 109;
int a[maxn], rr[maxn], n;
ll ans;
void msort(int l, int r){
if(l == r) return;
int mid = l + (r - l) / 2;
msort(l, mid);
msort(mid + 1, r);
int i = l, j = mid + 1, k = l;
while(i <= mid && j <= r){
if(a[i] <= a[j]){
rr[k++] = a[i++];
}
else{
ans += mid - i + 1;
rr[k++] = a[j++];
}
}
while(i <= mid) rr[k++] = a[i++];
while(j <= r) rr[k++] = a[j++];
for(int i = l ; i <= r ; ++ i) a[i] = rr[i];
}
int main(){
int x, y;
while(~scanf("%d %d %d", &n, &x, &y)){
for(int i = 1 ; i <= n ; ++ i) scanf("%d", &a[i]);
ans = 0;
msort(1, n);
//for(int i = 1 ; i <= n ; ++ i) cout << a[i] << " ";
printf("%lld\n", ans * min(x, y));
}
return 0;
}