A

题意 给你一升水和两升水的价格 问你怎么买便宜

做法 模拟即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int q;scanf("%d",&q);while(q--){long long n,a,b;scanf("%lld%lld%lld",&n,&a,&b);if(n%2==1){if(a*2>=b){printf("%lld\n",n/2*b+a);}else{printf("%lld\n",n*a);}}else{if(a*2>=b){printf("%lld\n",n/2*b);}else{printf("%lld\n",n*a);}}}//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

B

题意 做法 给你n个东西 每天吃一个 去掉一个 使得偶数天吃的等于奇数天吃的 问你有多少种情况

我们知道去掉一个只是改变奇偶性即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;
const int MAX_N = 200025;
long long sum[MAX_N][2];
long long arr[MAX_N];
int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int n,ans = 0;scanf("%d",&n);for(int i = 1;i<=n;++i) scanf("%lld",&arr[i]);for(int i = 1;i<=n;++i)sum[i][(i&1)] = sum[i-1][(i&1)] + arr[i],sum[i][1-(i&1)] = sum[i-1][1-(i&1)];for(int i = 1;i<=n;++i){long long Sum = sum[i-1][0],Sum_ = sum[i-1][1];Sum+=sum[n][1] - sum[i][1];Sum_+=sum[n][0] - sum[i][0];if(Sum==Sum_) ans++;}printf("%d\n",ans);//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

C

题意构造一个回文矩阵

