UESTC 759 倒推数组
来源:互联网 发布:linux ping 包大小 编辑:程序博客网 时间:2024/05/21 19:46
倒推数组
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
我们给出一个奇怪的公式:
其中
int f = 0; for (int i = 1; i <= n; ++i) for ( int j = 1; j <= n ; ++j) f = f + min (a[i], a[j]);
注意到这里
a 中所有元素都是正整数。a 中所有元素互不相同。
给定
如果满足条件的数组不存在,输出
Input
第一行是一个数
每组测试数据包括一行,两个数
Output
对于每一组测试数据,输出一行。
如果有解,输出
行末不允许有多余的空格,最后一个元素(如果有解)后面没有空格。
Sample input and output
22 102 2
1 7-1
Hint
对于两个长度均为
例如,长度为
My Solution
为了字典序最小,前面保持1、2、3、4、5、6……n-1,只相应的变化a[n-1]的值
#include <iostream>#include <cstdio>using namespace std;const int maxn=128;int ans[maxn],fmin=0;//fmin记得要初始化的void firstans(const int &n){ for(int i=1;i<=n;i++){ ans[i]=i; }}//F=(n+n-1)a1+(n-1+n-2)a2······2a(n-1)+an; 故要字典序最小,只要改变最后一项就好了,而且刚好最后一项系数为1,//这里就这么搞算数了void sum(const int &n){ for (int i = 1; i <= n; ++i){ for ( int j = 1; j <= n ; ++j) fmin = fmin + min (ans[i], ans[j]); }}int main(){ int n,F,T,err=-1; scanf("%d",&T); while(T--){ fmin=0; //记得重置 scanf("%d%d",&n,&F); firstans(n); sum(n); if(F<fmin) {printf("%d\n",err);continue;} else { ans[n]=n+F-fmin; for(int i=1;i<n;i++) printf("%d ",ans[i]); printf("%d\n",ans[n]);//最后一个后面不能有空格而是直接换行 } } return 0;}
谢谢
0 0
- UESTC 759 倒推数组
- UESTC 1900 倒推数组 (找规律)
- leetcode 62 递归的倒推和数组的正推
- UESTC OJ1217(树状数组)
- 日期倒推
- 倒推法
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- UESTC
- ubuntu 14.04.03 安装android环境
- Android 学习路线
- Js--addClass封装
- Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
- 单例模式
- UESTC 759 倒推数组
- iOS----如何添加背景图片 并使图片可以一直在背景中显示
- javascript实现“ 设为首页” 和“ 收藏本站”
- android json的封装
- CodeForces 500 B. New Year Permutation(贪心+Floyd)
- Js--浮动那点事儿
- 一些值得学习的规范
- Android 系统联系人全特效实现(下),字母表快速滚动
- Js--递增