var n = readInt(); var arr=new Array(n); for(i=0;i<n;i++){ arr[i]=readInt(); } var compare = function(x,y){ if(x<y){ return -1; }else if(x>y){ return 1; }else{ return 0; } }; arr.sort(compare); if(arr.length%2==0){ console.log((arr[arr.length/2-1]+arr[arr.length/2])/2); }else{ console.log(arr[(arr.length-1)/2]); }
第一题,完全部图,c++ ac答案
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int findunlink(vector<int>& table,int n)
{
for(int i=0;i<table.size();i++)
if(table[i]!=i+1)
{
return i+1;
}
return table.size()+1;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
vector<int> s(m),t(m);
vector<set<int> > groups;
for(int i=0;i<m;i++)
cin>>s[i]>>t[i];
bool res = true;
for(int i=1;i<=n;i++)
{
vector<int> link;
int unlink = 0;
for(int j=0;j<m;j++)
{
if(t[j]==i)
link.push_back(s[j]);
if(s[j]>i)
break;
}
if(link.size()==i-1)//all n-1 is link,new set
{
set<int> a;
a.insert(i);
groups.push_back(a);
}
else if(link.size()<i-1)
{
unlink = findunlink(link,i);
set<int>* group;
for(int u=0;u<groups.size();u++)
{
if(groups[u].count(unlink)>0)
{
group=&groups[u];
break;
}
}
for(int j=1;j<i;j++)
{
if(find(link.begin(),link.end(),j)==link.end()&&(*group).count(j)==0)
{
cout<<"No"<<endl;
i=n+1;
res=false;
break;
}
else if(find(link.begin(),link.end(),j)!=link.end()&&(*group).count(j)>0)
{
cout<<"No"<<endl;
i=n+1;
res=false;
break;
}
}
if(res)
{
(*group).insert(i);
}
}
}
if(res)
cout<<"Yes"<<endl;
}
return 0;
}
c++第一题ac
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int findunlink(vector<int>& table,int n)
{
for(int i=0;i<table.size();i++)
if(table[i]!=i+1)
{
return i+1;
}
return table.size()+1;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
vector<int> s(m),t(m);
vector<set<int> > groups;
for(int i=0;i<m;i++)
cin>>s[i]>>t[i];
bool res = true;
for(int i=1;i<=n;i++)
{
vector<int> link;
int unlink = 0;
for(int j=0;j<m;j++)
{
if(t[j]==i)
link.push_back(s[j]);
if(s[j]>i)
break;
}
if(link.size()==i-1)//all n-1 is link,new set
{
set<int> a;
a.insert(i);
groups.push_back(a);
}
else if(link.size()<i-1)
{
unlink = findunlink(link,i);
set<int>* group;
for(int u=0;u<groups.size();u++)
{
if(groups[u].count(unlink)>0)
{
group=&groups[u];
break;
}
}
for(int j=1;j<i;j++)
{
if(find(link.begin(),link.end(),j)==link.end()&&(*group).count(j)==0)
{
cout<<"No"<<endl;
i=n+1;
res=false;
break;
}
else if(find(link.begin(),link.end(),j)!=link.end()&&(*group).count(j)>0)
{
cout<<"No"<<endl;
i=n+1;
res=false;
break;
}
}
if(res)
{
(*group).insert(i);
}
}
}
if(res)
cout<<"Yes"<<endl;
}
return 0;
}
java.util.*; Main { main(String[] args) { Scanner sc = Scanner(System.); (sc.hasNext()) { n = sc.nextInt(); [] a = [n]; [] b = [n]; [] c = [n]; [] d = [n]; num = ; (i=;i<n;i++){ a[i] = sc.nextInt(); b[i] = sc.nextInt(); c[i] = sc.nextInt(); } (i=;i<n;i++){ (j=i+;j<n;j++){ (a[j]>a[i]){ (b[j]>b[i]){ (c[j]>c[i]){ d[i] = ; } } }{ (a[j]<a[i]){ (b[j]<b[i]){ (c[j]<c[i]){ d[j] = ; } } } } } } (i=;i<n;i++){ (d[i]==){ num++; } } System..println(num); } } }
100%通过 顶部输入获取略过。就是个排序找中位数。对了,不能使用快排,因为这个傻瓜编译器认为快排比原生排序sort耗时更久(原生sort是冒泡排序,我就呵呵)。
var arr = ['3', '2', '9', '10', '11']; var newArr = arr.map(function(i){ return parseInt(i); }); var tempArr = newArr.sort(function(a,b) { return a - b; }); function findMid(arr) { var len = arr.length; return len % 2 === 0 ? (arr[len/2-1]+arr[len/2])/2 : arr[(len-1)/2]; } var needNum = findMid(tempArr); console.log(needNum);
第一题;通过率100%
function sortNum(a,b){
return a-b;
}
numSize = read.line();
numArr = read.line();
numArr = str.split(' ');
numArrNew = numArr.sort();
for(var i =0;i<numArr.length;i++){
numArrNew[i] = parseInt(numArr[i]);
}
numArrNew.sort(sortNum);
if(numArrNew.length%2 == 0){
zhongweishuS = parseInt(numArrNew.length/2);
zhongweishuX = zhongweishuS - 1;
zhongweushu = ( parseInt(numArrNew[zhongweishuS]) + parseInt(numArrNew[zhongweishuX]) )/2;
print(zhongweushu);
}else{
zhongweishu = Math.floor(parseFloat(numArrNew.length/2));
print(numArrNew[zhongweishu]);
}
第二题个人只做对了 27%,最后还有个判断那点没完善,正准备补充就提交了,只差一分钟,唉。
个人思路,找出重复次数最多的两项,不是同一项并且出现次数都大于1,都减1相乘得到最大利益。
话不多说,上代码,有个很简单的判断没写完,表示撸炸了不想写了,该去吃鸡压压惊,我写个注释,你们自己完善吧。
var n = 4; var arr = [1, 2, 3, 4]; // 寻找重复数字和重复次数 function saveAgainCount(arr) { var newArr = unique(arr); var countArr = []; newArr.forEach(function(item){ var tempArr = arr.filter(function(num){ return item === num; }); var count = tempArr.length; countArr.push({item, count}); }); return countArr; } // 数组去重,没办法,编译器不能使用ES6的set结构去重,只能这么去重了 function unique(arr) { var res = []; arr.forEach(function(e, i, arr) { if (arr.indexOf(e) === i) { res.push(e); } }); return res; } // 根据对象数组的重复次数排序 function compare(property) { return function (obj1, obj2) { var value1 = obj1[property]; var value2 = obj2[property]; return value1 - value2; } } var finalArr = saveAgainCount(arr); finalArr.sort(compare("count")); /*请完成下面这个函数,实现题目要求的功能 当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ ******************************开始写代码******************************/ // 取最大重复次数俩值 function solve(arr) { var len = arr.length; var fir = arr[len-1]; var sec = arr[len-2]; /* 这里的判断还没完善,如果总城市不大于等于4,最大利益为0;如果出现的次数都不大于1,则最大利益为1。 */ // 如果俩数组对象相同,证明没办法获取最大利润——修的路有交叉点 if (n < 4) { return 0; } if (n) { // 如果出现的次数都不大于1,则最大利益为1 // ... } // 最大重复次数-1再相乘 return (fir.count-1) * (sec.count-1); } /******************************结束写代码******************************/ var res; res = solve(finalArr); console.log(res);
第一题:100% AC, 第二题放弃。
java.util.*Main { Node{ ArrayList<Node> (value){ .= value= ArrayList<>()= } } (Scanner in){ n = in.nextInt()m = in.nextInt()HashMap<IntegerNode> map = HashMap<>()(i = i < ni++){ map.put(i+Node(i+))} (i = i < mi++){ f = in.nextInt()s = in.nextInt()Node nf = map.get(f)Node ns = map.get(s)nf..add(ns)ns..add(nf)} Node n1 = map.get()map.remove()List<Node> xl = n1.List<Node> nxl = ArrayList<>()(Map.Entry<IntegerNode> entry : map.entrySet()) { (!xl.contains(entry.getValue())){ nxl.add(entry.getValue())} } pan = (Node node : nxl){ (Node node1: xl){ (!node..contains(node1)){ pan = } } } (pan){ System..println()}{ System..println()} } (String[] args){ Scanner in = Scanner(System.)n = in.nextInt()(i = i < ni++){ (in)} } }
java.util.*Main { Node{ ArrayList<Node> (value){ .= value= ArrayList<>()= } } (Scanner in){ n = in.nextInt()m = in.nextInt()HashMap<IntegerNode> map = HashMap<>()(i = i < ni++){ map.put(i+Node(i+))} (i = i < mi++){ f = in.nextInt()s = in.nextInt()Node nf = map.get(f)Node ns = map.get(s)nf..add(ns)ns..add(nf)} Node n1 = map.get()map.remove()List<Node> xl = n1.List<Node> nxl = ArrayList<>()(Map.Entry<IntegerNode> entry : map.entrySet()) { (!xl.contains(entry.getValue())){ nxl.add(entry.getValue())} } pan = (Node node : nxl){ (Node node1: xl){ (!node..contains(node1)){ pan = } } } (pan){ System..println()}{ System..println()} } (String[] args){ Scanner in = Scanner(System.)n = in.nextInt()(i = i < ni++){ (in)} } }
import java.util.*;
/*第一题 100% AC*/
public class Main {
public static class Node{
public int value;
public ArrayList<Node> nexts;
public boolean pass;
public Node(int value){
this.value = value;
nexts = new ArrayList<>();
pass = false;
}
}
public static void process(Scanner in){
int n = in.nextInt();
int m = in.nextInt();
HashMap<Integer, Node> map = new HashMap<>();
for(int i = 0; i < n; i++){
map.put(i+1, new Node(i+1));
}
for(int i = 0; i < m; i++){
int f = in.nextInt();
int s = in.nextInt();
Node nf = map.get(f);
Node ns = map.get(s);
nf.nexts.add(ns);
ns.nexts.add(nf);
}
Node n1 = map.get(1);
map.remove(1);
List<Node> xl = n1.nexts;
List<Node> nxl = new ArrayList<>();
for (Map.Entry<Integer, Node> entry : map.entrySet()) {
if(!xl.contains(entry.getValue())){
nxl.add(entry.getValue());
}
}
boolean pan = false;
for(Node node : nxl){
for(Node node1: xl){
if(!node.nexts.contains(node1)){
pan = true;
break;
}
}
}
if(pan){
System.out.println("No");
}else{
System.out.println("Yes");
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i = 0; i < n; i++){
process(in);
}
}
}
第二题是先把ABC,分别放到不同的集合中,然后判断,如果是就直接remove,一次就过了....然鹅第一题不会....
public static void main(String[] args) {
// TODO Auto-generated method stub
int lowCount=0;
Scanner s1=new Scanner(System.in);
List<Integer> a1=new ArrayList();
List<Integer> a2=new ArrayList();
List<Integer> a3=new ArrayList();
int count=Integer.parseInt(s1.nextLine());
for (int i = 0; i < count; i++) {
String io2 = s1.nextLine();
String[] str2 = io2.split("\\s+");
a1.add(Integer.parseInt(str2[0]));
a2.add(Integer.parseInt(str2[1]));
a3.add(Integer.parseInt(str2[2]));
}
for (int i = a1.size()-1 ; i >=0;i--) {
for (int j = 0; j <a1.size(); j++) {
if(a1.get(i) < a1.get(j) && a2.get(i) < a2.get(j) && a3.get(i) < a3.get(j)){
lowCount++;
a1.remove(i);
a2.remove(i);
a3.remove(i);
break;
}
}
}
System.out.println(lowCount);
}
; ; { ([] ) { scanner= (.); num = scanner.(); [][] things = [num][]; (i=;i<num;i++){ scanner1 = (.); line = scanner1.(); [] lines = line.(); (j=;j<;j++){ things[i][j] =.(lines[j]); } } res = (num,things); ..(res); } (,[][] ){ res = ; count=; bgm:(i = ; i <-; i++) { (j = i+; j <; j++) { count++; ([i][]<[j][]&&[i][]<[j][]&&[i][]<[j][]){ res++; bgm; } } } ..(+count); res; } }
// n 记录出入的数组总的个数 var n = readInt() // data 存储输入的数组 var data =[] for(var i=0; i<n; i++){ data.push(readInt()) } // 选择排序 从小到大 for(var i=0; i<n; i++) for(var j=i; j< n; j++){ if(data[i] > data[j]){ var temp = data[i] data[i] = data[j] data[j] = temp } } var sum = 0; for(var i=0; i<n; i++){ sum = sum + data[i]; } if(n == 1){ sum = data[0] } else{ if(n%2 != 0){ sum = data[Math.floor((n-1)/2)] } else{ sum = parseFloat((data[Math.floor((n-1)/2)] + data[Math.floor((n-1)/2+1)])/2); } } print(sum)