做法 偶数我们只要填进1/4 即可 奇数我们先补中间列,行 剩下的再补1/4

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;
int arr[500],ans[25][25],num[1025];
vector<int >vt,vt_,vt__;
int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int n;scanf("%d",&n);for(int i = 1;i<=n*n;++i) scanf("%d",&arr[i]),num[arr[i]]++;if(n%2==0){bool flag = true;for(int i = 1;i<=1000;++i){if(num[i]){if(num[i]<4||num[i]%4!=0){flag = false;break;}else vt.push_back(i);}}if(!flag){// cout << "ok " <<endl;printf("NO\n");return 0;}else{int sz = vt.size();int tmp = num[vt[0]]/4,id = 0;for(int i = 1;i<=n/2;i++){for(int j = 1;j<=n/2;j++){if(tmp){ans[i][j] = vt[id];tmp--;}else{id++;tmp = num[vt[id]]/4;ans[i][j] = vt[id];tmp--;}}}for(int i = 1;i<=n/2;i++){for(int j = n/2+1;j<=n;++j){ans[i][j] = ans[i][n-j+1];}}for(int i = n/2+1;i<=n;++i){for(int j = 1;j<=n;++j){ans[i][j] = ans[n-i+1][j];}}printf("YES\n");for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){j==n?printf("%d\n",ans[i][j]):printf("%d ",ans[i][j]);}}}}else{bool flag = false;int sum_0=0,sum_1=0;for(int i = 1;i<=1000;++i){if(num[i]){if(num[i]%2==1){sum_1++;}else sum_0++;}}if(sum_1!=1){//cout << "2 ok" << endl;printf("NO\n");return 0;}else{for(int i = 1;i<=1000;++i){if(num[i]%2==1){ans[n/2+1][n/2+1] =  i;num[i]--;vt.push_back(i);}else vt.push_back(i);}int sz = vt.size(),check =0,sz_ = 0;for(int i = 0;i<sz;++i){if(num[vt[i]]>=4){check+=num[vt[i]]/4;for(int j = 1;j<=num[vt[i]]/4;j++){if(sz_>=(n/2)*(n/2)){//dbg(sz_);vt__.push_back(vt[i]);vt__.push_back(vt[i]);}else vt_.push_back(vt[i]),sz_++;}if(num[vt[i]]%4==2){vt__.push_back(vt[i]);}}else if(num[vt[i]]==2){vt__.push_back(vt[i]);}}//dbg3(vt_.size(),check,n/2*n/2);if(check<(n/2)*(n/2)){//cout << "3 ok "<<endl;printf("NO\n");return 0;}else{printf("YES\n");int k = 0;for(int i = 1;i<=n/2;i++)ans[n/2+1][i] = vt__[k],k++;for(int i = 1;i<=n/2;++i)ans[i][n/2+1] = vt__[k],k++;int id = 0;for(int i = 1;i<=n/2;i++){for(int j = 1;j<=n/2;j++){ans[i][j] = vt_[id];id++;}}for(int i = n/2+2;i<=n;++i){ans[n/2+1][i] = ans[n/2+1][2*(n/2+1)-i];}for(int i = n/2+2;i<=n;++i){ans[i][n/2+1] = ans[2*(n/2+1)-i][n/2+1];}for(int i = 1;i<=n/2;i++){for(int j = n/2+2;j<=n;++j){ans[i][j] = ans[i][(n/2+1)*2-j];}}for(int i = n/2+2;i<=n;++i){for(int j = 1;j<=n;++j){ans[i][j] = ans[2*(n/2+1)-i][j];}}for(int i = 1;i<=n;++i){for(int j = 1;j<=n;++j){j==n?printf("%d\n",ans[i][j]):printf("%d ",ans[i][j]);}}}}}//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

D1

D1 和 D2 做法一样 数据范围不同

做法 既然是问我们最小几天 我们可以二分答案 贪心的去取并check即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;
long long arr[200025];
bool cmp(long long a,long long b)
{return a>b;
}
int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int n,ans;long long m;long long sum = 0;scanf("%d%lld",&n,&m);for(int i = 1;i<=n;++i) scanf("%lld",&arr[i]),sum+=arr[i];sort(arr+1,arr+1+n,cmp);if(sum<m){printf("-1\n");return 0;}else{int l = 1,r = n;while(l<=r){int k = 0,cnt = 1;long long tmp = 0;int mid = (l+r)>>1;while(cnt<=n){tmp+=max(arr[cnt]-k,1ll*0);if(tmp>=m) break;//dbg3(mid,cnt,k);//dbg2(tmp,arr[cnt]);if(cnt%mid==0){k++;}cnt++;}//dbg2(mid,tmp);if(tmp>=m) ans = mid,r =  mid - 1;else l = mid + 1;}printf("%d\n",max(1,ans));}//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

E

题目给了一种构造方法 按照他的方法构造即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);long long n,k;scanf("%lld%lld",&n,&k);if(k*(k-1)<n){printf("NO\n");return 0;}else{int num = n;printf("YES\n");for(int i = 1;i<k;++i){for(int j = i + 1;j<=k;++j){printf("%d %d\n",i,j);num--;if(!num) break;printf("%d %d\n",j,i);num--;if(!num) break;}if(!num) break;}}//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

F1

做法 简单的dfs判断即可 因为可能你没有2 没有1也要算情况 所以要四个情况集合一起判

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <cmath>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
#include <random>
#include <ctime>
using namespace std;#define dbg(x) cout<<#x<<" = "<< (x)<< endl
#define dbg2(x1,x2) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x1,x2,x3) cout<<#x1<<" = "<<x1<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))typedef pair<int,int> pll;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll _INF = 0xc0c0c0c0c0c0c0c0;ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll ksm(ll a,ll b,ll mod){int ans=1;while(b){if(b&1) ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return ans;}
ll inv2(ll a,ll mod){return ksm(a,mod-2,mod);}
//inv[1]=1;
//for(int i=2; i<M; ++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
//for(int i=0; i<LIM; ++i) coef[i]=1ll*(P[i]-1)*inv[P[i]]%mod;
const int MAX_N = 300025;
vector<int > G[300025];
int col[MAX_N],cnt[3],sum[MAX_N][3],ans;
void dfs(int rt,int fa)
{sum[rt][col[rt]]++;int sz = G[rt].size();for(int i = 0;i<sz;++i){int to = G[rt][i];if(to==fa) continue;dfs(to,rt);if((sum[to][1]==0||sum[to][2]==0)&&(cnt[1]-sum[to][1]==0||cnt[2]-sum[to][2]==0)) ans++;sum[rt][0] += sum[to][0];sum[rt][1] += sum[to][1];sum[rt][2] += sum[to][2];}return ;
}
int main()
{//ios::sync_with_stdio(false);//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);int n;scanf("%d",&n);for(int i = 1;i<=n;++i) scanf("%d",&col[i]),cnt[col[i]]++;for(int i = 1;i<n;++i){int a,b;scanf("%d%d",&a,&b);G[a].push_back(b);G[b].push_back(a);}dfs(1,-1);printf("%d\n",ans);//fclose(stdin);//fclose(stdout);//cout << "time: " << (long long)clock() * 1000 / CLOCKS_PER_SEC << " ms" << endl;return 0;
}

【Codeforces Round #540 (Div. 3)】 A B C D1 D2 E F1相关推荐

  1. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解

    [Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...

  2. C1. Make Nonzero Sum (easy version)【Codeforces Round #829 (Div. 2】

    Codeforces Round #829 (Div. 2)中C1题目 Codeforces比赛记录 文章目录 题目链接: 一.C1. Make Nonzero Sum (easy version) ...

  3. 【Codeforces Round #548(Div. 2)】Edgy Trees(数学+bfs求连通块)

    题目链接 C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. 【Codeforces Round #525(Div. 2)】Ehab and another another xor problem(思维+异或)

    题目链接 D. Ehab and another another xor problem time limit per test 1 second memory limit per test 256 ...

  5. 【Codeforces Round#618 (Div. 2)】C. Anu Has a Function 题解

    题目链接:C. Anu Has a Function 题目 Anu has created her own function f: f(x,y)=(x|y)−y where | denotes the ...

  6. 【Codeforces Round #784 (Div. 4)】【AK题解】

    2022年4月30日19:43:21 文章目录 2022年4月30日19:43:21 A. Division? 题目描述 测试样例 题解 B. Triple 题目描述 测试样例 题解 C. Odd/E ...

  7. 【Codeforces Round #560 (Div. 3)】 A B C D E F1 F2

    cf560 A 题意 给你一个 2e5的01串 和 x y要求这个串%10^x = 10 ^ y 那么按照题意模拟 都变成0 那位变成1 即可 /*if you can't see the repay ...

  8. 【Codeforces Round #547 (Div. 3)】 A B C D E F1 F2 G

    A 题意 问你从一个n 到 m 经过多少次数 *2 *3能到m 所以特判一下m能否整除n  然后除了以后根据奇偶去判断求次数 #include <cstdio> #include < ...

  9. 【Codeforces Round #544 (Div. 3)】 A B C D E F1 F2

    这场A是最失误的地方 能int读入 却用char数组读入 感觉失策了 A 题意 给你开始时间和结尾时间 问你这两个时间的中间时间是什么 做法 做法显然 骚操作在此 #include <cstdi ...

最新文章

  1. java 异常 理解_java中的异常理解
  2. 完成端口模式下的高性能网络服务器【转】
  3. MFC中在picture control中显示图像的方法
  4. (Eclipse打包问题)Export aborted because fatal lint er
  5. c语言数组转置原理,为什么这个数组转置不对?
  6. php函数 chm,php函数手册chm最新
  7. MySQL事务基础,看这篇就够了!
  8. 26复杂类型比较,使用Compare .NET objects组件
  9. 问题解决之——未知usb设备设备描述符请求失败(Jlink驱动)
  10. 在Ubuntu 16.04 64bit上安装谷歌地球Google Earth免费版
  11. 基于c51的节日彩灯控制器的设计
  12. Django serializer 方法补充之:depth 与字段生成超链接
  13. 设计模式之 Factory Mode 工厂模式:Swift 实现
  14. 【每日一网】Day4:OverFeat流程简单理解
  15. 新型脑刺激疗法治疗重度抑郁症
  16. 探路者团队-贪吃蛇(测评人:刘耀泽)
  17. oracle安装 redo log,Oracle Redo Log 及Logmnr配置使用
  18. Spring Cloud Alibaba Sentinel - - > 容错机制
  19. 河南省计算机专业三本排名2015,河南三本大学排名【最新排行榜】
  20. zookeeper的客户端工具zoolnspector 工具的安装

热门文章

  1. 【Windows程序设计】模拟时钟
  2. luoguP3964 [TJOI2013]松鼠聚会
  3. html怎么在alert中加标题,js重写alert事件(避免alert弹框标题出现网址)
  4. 工作流基本特性及说明
  5. C语言:输入一个长度未定的整形数组[C_001]
  6. PyCharm2020介绍
  7. MyBatis联合主键结果集与SQL查询结果不一致的问题
  8. Fragment VS Custom View Container
  9. STM32F1的IIC硬件调试之EV5,EV6,EV7,EV8,EV9
  10. 【报错】date: invalid date ‘2 days ago+%Y%m%d‘