﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ZMars-随笔分类-计算几何</title><link>http://www.cppblog.com/zzfmars/category/14377.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 31 Jul 2010 13:46:04 GMT</lastBuildDate><pubDate>Sat, 31 Jul 2010 13:46:04 GMT</pubDate><ttl>60</ttl><item><title>zoj1615计算几何 求不同点数</title><link>http://www.cppblog.com/zzfmars/archive/2010/07/31/121811.html</link><dc:creator>ZMars</dc:creator><author>ZMars</author><pubDate>Sat, 31 Jul 2010 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/07/31/121811.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/121811.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/07/31/121811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/121811.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/121811.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">这道题没有AC，提交的人也比较少，只有一个人AC，不知道是怎么AC的，题意我理解为求不相同的点的个，代码是正确的，但是提交却是WA，不知道原因。<br>写这个程序时，犯了一个常识性错误。想写n+=2；却写成n=+2;结果一开始就进入死循环，运行后没反应，还调了好一会才发现错误，写程序需要认真。<br><br>/*</span><span style="color: #008000;">zoj1615分析求不同点的个数，实现方法<br>1）取一个点和剩下尚未比较过的点比较，如果为相同点，将这个相同的点去掉，更新结果，直到比较完为止，时间复杂度为O（n^2）;<br>2）先对所有点进行排序，排序规则是X有先，y次之的升序排列，然后从前往后检测，如x,y均相等，则结果减1，这种方法主要是排序上。O（nlogn+n）;<br></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008000;">//</span><span style="color: #008000;">下面根据方法一写代码</span><span style="color: #008000;"><br>//Source code<br></span><span style="color: #000000;">#include</span><span style="color: #000000;">"</span><span style="color: #000000;">iostream</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include</span><span style="color: #000000;">"</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;result;&nbsp;<br><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;point{<br>&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br>&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y;<br>&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flag;<br>}p[</span><span style="color: #000000;">16</span><span style="color: #000000;">];<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t,n;<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">t;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">*</span><span style="color: #000000;">n;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;k</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">2</span><span style="color: #000000;">*</span><span style="color: #000000;">n;k</span><span style="color: #000000;">=</span><span style="color: #000000;">k</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[k].x&nbsp;,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[k].y&nbsp;,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[k</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].x&nbsp;,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p[k</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].y&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[k].flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[k</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">].flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;for(int&nbsp;k=0;k&lt;2*n;k=k+2)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;p[k].x&nbsp;&lt;&lt;"&nbsp;"&lt;&lt;p[k].y&nbsp;&lt;&lt;"&nbsp;"&lt;&lt;p[k].flag&nbsp;&lt;&lt;"&nbsp;"&lt;&lt;p[k+1].x&nbsp;&lt;&lt;"&nbsp;"&lt;&lt;p[k+1].y&lt;&lt;"&nbsp;"&nbsp;&lt;&lt;p[k+1].flag&nbsp;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br><br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">2</span><span style="color: #000000;">*</span><span style="color: #000000;">n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(p[j].flag)</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k</span><span style="color: #000000;">=</span><span style="color: #000000;">j</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">;k</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">2</span><span style="color: #000000;">*</span><span style="color: #000000;">n;k</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">p[k].flag</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">p[j].x&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">p[k].x&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">p[j].y&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">p[k].y&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{p[k].flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;result</span><span style="color: #000000;">--</span><span style="color: #000000;">;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,result);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br></span></div>
<br>  <img src ="http://www.cppblog.com/zzfmars/aggbug/121811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">ZMars</a> 2010-07-31 21:09 <a href="http://www.cppblog.com/zzfmars/archive/2010/07/31/121811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>