500pt:
分析:每b根就能再生成一根,本着不要浪费的原则就行
代码:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int a,b; int main() { while(cin>>a>>b) { int ret = a; int temp = a; while(temp>=b) { int newa = temp/b; ret+=newa; temp = temp%b+newa; } cout< 1000pt: 链接:http://codeforces.com/problemset/problem/379/B 分析:对于每一位,只要大于0,就put a coin,然后右移再左移,为了省事,右移过程中如果右边也大于0,也进行put a coin 代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=310; int arr[N]; int n; int main() { while(cin>>n) { for(int i=1;i<=n;i++) cin>>arr[i]; string s = ; for(int i=1;i<=n-1;i++) { while(arr[i]>0) { s+='P'; arr[i]--; if(arr[i]==0) break; s+='R'; if(arr[i+1]>0) { arr[i+1]--; s+='P'; } s+='L'; } s+='R'; } while(arr[n]>0) { s+='P'; arr[n]--; if(arr[n]==0) break; s+='L'; s+='R'; } cout< 1500pt: 分析:先按ai排序,再给每个赋值,取前一个+1和自身的较大 值就行,最后按序输出 代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=500000; struct node { node(){index = 0;rating= 0;} node(int _index,int _rating){index = _index;rating = _rating;} int index; int rating; }nodes[N]; int n; bool cmp1(node a,node b) { return a.rating >n) { for(int i=0;i >nodes[i].rating; nodes[i].index = i; } sort(nodes,nodes+n,cmp1); for(int i=1;i 先做C题果然是比较明智的选择,这次终于变紫色了。。。
链接:http://codeforces.com/problemset/problem/379/B
分析:对于每一位,只要大于0,就put a coin,然后右移再左移,为了省事,右移过程中如果右边也大于0,也进行put a coin
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=310; int arr[N]; int n; int main() { while(cin>>n) { for(int i=1;i<=n;i++) cin>>arr[i]; string s = ; for(int i=1;i<=n-1;i++) { while(arr[i]>0) { s+='P'; arr[i]--; if(arr[i]==0) break; s+='R'; if(arr[i+1]>0) { arr[i+1]--; s+='P'; } s+='L'; } s+='R'; } while(arr[n]>0) { s+='P'; arr[n]--; if(arr[n]==0) break; s+='L'; s+='R'; } cout< 1500pt: 分析:先按ai排序,再给每个赋值,取前一个+1和自身的较大 值就行,最后按序输出 代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=500000; struct node { node(){index = 0;rating= 0;} node(int _index,int _rating){index = _index;rating = _rating;} int index; int rating; }nodes[N]; int n; bool cmp1(node a,node b) { return a.rating >n) { for(int i=0;i >nodes[i].rating; nodes[i].index = i; } sort(nodes,nodes+n,cmp1); for(int i=1;i 先做C题果然是比较明智的选择,这次终于变紫色了。。。
分析:先按ai排序,再给每个赋值,取前一个+1和自身的较大 值就行,最后按序输出
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=500000; struct node { node(){index = 0;rating= 0;} node(int _index,int _rating){index = _index;rating = _rating;} int index; int rating; }nodes[N]; int n; bool cmp1(node a,node b) { return a.rating >n) { for(int i=0;i >nodes[i].rating; nodes[i].index = i; } sort(nodes,nodes+n,cmp1); for(int i=1;i 先做C题果然是比较明智的选择,这次终于变紫色了。。。