codeforce R 491 (div2)
阿新 • • 發佈:2018-06-24
asn cep 二分 exception else if 發現 tar stream ans
本來打完就想寫的,,奈何舍友要睡了,我開個臺燈感覺怪怪的,就沒寫。
A題竟然一開始wa了。。。後來發現對於c和a還有c和b的關系沒有判斷,,丟掉了很多罰時。
B題我的方法是 計算 sum,然後 分別統計 2、3、4的個數,一個一個試,具體看代碼(前面快速io有點長見諒
package R491; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.StringTokenizer; public class Main2 { static BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tok; static boolean hasNext() { while(tok==null||!tok.hasMoreTokens()) try{ tok=new StringTokenizer(in.readLine()); } catch(Exception e){ return false; } return true; } static String next() { hasNext(); return tok.nextToken(); } static long nextLong() { return Long.parseLong(next()); } static int nextInt() { return Integer.parseInt(next()); } static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) { int n = nextInt(); int a[] = new int[n]; int b[] = new int[8]; int sum = 0; for(int i=0;i<n;i++){ a[i] = nextInt(); b[a[i]]++; sum+=a[i]; } int num = 0; while (sum<4.5*n){ if (b[2]>0){ sum+=3; b[2]--; num++; }else if (b[3]>0){ sum+=2; b[3]--; num++; }else if (b[4]>0){ sum+=1; b[4]--; num++; } } out.print(num); out.flush(); } }
C 一開始還以為可能有點意思,然後二分板子就出來了,沒啥可說的,中間竟然wa了一發,,很玄學, ,判斷時 如果 把 num1>=num2 寫成 num1>=(double)n/2 就會wa。。。
package R491; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.StringTokenizer; public class Main3 { static BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tok; static boolean hasNext() { while(tok==null||!tok.hasMoreTokens()) try{ tok=new StringTokenizer(in.readLine()); } catch(Exception e){ return false; } return true; } static String next() { hasNext(); return tok.nextToken(); } static long nextLong() { return Long.parseLong(next()); } static int nextInt() { return Integer.parseInt(next()); } static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out)); static long n; public static void main(String[] args) { n = nextLong(); long l = 1; long r = n; while (l<=r){ long mid=(l+r)/2; if (caneat(mid)){ r=mid-1; }else { l=mid+1; } } out.print(l); out.flush(); } public static boolean caneat(long k){ long num=0; long num2 = 0; long temp = n; while (temp>0){ if (temp<k){ num+=temp; break; } num+=k; temp-=k; num2+=(temp/10); temp-=temp/10; } if (num>=num2){ return true; }else { return false; } } }
D題就很和藹可親了,竟然只有兩行,直接暴力,我的方法是 umm懶得說看代碼吧
package R491; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.StringTokenizer; public class Main4 { static BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tok; static boolean hasNext() { while(tok==null||!tok.hasMoreTokens()) try{ tok=new StringTokenizer(in.readLine()); } catch(Exception e){ return false; } return true; } static String next() { hasNext(); return tok.nextToken(); } static long nextLong() { return Long.parseLong(next()); } static int nextInt() { return Integer.parseInt(next()); } static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) { String s[] = new String[2]; for(int i=0;i<2;i++){ s[i] = next(); } if (s[0].length()==1){ out.print(0); out.flush(); return; } char ch1[] = s[0].toCharArray(); char ch2[] = s[1].toCharArray(); int ans = 0; for(int i=0;i<ch1.length;i++){ if (ch1[i]==‘0‘&&ch2[i]==‘0‘){ if (i==0){ if (ch1[i+1]==‘0‘){ ans++; ch1[i+1]=‘X‘; ch1[i]=ch2[i]=‘X‘; }else if (ch2[i+1]==‘0‘){ ans++; ch2[i+1]=‘X‘; ch1[i]=ch2[i]=‘X‘; } }else if (i<ch1.length-1){ if (ch1[i-1]==‘0‘){ ans++; ch1[i-1]=‘X‘; ch1[i]=ch2[i]=‘X‘; }else if (ch2[i-1]==‘0‘){ ans++; ch2[i-1]=‘X‘; ch1[i]=ch2[i]=‘X‘; }else if (ch1[i+1]==‘0‘){ ans++; ch1[i+1]=‘X‘; ch1[i]=ch2[i]=‘X‘; }else if (ch2[i+1]==‘0‘){ ans++; ch2[i+1]=‘X‘; ch1[i]=ch2[i]=‘X‘; } }else if (i== ch1.length-1) { if (ch1[i - 1] == ‘0‘) { ans++; ch1[i - 1] = ‘X‘; ch1[i] = ch2[i] = ‘X‘; } else if (ch2[i - 1] == ‘0‘) { ans++; ch2[i - 1] = ‘X‘; ch1[i] = ch2[i] = ‘X‘; } } } } out.print(ans); out.flush(); } }
E 啊哈哈哈哈,尷尬而不失禮貌的微笑,因為我太弱了又很垃圾還是一個數學白癡所以我沒寫出來。。。
F學長都沒寫。。。學長51分鐘過掉ABCDE好像就開始掛機了,發現F有點難就睡覺去了,然後D題掉了,囍。
近期:補一下排列組合,抓緊學個tarjan把前天的E題補掉。(對不起是我太弱了不會tarjan
rating:1548
忽然發現今晚還有一場,我可能要1600+了欸嘿嘿嘿。
codeforce R 491 (div2)