【#248_DIV2】-A B C
来源:互联网 发布:数据分析师能力 编辑:程序博客网 时间:2024/05/22 10:35
题目链接:http://codeforces.com/contest/433
解题报告:
A - Kitahara Haruki's Gift
水题,能选200先选200,不行再选100,正好能到一半就赢了。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int arr[120];int main(){ int n,i,sum=0,no1=0,no2=0; cin>>n; for(i=0;i<n;i++) { cin>>arr[i]; sum += arr[i]; if(arr[i] == 100) no1++; else no2++; } int aim=sum/2; bool ans=false; int temp=0; sort(arr,arr+n); while(1) { if(temp == aim) {ans=true;break;} if(temp < aim && temp+200 <= aim && no2) { temp += 200; no2--; } else if(temp < aim && temp+100 <= aim && no1) { temp += 100; no1--; } else break; } if(ans) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0;}
B - Kuriyama Mirai's Stones
水题,,比第一题还水,区间和预处理不解释
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>typedef long long ll;using namespace std;const int maxn = 1e5+50;ll arr[maxn],sum[maxn],res[maxn];int main(){ //freopen("input.txt","r",stdin); memset(arr,0,sizeof(arr)); memset(sum,0,sizeof(sum)); memset(res,0,sizeof(res)); int n,i; cin>>n; for(i=1;i<=n;i++) cin>>arr[i]; for(i=1;i<=n;i++) sum[i]=sum[i-1]+arr[i]; sort(arr+1,arr+n+1); for(i=1;i<=n;i++) res[i]=res[i-1]+arr[i]; int noq,t,l,r; cin>>noq; while(noq--) { cin>>t>>l>>r; if(t==1) cout<<(sum[r] - sum[l-1])<<endl; else if(t==2) cout<<(res[r] - res[l-1])<<endl; } return 0;}
C - Ryouko's Memory Note
这题没做出来,看了CLJ的代码。才一下子想起来之前看过的一句话,这题的关键就一句话:
数轴上到各点距离之和最小的点是它们的中位数点!
然后枚举那正确的复杂度应该是 o( n*near[ i ] ) 那么大(写法不标准别在意),别脑残什么的写复杂了,然后即可AC
对了,不得不说,CLJ用 vector 之类的东西确实比我这种渣渣熟练多了,我很少用的
///数轴上到各个点距离之和最小的点是它们的中位数点!!#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <vector>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5+50;ll arr[maxn];vector<int> near[maxn];int main(){ freopen("input.txt","r",stdin); int n,m,i,j; cin>>n>>m; ll ans=0; for(i=0;i<m;i++) { cin>>arr[i]; if(i>=1 && arr[i-1]!=arr[i]) { near[arr[i]].push_back(arr[i-1]); near[arr[i-1]].push_back(arr[i]); ans += abs(arr[i-1]-arr[i]); } } ll sum=ans; for(i=1;i<=n;i++) { if(near[i].empty()) continue; vector<int> temp = near[i]; sort(temp.begin(),temp.end()); int mid = temp[temp.size() / 2]; ll tans=0,preans=0; for(j=0;j<temp.size();j++) { preans += abs(temp[j] - i); tans += abs(temp[j] - mid); } ans = min(ans,sum-(preans-tans)); } cout<<ans<<endl; return 0;}
0 0
- 【#248_DIV2】-A B C
- 【#249_DIV2】-A B C
- 【#247_DIV2】-A B C
- 【#254_DIV2】-A B C
- 【#253_DIV2】-A B D
- (a^b)%c和(a/b)%c
- SQL a>b?a:b, b>c?b:c
- A^B mod C
- A^B%C
- A^B mod C
- c = ( (++a) + (b++) );
- A+B+C
- a^b%c
- a+++b+c+++d++
- A^B mod C
- A=B+C
- A+B和C
- 计算(a/b)%c
- poj3417 Network 离线LCA + 树形dp
- 适配器模式,Adapter
- canvas.translate(x,y)一点新的认识
- Android笔记之 TTS中文发音
- LSM分别苹果和桔子
- 【#248_DIV2】-A B C
- 作为IT宅,OpenEIM 习惯了 Windows 的用户
- 约瑟夫环问题的数学分析解
- cocos2d-x实现Android版本的sdk的思路见解-----------------cocos2d-x3.0正式版本(7.4)
- Codeforces 29D Ant on the Tree 树的遍历 dfs序
- 关于sqlite3的C接口中的sql语句的查找关键字需要带上引号的问题
- Direct3D 12 Preview
- 浅谈PopupWindow
- 权限控制模块的细致化实现