Weekly Training Farm 23
来源:互联网 发布:腾讯软件中心官方网站 编辑:程序博客网 时间:2024/06/05 06:07
比赛链接:Weekly Training Farm 23
A:优先队列乱搞:
#include<bits\stdc++.h>using namespace std;typedef long long ll;struct cmp{bool operator () (const ll a,const ll b){return a>b;}};int main(){int n;while(cin>>n){priority_queue<ll,vector<ll>,cmp> q;ll sum=0,t;int ans=0;for(int i=0;i<n;i++){cin>>t;sum+=t;if(t<0)q.push(t);if(sum<0){ll tmp=q.top();q.pop();ans++;sum-=tmp;}}cout<<ans<<endl;}return 0;}
B:二分检验
#include<bits/stdc++.h>using namespace std;typedef long long ll;double a[1007];int n;double x;bool check(double t){double res=0;for(int i=0;i<n;i++){if(t<a[i])res+=a[i]-t;}return res>=x;}int main(){while(cin>>n){double l=0,r=0;for(int i=0;i<n;i++)cin>>a[i],r=max(r,a[i]);cin>>x;int cnt=5;while(r-l>=1e-13){double mid=(r+l)/2;if(check(mid))l=mid;else r=mid;}printf("%.15lf\n",r);}return 0;}
C:简单dp,dp[i][j]表示第i位,数字填j时有多少种方案。状态转移非常容易。。
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+7;const ll mod=1e9+7;ll dp[maxn][10];int main(){ios::sync_with_stdio(false);string s;while(cin>>s){memset(dp,0,sizeof(dp));if(s[0]=='?')for(int i=0;i<=9;i++)dp[0][i]=1;else dp[0][s[0]-'0']=1;for(int i=1;i<s.length();i++)for(int j=(s[i]=='?'?0:s[i]-'0');j<=(s[i]=='?'?9:s[i]-'0');j++)for(int k=0;k<=j;k++)dp[i][j]=(dp[i-1][k]+dp[i][j])%mod;ll ans=0; for(int i=0;i<=9;i++)ans=(ans+dp[s.length()-1][i])%mod; cout<<ans<<endl;}return 0;}
E:dfs搜一下,若某棵子树是三个结点,那么这三个结点显然是一组,否则dfs返回这课子树的结点数,当一棵子树的结点数大于3时,显然不能合并。
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=3e5+7;vector<int> adj[maxn];bool vis[maxn];int n;bool flag;int dfs(int u){vis[u]=true;int res=1;for(int i=0;i<adj[u].size();i++){int next=adj[u][i];//if(cnt-->0)printf("%d %d\n",u,next);if(vis[next])continue;res+=dfs(next);if(!flag)return flag;}if(res>3){return flag=false;}return res%3;}int main(){ios::sync_with_stdio(false);while(cin>>n){n*=3;for(int i=1;i<=n;i++)adj[i].clear();int u,v;flag=true;for(int i=1;i<n;i++){cin>>u>>v;adj[u].push_back(v);adj[v].push_back(u);}memset(vis,0,sizeof(vis));dfs(1);if(flag)cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;}
0 0
- Weekly Training Farm 23
- Weekly Training Farm 22 - B - ACM-ICPC Contest (背包)
- 2016-2017 Training Weekly
- Mango Weekly Training Round #3 解题报告
- Mango Weekly Training Round #6 解题报告
- CQUPT WEEKLY TRAINING (1)解题报告
- CQUPT WEEKLY TRAINING (3)解题报告
- ACM学习感悟——weekly training
- Chongqing University Weekly Training (10.18) 小结
- CQUPT WEEKLY TRAINING (2)DIV2 解题报告
- CQUPT WEEKLY TRAINING (4)DIV2 解题报告
- CQUPT WEEKLY TRAINING (5)DIV2 解题报告
- CQUPT WEEKLY TRAINING (6)DIV2 解题报告
- CQUPT WEEKLY TRAINING (7)DIV2 解题报告
- CQU Weekly Training Contest 5 - Graph Theory & Dp
- SDNU ACM-ICPC 2016-2017 Training Weekly Contest 1 【--完结--】
- SDNU ACM-ICPC 2016-2017 Training Weekly Contest 2 【--完结--】
- 2015 CQUPT WEEKLY TRAINING (1)题解和专题内容推荐
- JAVA中ArrayList 和 LinkedList的区别
- AnimatedVectorDrawable的简单使用
- FreeRTOS的源代码个人分析(基于KEIL下STM32F103的Demo) 二
- 2017补全计划-JS的工厂模式-学习笔记
- IDEA Spring boot工程的搭建
- Weekly Training Farm 23
- struts2学习笔记摘要一
- JavaSE_6th_继承
- nodejs知识点整理
- 超键 主键 候选键 可选键
- activiti工作流常用api
- getopt()函数详解
- C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)
- R6034错误,C Runtime Error